NodeDemand Curve

Predictor

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.

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.

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

Input Ports

  1. Port Type: Data
    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' must have the following columns:
    1. Product (string): 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. Price (double): The Price of each Product in the Market. The Price of the 'No Sale' Product should be zero.
    3. Cost (double): The Product Cost is required for all Products in the 'Demand Curve Product Set' as well as all Products from the same Brands and same Stores as those in the Product Set.
    4. Description (string): The description of the Product or the full name of the Product if the Product field contains an identification number.
    5. Brand (string): The name of the Product Brand. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Brand as those in the 'Demand Curve Product Set'.
    6. Store (string): The name of the Product Store. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Store as those in the 'Demand Curve Product Set'.
    7. Location (string): The name of the Product Location. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Location as those in the 'Demand Curve Product Set'.
    8. Family (string): The name of the Product Family. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Family as those in the 'Demand Curve Product Set'.
    9. Category (string): The name of the Product Category. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Category as those in the 'Demand Curve Product Set'.
    10. Platform (string): The name of the Product Platform. This is required to calculate the aggregated Profit Maximizing Price with respect to all Products of the same Platform as those in the 'Demand Curve Product Set'.
    11. Capacity (ignored): Capacity Constraints for the Products are NOT considered by the 'Demand Curve' node.
    12. Include (optional): A 'true' or 'false' string value indicating whether the Product might be included in the 'Demand Curve Product Set'. It still depends upon the user selection to include these Products.
  2. Port Type: Data
    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 Cost' Distributions 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.
    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. _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'.
    3. _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

  1. Port Type: Data
    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. The Demand Curve table will contain these columns:
    1. Product: The name of the Target Product from the 'Demand Curve Product Set'.
    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. Scenario: Whether the Quantity, Revenue, and Profit is calculated with respect to the 'Target Product' itself, to the 'Same Brand', to the 'Same Store', to the 'Same Location', to the 'Same Family', to the 'Same Category', or to the 'Same Platform'.
    9. Step: The Step Number along the sweep of the Demand Curve from the low-point to the mid-point to the high-point.
    10. Price: The Price variable as it sweeps across the Demand Curve.
    11. Cost: The 'Average Cost' of each Product from both the 'Input Product Array' and the 'Input WTP Matrix' or a missing value if the Cost has not been defined. Average Cost = Static Cost + Average Cost To Serve (CTS) + Average Cost To Make (CTM). The Dynamic Cost depends upon the Customers who Purchase the Product and is averaged across the total Quantity Sold.
    12. Margin: The 'Average Profit Margin' of each Product, where: Average Profit Margin = Price - Average Cost.
    13. Quantity: The simulated number of Virtual Available Customers who selected each Product, or 'Same Brand' Product, or 'Same Store' Product, or 'Same Location' Product, or 'Same Family' Product, or 'Same Category' Product, or 'Same Platform' Product depending upon the Scenario.
    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. Revenue: The total Revenue generated from the simulated number of Virtual Available Customers who selected the Target Product. Revenue may be aggregated across the 'Same Brand', or 'Same Store', or 'Same Location', or 'Same Family', or 'Same Category', or 'Same Platform' depending upon the Scenario.
    16. Profit: The total Profit generated from the simulated number of Virtual Available Customers who selected the Target Product. Profit may be aggregated across the 'Same Brand', or 'Same Store', or 'Same Location', or 'Same Family', or 'Same Category', or 'Same Platform' depending upon the Scenario.
    17. Is Max: A boolean flag used to indicate whether the Price variable in the row for the Target Product generates the maximum Profit. The total Profit may be maximized across all Products from the 'Same Brand', or from the 'Same Store', or from the 'Same Location', or from 'Same Family', or from 'Same Category', or from 'Same Platform' depending upon the Scenario.
  2. Port Type: Data
    Output 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] ]. The Output KPI Indicators will contain these columns:
    1. Focus Product: The reference Product or 'If Product' that is experimenting with the Price Change in order to measure Price Elasticity.
    2. Product: The impacted Product or 'Then Product' whose demand for sales is impacted by the Price Change. When considering the impact to the same Brand, Store, Family, Location, Category, Platform, or overall Market then this field will contain such name.
    3. Indicator: The name of each Key Performance Indicator (KPI), including:
      Price Elasticity of Quantity: the Price Elasticity of Quantity due to a change in Price. Typically the Price Elasticity of Quantity is negative, indicating that an increase in Price will cause a decrease in Quantity sold. For example, if Price were to increase by 5% causing Quantity sold to decrease by 5% then the Price Elasticity = −5% / 5% = −1.0.
      Price Elasticity of Share: the Price Elasticity of Share due to a change in Price. Typically the Price Elasticity of Share is also negative.
      Price Elasticity of Revenue: the Price Elasticity of Revenue due to a change in Price. Typically the Price Elasticity of Revenue is also negative.
      Price Elasticity of Profit: the Price Elasticity of Profit due to a change in Price. Unlike the cases above, the Price Elasticity of Profit may be either positive or negative. A positive Price Elasticity of Profit would indicate that the Profitability of the Product would increase if the Price of the Product were increased, and that the Profit Maximizing Price is above the current Price. A negative Price Elasticity of Profit would indicate that the Profit Maximizing Price is below the current Price.
      By Product: Looks at the impact on Quantity, Share, Revenue, and Profit of the Product when the Price of that same Product is changed.
      By Brand: Looks at the overall impact on Quantity, Share, Revenue, and Profit for the same Brand when the Price of the Product is changed.
      By Store: Looks at the overall impact on the same Store when the Price of the Product is changed.
      By Market: Looks at the impact on the overall Market when the Price of the Product is changed. This metric indicates how many Customers will leave the Market if the Price of the Product were to be increased.
    4. Value: The final value of each Key Performance Indicator (KPI).
  3. Port Type: Data
    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. The Price Sensitivity Array contains these columns:
    1. Product: The name of the Target Product from the 'Demand Curve Product Set' or the aggregated Brand, Store, Location, Family, Category, or Platform associated with the Target Product.
    2. If Product: The Target Product that is making a Price Change.
    3. Change Method: The method by which the Price, Profit Margin, or Cost of the Target Product was changed. The 'Change Method' will either be: After Purchases the name of the Product selected by each Virtual Customer row at the Profit Maximizing Price with respect to the 'Target Product' itself, After Max Brand the name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Brand', After Max Store, or After Max Location.
    4. Change Factor: The numeric degree by which the Price of the Target Product was changed.
    5. Price Change From: The original Price of the Target Product.
    6. Price Change To: The new Price of the Target Product after using the Change Price Method to change by the Change Factor.
    7. Cost Change From: The original Cost of the Target Product.
    8. Cost Change To: The new Cost of the Target Product if it was changed by the Change Factor.
    9. Then Product: The other Impacted Product that was impacted by the Target Product's Price Change.
    10. Quantity Change From: The original Quantity of the Focus Product.
    11. Quantity Change To: The new Quantity of the Focus Product after its positioning was altered.
    12. Quantity Change: The difference between the original Quantity and the new Quantity of the Focus Product.
    13. Quantity Change Percentage: The percentage difference between the original Quantity and the new Quantity of the Focus Product.
    14. Share Change From: The original Market Share of the Focus Product.
    15. Share Change To: The new Market Share of the Focus Product after its positioning was altered.
    16. Share Change: The difference between the original Market Share and the new Market Share of the Focus Product.
    17. Share Change Percentage: The percentage difference between the original Market Share and the new Market Share of the Focus Product.
    18. Revenue Change From: The original Revenue of the Focus Product.
    19. Revenue Change To: The new Revenue of the Focus Product after its positioning was altered.
    20. Revenue Change: The difference between the original Revenue and the new Revenue of the Focus Product.
    21. Revenue Change Percentage: The percentage difference between the original Revenue and the new Revenue of the Focus Product.
    22. Profit Change From: The original Profit of the Focus Product.
    23. Profit Change To: The new Profit of the Focus Product after its positioning was altered.
    24. Profit Change: The difference between the original Profit and the new Profit of the Focus Product.
    25. Profit Change Percentage: The percentage difference between the original Profit and the new Profit of the Focus Product.
  4. Port Type: Data
    Purchased Products List: 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. The Purchased Products List will contain these columns:
    1. Target Product: The name of the Target Product from the 'Demand Curve Product Set'.
    2. Before Purchases: The name of the Product selected by each Virtual Customer row at the current Price before the Demand Curves were generated.
    3. After Purchases: The name of the Product selected by each Virtual Customer row at the Profit Maximizing Price with respect to the 'Target Product' itself.
    4. After Max Brand: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Brand'.
    5. After Max Store: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Store'.
    6. After Max Location: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Location'.
    7. After Max Family: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Family'.
    8. After Max Category: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Category'.
    9. After Max Platform: The name of the Product selected by each Virtual Customer row at the aggregated Profit Maximizing Price with respect to the 'Same Platform'.