Price Maximize

The Price Maximize node is designed to continuously change the Price of a small set of Focus Products until the Maximization Goal is reached. Both increases in Price as well as decreases in Price are tested. The Maximization Goal can be to maximize Profit, Revenue, or Quantity Sold. While only the user-selected Focus Products can change Price, the user can define a broader set of 'In Scope' Products that are considered when evaluating the Maximization Goal.

For example, a Retailer may wish to maximize Profitability across their entire Store by changing the Price of one or two Focus Products. Or a Brand Manager may wish to maximize Revenue across all Products having the same Brand as the Focus Product.

Evaluating the Maximization Goal across a broader set of 'In Scope' Products is the way to account for Cannibalization. Cannibalization occurs whenever a Customer would have purchased a different same-Store or same-Brand Product but switches to the Focus Product because of a discount. While the Profit, Revenue, and Quantity Sold of the Focus Product would increase, the overall impact to the Store or Brand may be detrimental.

Note that other multi-Product Pricing nodes are available. The 'What If Product' node has a 'Portfolio Pricing' algorithm that can be used to reach a Maximization Goal by simultaneously changing different Prices of many Focus Products. This allows the 'What If Product' node to identify a Pricing strategy that will return greater Profitability without losing Customers. There is also the 'Price War' node that simulates Competitive Rivals constantly setting and resetting maximizing Prices for multiple Products in a series of Competitive Battles.

More Help: Examples and sample workflows can be found at the Scientific Strategy website: www.scientificstrategy.com.

Options

Standard Options

Focus Products
The user-selected set of Products that will change Price (multiple Products can be selected). Additional Products are 'In Scope' if they are also considered when deciding whether an improvement has been made. For example, the user may wish to maximize Profitability across the Store. While only the Focus Products changes Price, the impact on the rest of the same-Store Products will also be considered. All Focus Products must belong to the same set of 'In Scope' Products.
Maximization Goal
The user can define the Maximization Goal to maximize Profit, Revenue, or Quantity Sold. If the goal is to maximize total Profit then the Cost of all 'In Scope' Products must be known.
Change Price to Maximize for 'In Scope' Products
The set of additional 'In Scope' Products to consider when evaluating whether a maximizing improvement has been made. The user can select same-Brand Products, same-Store Products, same-Category Products, etc. If the user wishes to change Price to maximize for Store Profitability, then same-Store Cannibalization will be taken into account. That is, additional Focus Product sales from Customers who would have bought something else from the same Store do not maximize total Store Profitability unless the Customer is paying a higher margin.
Starting Adjustment Percentage
The Price Maximize node will start by altering the Focus Products' Price by plus/minus the 'Starting Adjustment Percentage'. The Price of all Focus Products will be altered by the same 'Adjustment Percentage'. After no more improvements are possible, the Price Maximize node will halve the 'Adjustment Percentage' and continue looking for maximization improvements. The algorithm will stop after the 'Maximum Number of Tuning Adjustments', or after the 'Adjustment Percentage' gets too low.
Maximum Number of Tuning Adjustments
The maximum number of improvements that can be made to the Maximization Goal before the Price Maximize node will end. If set to '1' then the algorithm will continue until exactly one improvement has been found, even if the 'Adjustment Percentage' needs to be reduced. If set to '-1' then the algorithm will exit after trying to make just a single adjustment based only upon the best result from three experiments: (a) Increase Price, (b) Decrease Price, and (c) No Change.

Market Size Options

Set Output Market Size
The output Market Size used to scale the Quantity sold, Revenue, and Profitability for each Product in the Market. The options include:
Set to total number of Customers in WTP Matrix (default) the output Market Size is determined by the number of Customers in the Input WTP Matrix.
Set to total number of Customers in Product Array the output Market Size is determined by the total number of Customers listed in the Input Product Array.
Override Product Quantities with Product Array the simulated output Quantity of each Product is overridden with the Quantity found in the Input Product Array.
Fixed number of Customers (including 'No Sale') the output Market Size is set by the user in the 'Set Fixed Number of Customers' option below. The 'Set Fixed Number of Customers' Market Size includes 'No Sale' customers who didn't purchase any of the Products listed in the Input Product Array.
Fixed number of Customers (excluding 'No Sale') the output Market Size is set by the user in the 'Set Fixed Number of Customers' option below. The 'Set Fixed Number of Customers' Market Size does not include 'No Sale' customers - only customers who made an actual purchase.
Set Fixed Number of Customers
The output Market Size when the user selects the 'Fixed number of Customers' option from the list above.
Then Multiply Market Size by Scaling Factor
After the output Market Size has been determined from the list of options above, and the simulation has been run, the final output Market Size is re-scaled according to this scaling factor. Note that everything in the Market will grow / shrink at the same rate, including 'Capacity' and the number of 'No Sale' Products. If the scaling factor is 1.1 then the final output Market Size is increased by 10%. The final Market Size will be rounded to the nearest integer.

