Maximize Profit

Winning the CSG

In Part 01 of Cracking the Competitive Strategy Game (CSG) a Market Simulation workflow was used to calculate the Willingness To Pay (WTP) Matrix for all the Customers in one of the Markets.

As discussed, each Customer has a perceived value or reserve price or WTP for each Product. As the Total Available Market (TAM) is maybe 20,000 Customers, there will be 20,000 rows in the WTP Matrix (one row per Customer). And as there will be up to 8 Products in the Market, there will be 8 columns in the WTP Matrix.

Customers will purchase the Product that maximizes their Consumer Surplus according to the following equation:

Customer Consumer Surplus = Customer WTP for Product – Product Price

Now that you’ve calculated each Customer’s Willingness To Pay for each Product it is time to calculate the Price that will maximize your Profit. A low Price increases the likelihood that Customers buy your Product and that you sell out your Capacity. On the other hand, a high Price may increase your Profit – especially if your Competitors quickly sell out their Capacity and leave you with a Monopoly Market.

You do know the Capacity Constraints of all your Competitors as that is published before the beginning of each game period. But you don’t know the Price your Competitors are most likely to set.

In this Market Simulation, a Monte Carlo analysis is used to first randomly select Competitor Prices, then calculate a Profit Maximizing Price for your own ‘Focus Product‘. This process continues within a loop until a Recommended Price becomes clear.

This Case Study provides a high-level overview of the workflow without detailed explanation. It assumes you are already somewhat familiar with KNIME and Market Simulation. If not, start by reviewing the Building Blocks and Community Nodes.

Monte Carlo

There are a number of steps within this Market Simulation workflow:

  1. Manually update the Capacity Constrains for all Competitors;
  2. Isolate your Focus Product and set a default Starting Price;
  3. Select random Prices for all the Competitive Products (you may adjust the range from which to select Random Prices);
  4. Calculate the Profit Maximizing Price for the Focus Product;
  5. Repeat steps 3 and 4 in a loop (100 iterations) according to the Monte Carlo method;
  6. Plot the resulting Profit Maximizing Prices for the Focus Product in a histogram;
  7. Identify a Recommended Price for the Focus Product.

The user only needs to update the Production Capacities of all the Competitors in the Market Simulation workflow using the public CSG Market Updates. The user may also use the Pricing history of the Competitors to adjust the range from which the Monte Carlo algorithm will draw Random Prices for each Competitor.

Branch #1: Focus Product

The first thing to do is to update the Capacity Limitations for all Competitors in the Market. The Table Creator node contains the following information about each Product:

  • Product Name (equivalent to the three-letter-code of the Firm);
  • Marginal Cost (you only know your own Marginal Cost but early Market Entrants might have low Costs);
  • Capacity Limitations (public at the beginning of each game period);
  • Is Focus Product (set to true if this is your Product for which you want to optimize Price).

In addition, the Table Creator node defines two other parameters:

  • A = Competitor Starting Price (default $200)
  • B = Competitor Ending Price (default $400)

The workflow’s Monte Carlo algorithm will draw a Random Price for each Competitor from between Starting Price (A) and Ending Price (B). By default, a Random Price will be drawn between $200 and $400 for each Competitor. But you may refine this range based upon what you know about the Competitors. Does the Competitor have a history of setting low Prices? Has the Competitor built a large Capacity that they will wish to sell out?

The rest of the workflow branch isolates the Focus Product from the Competitors, and defines a Focus Product Starting Price of $200 (no need to change this).

Table Creator

Set Product Names, Capacity, and IsFocusProduct fields

Row Splitter

Isolates the Focus Product from the Competitors

Focus Product

Sets the default Starting Price for the Focus Product

Branch #2: Monte Carlo Loop

The Customer Distributions node starts this branch by selecting Random Prices for each of the Competitors Products. Prices are randomly selected from a Uniform Distribution between the Starting Price (A) and Ending Price (B) for each of the 7 Competitors. The node generates Random Prices for 7-Product-columns x 100-Loop-rows.

Next the Chunk Loop Start node selects these Random Prices row-by-row. These Prices need to be Transposed (rotated) so that they can be Appended (joined) to the Competitor Products table. Products with zero Capacity are then removed by the Row Filter node, and the Focus Product is Concatenated (added) back to the Market.

Finally the Price Maximize node will find the Profit Maximizing Price of your Focus Product. This Monte Carlo algorithm repeats 100 times (once for each of the Random Price rows) and all of the results are collected for further analysis.

Customer Distributions

Generates 100 rows of Random Prices for each of the 7 Products

Random Prices

Competitor Prices for 7-columns x 100-row iterations

Next Prices

Each Loop Iteration will select the next row of Prices for the Competitors

Next Market

Selects Products which have entered the Market

Price Maximize

Calculates the Profit Maximizing Price for the Focus Product

Maximized Price

The Maximized Price for the Focus Product collected each Iteration

Branch #3: Recommended Price

After the Monte Carlo Loop has completed its 100 Iterations the results can be analyzed. Histograms are generated for the Price, with the Recommended Price being the most likely to Maximize Profit. Histograms are also generated for the Expected Quantity, Expected Revenue, and Expected Profit to be generated from the actual CSG.

Final Results

All of the results generated from the Monte Carlo algorithm

Focus Product

Results filtered for the Focus Product

Recommended Price

The most likely Price to Maximize Profitability is $335

Expected Quantity

The Price Maximize node always tries to sell out of Capacity

Expected Profit

Histograms of both Expected Revenue and Profit are also generated