Node Description

Simulate Market

Market Simulation is an Artificial Intelligence (AI) tool that predicts how Customers will make Product Purchase decisions.

An agent-based model is used to run the Market Simulation. Each Virtual Customer acts as an ‘Intelligent Agent’ and makes Purchase decisions based upon their different Willingness To Pay (WTP) for each Product in the Market. All of the WTP values are found in the ‘Input WTP Matrix’ while all of the other Product details are found in the ‘Input Product Array’.

There are several ways to calculate Willingness To Pay (WTP) and include it in the Market Simulation. One way is through a Conjoint Analysis study. A second way is by calculating WTP based upon Customer Behavior, such as with an upstream ‘Clickstream Conjoint’ node. A third way is by estimating the ‘Horizontal Differentiation’ and ‘Vertical Differentiation’ of each Product Feature using a combination of upstream ‘Differentiation Horizontal’ nodes and ‘Differentiation Vertical’ nodes, along with an upstream ‘Product Generator’ node.

The Simulate Market node will predict the total Quantity of Products sold by first calculating the Consumer Surplus of each individual Customer. Customers will select the Product that gives them the greatest Consumer Surplus, where Consumer Surplus equals WTP minus Price. In addition to calculating Quantity sold, the Simulate Market node will also calculate the Market Share, Revenue, and Profit of each Product in the Market.

The Simulate Market node can be used to tune a Market Simulation so that it can accurately predict a real-world Market. When the Simulate Market node sits between a ‘Tuning Loop Start’ node and a ‘Tuning Loop End’ node, a Quantity Error can be calculated. The Tuning Loop can then change the Input Parameters to improve the accuracy of the predictions.

Note that this Market Simulation node offers two ways to handle identical Products. When the option ‘Output Detailed Customer Results’ is checked (default), then Customers will Purchase identical Products in roughly even proportions. But when the option ‘Output Detailed Customer Results’ is unchecked, then Customers will select the first identical Product found in the ‘Input Product Array’. However, an upstream ‘Product Generator’ node will automatically add a tiny random tie-breaker to all values in the Output WTP Matrix. This will ensure that Customers Purchase identical Products in roughly even proportions regardless of the ‘Output Detailed Customer Results’ selection.

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.

#1 Simulate Market

Simulates a Market using an Input Product Array and an Input Willingness To Pay (WTP) Matrix.


Product Array

The Input Product Array includes the set of Products that define the Market. Each row must have a unique Product name. If the same Product is sold by multiple Stores or at multiple Locations, then the Product name should include either the Store or Location as a unique qualifier.

Price is a required field as the Virtual Customers in the Market will be making purchase decisions based upon their residual Consumer Surplus. That is, their Willingness To Pay (WTP) minus the Price of the Product.

Cost is not a required field but should be included if Profit is to be calculated.

WTP Matrix

The Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The total number of Virtual Available Customers is equal to the number of rows in the WTP Matrix.



The ‘Simulate Market’ node will predict how many Customers will purchase which Products based upon their Willingness To Pay (WTP) and the Price. The Quantity sold result can be scaled to match the size of the actual, real-world Market.

Checking ‘Output Detailed Customer Results’ will generate additional results but will slow the speed of calculation.


Product Array

The Output Product Array includes a new predicted ‘Quantity’ column. The new ‘No Sale’ row summarizes the number of Customers who chose to make no purchase.

A ‘Quantity Error’ column will display the difference between the real-world Input Quantity and the predicted Output Quantity.

WTP Matrix

The Output WTP Matrix contains an additional ‘Purchase’ column with the name of the Product purchased by the Customer.

Consumer Surplus

The ‘Output Consumer Surplus Matrix’ matches to the ‘Input WTP Matrix’ but is updated to reflect the Consumer Surplus each Customer enjoys from the Product they Purchased. Consumer Surplus = WTP – Price.

Ranked Products

The Output Ranked Products List is a stacked table containing a detailed list of all Customer Product preferences.

#2 Capacity Constraints

A Product’s Capacity may be limited by manufacturing constraints or by inventory levels. If the Capacity level is provided then the Quantity sold for the Product cannot exceed the Capacity limitation. If Capacity is not provided, or Capacity is negative, then the Quantity sold for the Product is not limited. Capacity will be limited relative to the total number of Customers in the ‘Market Size’ Configuration Dialog.


Product Array

Adding a ‘Capacity’ column to the Input Product Array allows the user to set Capacity Constraints for each Product. The Capacity is set relative to the ‘Market Size Options’ in the Configuration Dialog.



No changes to the Configuration Dialog are required if Capacity Constraints are added to the Market Simulation.


Product Array

The Simulate Market node will not allow a Product to exceed its Capacity Limitation. The other Customers who would have preferred purchase the Product need to purchase their second-choice Product instead.

WTP Matrix

The ‘Purchase’ column in the Output WTP Matrix shows when a Product exceeds its Capacity Constraint. Here, the last Customer to purchase the Spacely Sprockets Product was the Customer in Row4724.

#3 Dynamic Costs

The Simulate Market node can handle Dynamic Costs. Dynamic Costs mean the incremental Cost of selling a Product can change. For example, the Cost To Make (CTM) a Product can decrease with scale as production volume increases. And the Cost To Serve (CTS) some Customers may be greater than the CTS of other Customers.

Cost To Serve (CTS): The Cost To Serve (CTS) is the additional Cost that must be incurred when a Product is sold to a particular Customer. This is a Dynamic Cost as some Customers are cheaper to serve than others, and is only incurred if the Customer actually Purchases the Product. The ‘Cost To Serve’ column is identified by the Product’s Name followed by a trailing ‘CTS’. The ‘CTS’ designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, ‘Product_01_CTS’ or ‘Product 02 CTS’ or ‘Product03cts’.

Cost To Make (CTM): The Cost To Make (CTM) depends not upon the individual Customer but upon the number of Customers who Purchase the Product. This ‘Cost To Make’ can be used to simulate the Law of Diminishing Returns. Starting from the first row in the column, each ‘Cost To Make’ row represents the incremental Cost of manufacturing each additional Product. If the Product is sold ten-times, then the total Dynamic Cost is the sum of the first 10 CTM rows. The ‘Cost To Make’ column is also identified by the Product’s Name followed by a trailing ‘CTM’ in a manner similar to the ‘CTS’ designator.¬†


The fixed per unit ‘Static Cost’ is defined in the Input Product Array.


‘Dynamic Costs’ are defined as Customer Distributions.


This CTM (red) is diminishing while the CTS (blue) is random.

Static Cost
COGS & Margin

Quantity x Static Cost + Total Dynamic Costs = COGS and Margin

Cost To Serve (CTS)

CTS is determined by the individual purchasing Customer.

Cost To Make (CTM)

CTM looks at the Top-N rows where N = Number of Customers