Node Description

Demand Curve Node

The Demand Curve node takes an Input Product Array and Willingness To Pay (WTP) Matrix and calculates the Demand Curve for the set of Products selected by the user.

For each Product in the Demand Curve Product Set, the Demand Curve node will also calculate the Profit Maximizing Price. In many situations, altering a Product’s Price will result in a lot of Cannibalization – that is, customers selecting a different Product to the detriment of the Store or Brand owner who is responsible for both. Hence in addition to the Demand Curve node calculating the Profit Maximizing Price with respect to the Product itself, the Demand Curve node will also calculate the Profit Maximizing Price with respect to the Product’s same Brand, to the Product’s same Store, and to the Product’s same Location, as well as to Family, Category, and Platform.

This Community Node documentation 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.

Price vs. Sales

By default, the Demand Curve for each Product will stretch from the Product’s Cost (low-point), to the Product’s current Price (mid-point), to the Product’s Price-plus-Cost (high-point). The user may select to override this default behavior by setting a fixed percentage Gap Width. In this case the Demand Curve’s low-point and high-point will be determined by the Gap Width and the number of Sample Points.

Note that the predicted Demand Curve does not take into account competitive reaction. Demand Curve results assume that all other Products in the Market maintain their existing Price.


Product Array

The Price and Cost are required for the ‘Focus Product’ and each of the Products calculating a Demand Curve.

In this case, the Cost To Make (CTM) also defines the ‘Spacely Sprockets’ Product. These Dynamic Costs are considered by the Demand Curve node, but not when defining the range of Prices to test.

WTP Matrix

In addition to each of the Product’s WTP Customer Distributions, this ‘Input WTP Matrix’ can also contain two types of ‘Dynamic Cost’ Distributions (CTM = Cost To Make, CTS = Cost To Sell) that depend upon the Customers who Purchase the Product. These ‘Dynamic Costs’ are added to the ‘Static Cost’ from the ‘Input Product Array’ to calculate the Product’s Margin.



The set of Products for which a Demand Curve will be generated depends upon the user first selecting a ‘Focus Product’. The ‘Demand Curve Product Set’ may or may not include this Focus Product, other Products with the same Brand, Store, Location, Family, Category or Platform as the Focus Product, and Products that are top Competitive Rivals with the Focus Product. The degree of Competitive Rivalry is determined by the sensitivity the Focus Product has to a change in Price by the other Products in the Market.

The user defines the number of Price Sample Points to test in order to generate one-side of the Demand Curve. By default, the side of the Demand Curve will stretch from the Product’s Cost (low-point) to the Product’s current Price (mid-point). The other side of the Demand Curve will stretch from the Product’s current Price (mid-point) to the Product’s Price-plus-Cost (high-point). Hence the actual number of Demand Curve samples = 2n + 1.

The user may override the automatic generation of the Gap Width between the Sample Points along the Demand Curve.

Market Size

The user can specify the output Market Size used to scale the Quantity sold, Revenue, and Profitability for each Product in the Market.


Port-0 Demand Curve

The Output Demand Curve table contains the data points to plot each Product’s Demand Curve with respect to its own Profitability, to the Profitability of its same Brand, to the Profitability of its same Store, and to the Profitability of its same Location.

These results can be filtered by Product row and sales column to plot the changing Test Price against Cost, Margin, Quantity, COGS, Revenue, and Profit.

The ‘Profit Maximizing Price’ has been highlighted in the results table above.

Port-1 KPI Indicators

The Output KPI Indicators contain Price Elasticity of Demand metrics from the Demand Curve results. Price Elasticity is calculated by comparing the percentage change in Demand due to a percentage change in Price. The samples are taken one-step-above and one-step-below around the current Price. The formula for Price Elasticity is: [ (Quantity[+1] – Quantity[-1]) / Quantity[0] ] / [ (Price[+1] – Price[-1]) / Price[0] ].

Port-2 Price Sensitivity

The ‘Price Sensitivity Array’ lists the degree by which a change in Price of each Target Product will impact of each of the other Impacted Product in the Market.

Port-3 Purchased Products

The ‘Purchased Products List’ contains a comparison between the original list of Products purchased by each Virtual Customer and the Products they purchased at the Profit Maximization point. The user can use the views to hilite the Customers of interest who switched their purchase decision. These Customers who switched as a result of the Price Sensitivity change can then be further analyzed.