Demand Curve

The Demand Curve was first introduced by the economist Antoine Cournot in 1838. The curve graphs the relationship between the Price of a Product and the cumulative Quantity that Customers are willing to buy.

Cournot’s original Demand Curve plots Price as the independent-variable along the x-axis with dependent-variables (Quantity, Revenue, and Profit) on the y-axis. But subsequent economists have moved things around and instead treated Quantity as the independent x-axis variable.

Many economists have also simplified the Demand Curve by treating it as if it were a straight line and ignoring what happens at the curve’s extremities. But while a linear curve is often a good approximation, a true Demand Cuve is non-linear.

This Building Blocks example assumes you have already downloaded the open-source KNIME analytics platform and installed the free Market Simulation (Community Edition) plugin. If not, start by returning to Getting Started.

Competitive Story

The supplier for Sprockets enjoys a Monopoly over the Market. The many thousands of Customers interested in buying Sprockets all have a different Willingness To Pay (WTP).

The Sprockets supplier wishes to manually generate a Demand Curve by systematically testing a range of Experimental Prices. The supplier wishes to identify the Revenue Maximizing Price as well as the Profit Maximizing Price.

This workflow follows a step-by-step method to manually calculate a Demand Curve using pre-defined Experimental Prices and Flow Variables. But this is not the recommended approach. Instead, use the Profit Engine node or the Demand Curve node to automatically generate Demand Curves for one or more Products in a Market.

Setup Monopoly

The Customer Distributions node generates a Willingness To Pay (WTP) Customer Distribution. That is, the maximum Price at which each Customer would buy a Sprocket.

Define Market

Customers have a mean WTP of \$150 and Standard Deviation (SD) of \$50.

Each Sprocket costs the supplier \$50 to manufacture and sell.

WTP Distribution

Each of the 10,000 Customers has a different WTP for Sprockets.

Experimental Prices

41 Experimental Prices are generated (again using the Customer Distributions node) between \$100 and \$200. The Prices are evenly distributed, with each Experimental Price spaced \$2.50 from the next.

A loop is then set up to iterate through all the Experimental Prices. Each Experimental Price is first converted into a Flow Variable and then inserted into the Input Product Array. The Simulate Market node then calculates the Quantity sold, Revenue, and Profit at that Experimental Price. The results are kept by the Loop End node for further downstream analysis.

Experimental Prices

41 Experimental Prices are generated between \$100 and \$200.

Flow Variable

Each Experimental Price is converted into a Flow Variable.

Input Price

The Price becomes part of the Input Product Array for simulation.

Plot Demand Curve

All the results from each Experimental Price loop iteration is collected and prepared for plotting. The colors for each of the dependent-variables (Quantity, Revenue, and Profit) are defined.

Collect Results

Select the sales results for Sprockets from each loop iteration.

Plot Quantity

Quantity vs. Price results approximates a linear curve.

Revenue & Profit

Revenue maximizes at a Price of \$115. Profit maximizes at a Price of \$135.