Input Ports

Icon
Input Product Array: The set of Products that define the Market. Each row corresponds to a Product that competes for customers in the Market. The 'Input Product Array' should include the following columns:
  1. Product (string - required): The name of the Product corresponding to a column of the same name in the 'WTP Matrix' input port. There can also be an additional row with a Product named 'No Sale' - this row is used to track those Customers who are in the Market but have not yet purchased a Product. If the Product column is not found then the Row Identification (RowID) column will be used in place of the Product column.
  2. Description (optional): The description of the Product or the full name of the Product if the Product field contains an identification number.
  3. Brand (string): The name of the Product Brand. This is required to calculate the total Profit, Revenue, or Quantity Sold across all same-Brand 'In Scope' Products.
  4. Store (string): The name of the Product Store. This is required to calculate the total Profit, Revenue, or Quantity Sold across all same-Store 'In Scope' Products.
  5. Location (string): The name of the Product Location. The additional set of 'In Scope' Products can also be defined by same-Location.
  6. Family (string): The name of the Product Family. Many Product SKUs can be classified as all belonging to the same Family, and can be grouped as 'In Scope' Products.
  7. Category (string): The name of the Product Category. Several Product Families may be part of the same Category.
  8. Platform (string): The name of the Product Platform. The Platform is a general purpose label that can be used in any way. It can, for example, indicate whether the Product is sold both 'Online' as well as 'Offline'.
  9. Price (double - required): The 'Static Price' of each Product in the Market. This 'Static Price' can be adjusted by the personalized 'Dynamic Price' found in the 'Input WTP Matrix'. Personalized Price = Static Price x PAV + PAF. For example, some Customers may be entitled to the percentage Discount found in the 'Price Adjustment Variable' (PAV) column, or some Customers may need to pay the personalized delivery charges found in the 'Price Adjustment Fixed' (PAF) column. The Static Price of the 'No Sale' Product, if included, should be zero. Products with missing Prices are deemed to be Out-of-Stock.
  10. Cost (double): The Product Cost is required for all 'In Scope' Products. Cost estimates are also useful for other Products as the node will calculate the change in Profitability for Competitive Rivals. This can be useful in evaluating how a Competitor might react to a Price change.
  11. Holding Cost (double - optional): At the end of each period, except the last Liquidation Period, unsold Products with residual Inventory Capacity accumulate a Holding Cost that reduces the overall Profitability of the Product. Holding Cost can also be thought of the Opportunity Cost of not having the capital tied up in Inventory available for investment in other projects. Products that do not have a Capacity Constraint will not be penalized a Holding Cost. If this field is missing then a zero Holding Cost is assumed.
  12. Volume (double - optional): The 'Static Volume' of the Product relative to the Volume of other Products in the Market. For example, if a Product were a twin-pack then its Volume would be '2' while the Volume of the original Product would be '1' (default). Other scales could also be used, so that one Product might be 250 (ml) while another 500 (ml). But care with the scale should be taken as the Units are disregarded and the default of '1' will always be used if a Volume is missing. This 'Static Volume' field in the 'Input Product Array' is only important if an accompanying 'Dynamic Volume' field (or _VOL field) is found in the 'Input WTP Matrix'. Otherwise this field is ignored as Virtual Customers do not distinguish Products by the different Volume they require.
  13. Units (string - ignored): The Units of Measurement (UoM) associated with the Product's Volume. For example, the Units could be set to 'ml' when the Products are liquids or beverages. But note that this Units field is ignored and only provided as a convenience. No conversion is provided between different Units. The model will not understand, for instance, that 1 'Litre' contains twice as much Product as 500 'mL'.
  14. Capacity (integer): The Capacity Constraint for the Product. 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.
  15. Quantity (integer): The Quantity sold for each Product in the actual Market. But note that this Quantity value will largely be ignored by the node. Instead, Quantity sold is determined by the Price and Willingness To Pay (WTP) of Products. The Quantity value provided in this field can only be used to set the total output Market Size.
  16. Transactions (integer): A reference number of Transactions for each Product in the actual (real-world) Market. Transactions are only relevant if Customers purchase by Volume. That is, the 'Input WTP Matrix' must contain either a 'Volume' field or at least one '_VOL' field. Otherwise each Customer will purchase only a single Product, and the number of Transactions will equal the Quantity sold.
