Workflow Overview

This workflow looks in more detail at the competition in a Commodity Market between two Competitors selling identical Products when neither Competitor is willing to change Price.

Sellers of Commodity Products sometimes do not engage in Price Competition because they are part of a cartel. Wikipedia describes a cartel in the following way:

A cartel is a group of apparently independent producers whose goal is to increase their collective profits by means of price fixing, limiting supply, or other restrictive practices. Cartels typically control selling prices, but some are organized to control the prices of purchased inputs.

Cartel agreements are generally unstable as there is a strong incentive for Competitors to cheat by selling at below the agreed Price. In this Market Simulation, each Competitor is selling a true Commodity Product and has unlimited capacity. Hence if one Competitor were to lower Price without the other Competitor reacting, that Competitor would capture 100% of the Market Share.

The workflow is very similar to the earlier Commodity Market within the Building Blocks workflow BB-103 Monopoly vs Commodity vs Orthogonal. But the concepts are duplicated here as an example of static competition. In follow-up workflows, starting with BB-104 Commodity Dynamic Competition, the action-reaction type of dynamic competition will be explored.

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.

Static Commodity Market

This Commodity Market comprises of two Competitor each selling the exact same Product.

More precisely, the Market Simulation defines two Products with each Product made up of exactly the same Feature.

Static competition is when Market Simulation predicts results that assume a Price change by one competitor will not trigger a reaction by the other competitors.


As before, there are two Competitors in the Market: Spacely Sprockets and Cogswell Cogs.

Products vs Features

While each Competitor sells its own Product, each Product is made up of the single identical Feature called “Sprockets”. These Products are therefore identical.


The Sprockets ‘Feature’ that each ‘Product’ contains is defined in a separate branch of the workflow.


Only the Feature Name is required to be defined. But the Customer Distribution Type, and Input Parameters could also have been defined here.

Feature WTP

Customers have a Willingness To Pay (WTP) for each Feature that goes into the Product. The Feature Customer Distributions are added together to make the Product WTP Matrix.


In earlier examples, a Customer Distribution of Willingness To Pay (WTP) values was directly generated for the Products. This time, it is the Feature that has the Normal Customer Distribution.

Feature List

The ‘Customer Distributions’ node generates the list of Features.


Each Feature has it’s own Customer Distribution.

Product Generator

The ‘Product Generator’ node aggregates the list of Product Features and the set of Customer Distributions for each Feature.


The ‘Product Generator’ node does not need to be configured. It knows what to do based upon the input tables. Note that the middle table (with the white triangle) is optional. Black triangles indicate required input tables.

Product Array

The two Competitive Products (Spacely Sprockets and Cogswell Cogs) are now completely defined.

WTP Matrix

The WTP Matrix for the two Products are copies of the Feature Customer Distribution for Sprockets. No other Features are to be aggregated.

Profit Engine

The ‘Profit Engine’ calculates the Consumer Surplus = Customer WTP – Product Price.


The ‘Profit Engine’ node predicts that 781 Customers buy Spacely Sprockets, while 799 Customers buy Cogswell Cogs. Randomization is used to settle tie-breaks between commodity Products.

Consumer Surplus

Some Customers would be willing to pay up to $275 for Sprockets.

Demand Curve

But the Demand Curve shows that if Spacely Sprockets were to raise Price, then Cogswell Cogs would sell the cheaper Commodity Product, and Spacely Sprockets’ Market Share would fall to 0%.

Static Competition

New Price

The Profit Engine can automatically set the Profit Maximizing Price.

Maximize Profit

When the ‘Output Profit Optimization Results’ option is set, the Profit Engine will use the results from the Demand Curve to set the Profit Maximizing Price for the selected Product.

No Reaction

Static Competition assumes that when a Competitor makes a Price change, none of the other Competitors will react. It predicts that when Spacely Sprockets drops Price to $105 it will capture 100% Market Share.