Icon
Input Willingness To Pay Matrix (double): 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. In addition to each of the Product's WTP Customer Distributions, this 'Input WTP Matrix' can also contain two types of 'Dynamic Price' and two types of 'Dynamic Cost' Distributions that depend upon the Customers who Purchase the Product. These personalized 'Dynamic Prices' and 'Dynamic Costs' adjust the 'Static Price' and 'Static Cost' found in the 'Input Product Array' to calculate the Product's Margin.
  1. Product01, Product02, etc (double): Each of the Products listed in the 'Input Product Array' should have a corresponding column in this 'Input WTP Matrix'. Each row represents a different Virtual Customer, and each value represents the Customer's Willingness To Pay (WTP) for each Product.
  2. Volume (double - optional): The personalized 'Dynamic Volume' of Product demanded by each Virtual Customer. For example, if the 'Input Product Array' contains a list of beverages of Volume 250ml, 330ml, 500ml, 750ml, and 1000ml then a Virtual Customer with a demanded Volume of '1000' could purchase a Quantity of either 4, 3, 2, 1, or 1 of the Products (respectively). If Customers are buying by Volume then they must purchase in whole number integers. For instance, if a Product had a Volume of 250ml but a Customer demanded 300ml then the Customer would only be able to buy 1 of that Product. Note that the excess Volume of 50ml received by the Customer is deemed to be of no value! The Price, WTP, and Consumer Surplus are all re-scaled by the relative Quantity demanded. When Customers buy in Volume then the Output Transactions field will differ from the Output Quantity field - otherwise these two values ought to be the same. Note that the 'Input Product Array' need not also contain a 'Volume' field. If the Product Volume is missing then the Product is presumed to be sold in Volumes of 1 Unit.
  3. _VOL (double - optional): The per-Product 'Dynamic Volume' (VOL) demanded by each Virtual Customer. This per-Product 'VOL' value will override the general 'Volume'. For example, a Virtual Customer buying laundry detergent might generally demand a 'Volume' of 2 (Litres) but might only demand a '_VOL' of 1 (Litre) for the concentrated detergent Product. Negative values will be replaced with a Demand Volume of zero '0'. If both of the 'Dynamic Volume' values ('Volume' and '_VOL') are missing then a default of '1' will be used.
  4. _PAV (double - optional): The Price Adjustment Variable (PAV) is the percentage adjustment to the Price (typically a Discount) a particular Customer would receive when they Purchase the Product. For example, if the Customer is entitled to a 10% Discount then the 'PAV' would be set to 0.90. The 'Price Adjustment Variable' column is identified by the Product's Name followed by a trailing 'PAV'. The 'PAV' 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_PAV' or 'Product 02 PAV' or 'Product03pav'.
  5. _PAF (double - optional): The Price Adjustment Fixed (PAF) is the fixed adjustment to the Product's Price. For example, if Customers pay different amounts for Shipping the Product then this could be modeled using the 'PAF' column. If the WTP Matrix contains both 'PAV' and 'PAF' columns, then the Price is first multiplied by the variable 'PAV' before adding the fixed 'PAF'. The 'Price Adjustment Fixed' column is also identified by the Product's Name followed by a trailing 'PAF' in a manner similar to the 'PAV' designator.
  6. _CTS (double - optional): 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'.
  7. _CTM (double - optional): 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.

Output Ports

Icon
Output Product Array: The output Product Array corresponds to the Input Product Array but updated to reflect the impact of the 'Change Scenario' outcome. The Product Array will contain these columns:
  1. Product: The name of the Product corresponding to the Input Product Array.
  2. Brand: The name of the Product Brand or a missing value if the Brand has not been defined.
  3. Store: The name of the Product Store or a missing value if the Store has not been defined.
  4. Location: The name of the Product Location or a missing value if the Location has not been defined.
  5. Family: The name of the Product Family or a missing value if the Product Family has not been defined.
  6. Category: The name of the Product Category or a missing value if the Category has not been defined.
  7. Platform: The name of the Product Platform or a missing value if the Platform has not been defined.
  8. Price: The 'Static Price' of each Product from the 'Input Product Array'. If the Product is the 'Focus Product' then the Price will be updated to reflect the 'Change Scenario'. The 'Dynamic Price' from the 'Input WTP Matrix' is NOT included in this output 'Price' field so as to allow multiple Market Simulation nodes to be chained together. Instead the 'Dynamic Price' is accounted for in the output 'Margin' field.
  9. Cost: The 'Static Cost' of each Product from the 'Input Product Array' or a missing value if the Cost has not been defined. The 'Dynamic Cost' from the 'Input WTP Matrix' is NOT included in this output 'Cost' field so as to allow multiple Market Simulation nodes to be chained together. Instead the 'Dynamic Cost' is accounted for in the output 'Margin' field.
  10. Margin: The average Profit Margin of each Product, where: Profit Margin = Personalized Price - Static Cost - Average Dynamic Cost. The Personalized Price is the 'Static Price' adjusted by the two types of 'Dynamic Price'. The 'Dynamic Cost' depends upon the Customers who Purchase the Product and is averaged across the total Quantity Sold.
  11. Capacity: The Capacity Constraint of each Product or a missing value if the Capacity has not been defined. When the 'Holding Cost' for the Product has been set, Capacity will be treated as Inventory and the Residual Capacity after Quantity sold will be returned.
  12. Quantity: The simulated number of Customers who selected each Product, including those who selected the 'No Sale' option.
  13. Transactions: The simulated number of Transactions for each Product. By default, each Customer will purchase only a single Product, and the number of Transactions will equal the Quantity sold. Transactions and Quantity will only vary if Customers are purchasing by Volume. That is, the 'Input WTP Matrix' must contain either a 'Volume' field or at least one '_VOL' field so that Virtual Customers demand different Product Quantity.
  14. Share: The simulated Market Share as a percentage (%) of each Product based upon the 'Quantity' column but not including those customers who selected the 'No Sale' option.
  15. COGS: The Cost of Goods Sold (COGS) for the Product is calculated as the Product's 'Cost' and final 'Quantity'. COGS is only calculated if the Product's 'Cost' was provided in the 'Input Product Array'. Both the Static Costs and Dynamic Costs are included in the COGS.
  16. COGH: The Cost of Goods Held (COGH) for the Product is calculated from the Product's 'Holding Cost' and residual 'Capacity' (after selling 'Quantity'). COGH is only calculated if both the Product's 'Holding Cost' and 'Capacity' are provided in the 'Input Product Array'.
  17. Revenue: The Product's Revenue is calculated as the Product's 'Price' and final 'Quantity'.
  18. Profit: The Product's Profitability is only calculated if the Product's 'Cost' was provided in the 'Input Product Array'. Both Static and Dynamic Prices and Costs are included in the Profit. In addition, if both the Product's 'Holding Cost' and 'Capacity' were provided, then the COGH is also calculated and subtracted from the Profit.
  19. Include: Whether the Product was included in the 'In Scope' set and was evaluated for maximization in accordance with the user-specified 'Change Scenario'.
Icon
Output Change Results: Lists the degree by which each Product in the Market was changed (if at all) and the impact of the change on each of the other Products in the Market. The 'Change Results' contains these columns:
  1. Product: The name of the Product that was (or was not) changed as part of the 'Change Scenario'.
  2. Brand: The name of the Product Brand or a missing value if the Brand has not been defined.
  3. Store: The name of the Product Store or a missing value if the Store has not been defined.
  4. Location: The name of the Product Location or a missing value if the Location has not been defined.
  5. Family: The name of the Product Family or a missing value if the Family has not been defined.
  6. Category: The name of the Product Category or a missing value if the Category has not been defined.
  7. Platform: The name of the Product Platform or a missing value if the Platform has not been defined.
  8. Change Scenario: The method by which this Product was changed. For example, the Change Scenario may be 'Maximize Profit for Store' or 'Maximize Revenue for Brand'.
  9. Change Factor: The numeric degree by which the Price of this Product was changed.
  10. Price Change From: The original Static Price of this Product.
  11. Price Change To: The new Static Price of this Product after the 'Change Scenario' caused a change.
  12. Price Change: The difference between the original Price and the new Price of the Product.
  13. Price Change Percentage: The percentage difference between the original Price and the new Price of the Product.
  14. Margin Change From: The original average Profit Margin of the Focus Product, where: Profit Margin = Personalized Price - Static Cost - Average Dynamic Cost. The Personalized Price is the 'Static Price' adjusted by the two types of 'Dynamic Price'. The 'Dynamic Cost' depends upon the Customers who Purchase the Product and is averaged across the total Quantity Sold.
  15. Margin Change To: The new average Profit Margin of this Product after the 'Change Scenario' caused a change.
  16. Quantity Change From: The original Quantity of the Focus Product.
  17. Quantity Change To: The new Quantity of the Focus Product after its positioning was altered.
  18. Quantity Change: The difference between the original Quantity and the new Quantity of the Focus Product.
  19. Quantity Change Percentage: The percentage difference between the original Quantity and the new Quantity of the Focus Product.
  20. Share Change From: The original Market Share of the Focus Product.
  21. Share Change To: The new Market Share of the Focus Product after its positioning was altered.
  22. Share Change: The difference between the original Market Share and the new Market Share of the Focus Product.
  23. Share Change Percentage: The percentage difference between the original Market Share and the new Market Share of the Focus Product.
  24. Revenue Change From: The original Revenue of the Focus Product.
  25. Revenue Change To: The new Revenue of the Focus Product after its positioning was altered.
  26. Revenue Change: The difference between the original Revenue and the new Revenue of the Focus Product.
  27. Revenue Change Percentage: The percentage difference between the original Revenue and the new Revenue of the Focus Product.
  28. Profit Change From: The original Profit of the Focus Product.
  29. Profit Change To: The new Profit of the Focus Product after its positioning was altered.
  30. Profit Change: The difference between the original Profit and the new Profit of the Focus Product.
  31. Profit Change Percentage: The percentage difference between the original Profit and the new Profit of the Focus Product.
Icon
Output Purchased Products List: The list of Products purchased by each Virtual Customer. 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 'Change Scenario' change can then be further analyzed. The 'Purchased Products List' contains these columns:
  1. Before Purchases: The name of the Product selected by each Virtual Customer row before the change caused by the 'Change Scenario'.
  2. Before Price: The Price of the purchased Product scaled by the Demand Quantity before.
  3. Before Cost: The Cost to supply the purchased Product scaled by the Demand Quantity before.
  4. Before WTP: The WTP of the purchased Product scaled by the Demand Quantity before.
  5. Before Surplus: The Consumer Surplus of the purchased Product scaled by the Demand Quantity before.
  6. Before Quantity: The Quantity of the Product purchased by each Virtual Customer row before the change caused by the 'Change Scenario'. This Quantity will be set to '1' unless Customers are purchasing by Volume.
  7. After Purchases: The name of the Product selected by each Virtual Customer row after the change caused by the 'Change Scenario'.
  8. After Price: The Price of the purchased Product scaled by the Demand Quantity before.
  9. After Cost: The Cost to supply the purchased Product scaled by the Demand Quantity before.
  10. After WTP: The WTP of the purchased Product scaled by the Demand Quantity before.
  11. After Surplus: The Consumer Surplus of the purchased Product scaled by the Demand Quantity before.
  12. After Quantity: The Quantity of the Product purchased by each Virtual Customer row after the change caused by the 'Change Scenario'. This Quantity will be set to '1' unless Customers are purchasing by Volume.
  13. Switched: Whether the Customer switched the Product they purchased as a result of the 'Change Scenario'.
Icon
Output KPI Indicators: The Output KPI Indicators contain select information about the tuning process and the quality of the final results. The Output KPI Indicators will contain these columns:
  1. Product: The Product associated with the Key Performance Indicator (KPI). If the KPI refers to the overall results and not to a specific Product then this field will be left blank.
  2. Indicator: The name of each Key Performance Indicator (KPI), including:
    Iteration Count: the number of iterations used during the Portfolio Pricing tuning process.
    Final Adjustment: the final percentage (%) by which the Price of the Focus Product was adjusted.
    Average Price Change Percentage: the average Static Price change of the 'In Scope' Products expressed as a percentage.
    Average Weighted Price Change Percentage: the weighted average Price change of the 'In Scope' Products where Prices are weighed by Revenue contribution expressed as a percentage.
    Quantity Change Percentage: the total percentage change in Quantity of the Portfolio Products in the 'In Scope' set.
    Revenue Change Percentage: the total percentage change in Revenue of the Portfolio Products in the 'In Scope' set.
    Profit Change Percentage: the total percentage change in Profit of the Portfolio Products in the 'In Scope' set.
    Goal Growth Percentage: the growth of the user-defined Portfolio Pricing Goal (Quantity/Revenue/Profit) as a percentage.
  3. Value: The final value of each Key Performance Indicator (KPI).

Views

Product Impact
Plots the change in Quantity, Market Share, and Profitability of each Product in the Market. Positive changes are shown as green bars. Negative changes are shown as red bars.
Customer Flow
Plots the flow of Customers from Product to Product due to the impact of the 'Change Scenario' on the Market. Bars can be hilited to identify and further analyze the Customers who switched their purchase decision.

Workflows

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.