# Tune Market

The Tune Market node is designed to take Customer Distributions for Products found in the Market and quickly tune them to create a Willingness To Pay (WTP) Matrix. A WTP Matrix quantifies the Price that each Customer would pay for each Product in the Market.

Tuning a Market involves adjusting the Differentiation offered by each Product being sold. Stores, Products, and Features all offer their own Differentiating qualities. Differentiation describes the shape of a Customer Distribution and is quantified by the 'Mean', 'SD' (Standard Deviation), and 'Correlation' of the distribution. The 'Mean' quantifies Vertical Differentiation, the 'SD' quantifies Horizontal Differentiation, and the 'Correlation' quantifies Strange Differentiation.

The tuning algorithm systematically alters the 'Mean' and 'SD' (Standard Deviation) tuning parameters of each Customer Distribution until the simulated Market matches actual Market conditions. The initial 'Mean' and 'SD' tuning parameters are set in the Input Product Array. The incoming Product-level Customer Distributions in the 'Input Customer Distribution Matrix' can be Unit Distributions or partially-tuned Willingness To Pay (WTP) Distributions.

The Willingness To Pay (WTP) Matrix output of the Tune Market node can be fed directly into a Profit Engine node in order to optimize the Price of a target Product or generate a Product Demand Curve.

Additional information that can be used to improve the accuracy of tuning is Price Elasticity and Cross Elasticity measurements. Analyzing historical sales data can yield information about the Price Elasticity of individual Products, and about the Cross Elasticity between Products in the Market. Price Elasticity measures the relationship between the changing Price of Product A and the subsequent change in Quantity sold by the same Product A. Cross Elasticity measures the relationship between the changing Price of Product A and the subsequent change in Quantity sold by different Product B. The observed Price Elasticity and Cross Elasticity from the real-world Market can be added to the 'Input Price Elasticity' table to increase the accuracy of the tuned Market Simulation.

Price Elasticity can also include information about the 'Out of Stock' impact a Product can have on other Products. If one Product is Out of Stock then sales of the other Products should increase. The degree by which sales increase reflects the degree of Competitive Rivalry between the Products.

The tuning algorithm operates in two phases. During the first phase, just the Quantity values are taken into account. During the second phase, both the Quantity values and the Price Elasticity measurements are taken into account.

To speed tuning, several Tune Market nodes can be cascaded together with increasing numbers of Virtual Customers. In this way, the calculated tuning parameters become increasingly accurate at each step in the cascade. But to do this, the user should first go into the Market Size Options for all but the last Tune Market node in the cascade and 'Set Output Market Size' to 'Override Product Quantities with Product Array. This ensures that next node will tune according to actual market conditions.

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

### Input Ports

- Type: Data <b>Input Product Array</b>: The set of Products that define the Market. Each row corresponds to a Product that competes for customers in the Market. The 'Product Array' must have the following columns: <ol> <li> <b>Product</b> (string): The name of the Product corresponding to a column of the same name in the 'Customer Distribution Matrix' input port. There can also be an additional row with a Product named 'No Sale' - this row is used to tune those Customers who are in the Market but have not yet purchased a Product. If there is no 'No Sale' Product then it is assumed that all Customers in the Market purchase a Product.</li> <li> <b>Price</b> (double): The Price of each Product in the Market. The Price of the 'No Sale' Product should be zero.</li> <li> <b>Capacity</b> (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.</li> <li> <b>Quantity</b> (integer): The relative Quantity sold for each Product in the actual Market. The Quantity is treated as a percentage or a ratio. This Quantity from the actual Market will be compared against the Quantity from the simulated Market during the tuning process.</li> <li> <b>Mean</b> (double): The starting Mean of the Product-level Customer Distribution. This Mean will be altered during the tuning process by the user-defined 'Adjustment Percentage'. If the Mean value is missing then the starting Mean will be set equal to the Product Price. The final tuned Mean will be sent to the output port.</li> <li> <b>SD</b> (double): The starting Standard Deviation of the Product-level Customer Distribution. This 'SD' will be altered during the tuning process by the user-defined 'Adjustment Percentage'. If the Standard Deviation value is missing then starting Standard Deviation will be set to half of the Product Price. The final tuned 'SD' (Standard Deviation) will be sent to the output port.</li> <li> <b>Tune</b>: <i>(optional)</i> Contains special tuning instructions for the Product. The value of this 'Tune' field can be set to one of the following (not case-sensitive): <br> <b>True</b> adjust both the 'Mean' and 'SD' (Standard Deviation) of this Product <br> <b>False</b> don't adjust the 'Mean' or 'SD' (Standard Deviation) of this Product <br> <b>Mean</b> only adjust the 'Mean' but don't adjust the 'SD' (Standard Deviation) <br> <b>SD</b> only adjust the 'SD' (Standard Deviation) but don't adjust the Mean <br> <b>Both</b> adjust both the 'Mean' and 'SD' (Standard Deviation) of this Product (same as 'True') <br> <b>Neither</b> don't adjust the 'Mean' or 'SD' (Standard Deviation) of this Product (same as 'False') </li> </ol>
- Type: Data <b>Input Customer Distribution Matrix</b> (double): The set of Product-level Customer Distributions. The incoming Customer Distributions can be either Unit Distributions or a partially-tuned Willingness To Pay (WTP) Matrix. Each row corresponds to a Virtual Customer and contains the customer's scaled Willingness To Pay (WTP). Each column corresponds to a Product. Each Product must have a corresponding entry in the 'Product Array' input port.
- Type: Data <b>Input Price Elasticity</b>: <i>(optional)</i> Additional measurements that can be used to tune the Market Simulation. Price Elasticity measures the relationship between the changing Price of Product A and the subsequent change in Quantity sold by the same Product A. Cross Elasticity measures the relationship between the changing Price of Product A and the subsequent change in Quantity sold by different Product B. The 'Input Price Elasticity' must have the following columns: <ol> <li> <b>If Product</b> (string): The name of the trigger 'If Product' that changes Price. The 'If Product' must correspond to a row in the Input Product Array, and to a column in the 'Input Customer Distribution Matrix'.</li> <li> <b>Price Change Percentage</b> (double): The percentage difference between the original Price and the new Price of the trigger 'If Product'. A percentage of 10% is entered as 0.10 decimal. If including the sales impact a Competitive Product has when it is 'Out of Stock' on other Products, set this 'Price Change Percentage' to a very high value such as 9999.99 decimal. This effectively sets the Competitive Product Price to infinity as would be the case if the Product was Out of Stock.</li> <li> <b>Then Product</b> (string): The name of the impacted 'Then Product' that was impacted by the Price Change of the trigger 'If Product'. For Price Elasticity, the name of the 'If Product' and the 'Then Product' would be the same.</li> <li> <b>Quantity Change Percentage</b> (double): The percentage difference between the original Quantity and the new Quantity of the impacted 'Then Product'. A percentage of 10% is entered as 0.10 decimal. Note that the number sign is very important. Price Elasticity typically has different signs, such that a decrease in Price would result in an increase in Quantity. But Cross Elasticity would have the same sign, such that a decrease in the Price of one Product would result in a decrease in sales by another Product.</li> <li> <b>Weight</b> (optional): A numeric value to weigh the Quantity Error between the inputed Price Elasticity measurement and the forecasted Price Elasticity from the Market Simulation being tuned. If a weight is not provided then a weight of '1' will be used. A large weight should be placed upon Price Elasticity measurements that closely fit the historic data. The weighted influence of the Price Elasticity measurement can be found in the 'Output Price Elasticity' table, and in the 'Output KPI Indicators' table.</li> </ol>

### Output Ports

- Type: Data <b>Output Product Array</b>: The output Product Array corresponds to the input Product Array but has updated values in the 'Mean' and 'SD' columns that reflect the tuned results. The 'Quantity' column will also be updated according to the Market Size options. In addition, the Product Array will contain these additional columns: <ol> <li> <b>Share</b>: The simulated Market Share of each Product based upon the 'Quantity' column but not including those customers who selected the 'No Sale' option.</li> <li> <b>Error</b>: The absolute value of the difference between the actual input 'Quantity' and the simulated output 'Quantity'. Note that the Quantity Error for the 'No Sale' Product is not considered unless the user explicitly includes the 'No Sale' Product in the Input Product Array and sets a target Quantity to be greater than zero.</li> <li> <b>Revenue</b>: The Product's Revenue is calculated as the Product's 'Price' and final 'Quantity'.</li> <li> <b>Profit</b>: The Product's Profitability is only calculated if the Product's 'Cost' was provided in the 'Input Product Array'.</li> </ol>
- Type: Data <b>Output Willingness To Pay Matrix</b>: The tuned Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The Output WTP Matrix quantifies the Price that each Customer would pay for each Product in the Market. This WTP Matrix can be directly connected to a downstream 'Profit Engine' node.
- Type: Data <b>Output KPI Indicators</b>: 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: <ol> <li> <b>Product</b>: 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.</li> <li> <b>Indicator</b>: The name of each Key Performance Indicator (KPI), including: <br>● <i>Iteration Count</i>: the number of iterations used during the tuning process. <br>● <i>Final Adjustment</i>: the final percentage (%) by which the 'Mean', 'Correlation', and 'SD' (Standard Deviation) of the incoming Distributions were adjusted. <br>● <i>Sum of Total Error</i>: the total sum of 'Sum of Input Actual Quantity Error' and the 'Sum of Price Elasticity Quantity Error'. <br>● <i>Sum of Input Actual Quantity Error</i>: the sum of the Quantity Error between the Actual Quantity (or Guessed Quantity for Competitive Stores) and the Simulated Quantity for all Products and all Stores in the Market. For the Focus Store's Products, each Product's Quantity Error includes the user-defined 'Focus Store Quantity Error Weight' multiple. <br>● <i>Sum of Price Elasticity Quantity Error</i>: the sum of the Price Elasticity Quantity Change Weighted Error. Price Elasticity Quantity Error values for individual Products can be found in the 'Output Price Elasticity' table. The importance of the Price Elasticity Quantity Errors can be adjusted by the Weight value in the input table. </li> <li> <b>Value</b>: The final value of each Key Performance Indicator (KPI).</li> </ol> <br>These Output KPI Indicators are also output as Flow Variables: <ol> <li> <b>TuneMarket.IterationCount</b> Number of Tuning Iterations: The final count of the adjustments made to the 'Mean' and the 'SD' (Standard Deviation) tuning parameters of the incoming Customer Distributions. Only adjustments that result in an improved 'Error' are counted.</li> <li> <b>TuneMarket.FinalAdjustment</b> Final Adjustment Percentage: the percentage adjustment being made to the 'Mean' and 'SD' of all the Product Customer Distributions in the Market.</li> <li> <b>TuneMarket.SumOfError</b> Sum of Error: the sum of all 'Error' values in the output Product Array.</li> <li> <b>TuneMarket.SumOfErrorSquared</b> Sum of Error Squared: the sum of all 'Error Squared' values in the output Product Array.</li> </ol>
- Type: Data <b>Output Price Elasticity</b>: Compares the measured Input Price Elasticity against the forecasted Output Price Elasticity from the tuned Market Simulation model. The Output Price Elasticity contains these columns: <ol> <li> <b>If Product</b>: The Trigger Product that is making a Price Change.</li> <li> <b>If Brand</b>: The Brand of the Trigger Product.</li> <li> <b>If Store</b>: The Store of the Trigger Product.</li> <li> <b>If Location</b>: The Location of the Trigger Product.</li> <li> <b>If Family</b>: The Family of the Trigger Product.</li> <li> <b>If Category</b>: The Category of the Trigger Product.</li> <li> <b>If Platform</b>: The Platform of the Trigger Product.</li> <li> <b>Change Method</b>: Set to 'Input Price Elasticity' to indicate that the Price Change was set by the input table.</li> <li> <b>Price Change From</b>: The original Price of the Trigger Product.</li> <li> <b>Price Change To</b>: The new Price of the Trigger Product from the Input Price Elasticity table.</li> <li> <b>Price Change</b>: The difference between the original Price and the new Price of the Trigger Product.</li> <li> <b>Price Change Percentage</b>: The percentage difference between the original Price and the new Price of the Trigger Product.</li> <li> <b>Then Product</b>: The other Impacted Product that was impacted by the Trigger Product's Price Change.</li> <li> <b>Then Brand</b>: The Brand of the other Impacted Product.</li> <li> <b>Then Store</b>: The Store of the other Impacted Product.</li> <li> <b>Then Location</b>: The Location of the other Impacted Product.</li> <li> <b>Then Family</b>: The Family of the other Impacted Product.</li> <li> <b>Then Category</b>: The Category of the other Impacted Product.</li> <li> <b>Then Platform</b>: The Platform of the other Impacted Product.</li> <li> <b>Quantity Change From</b>: The original Quantity of the Focus Product.</li> <li> <b>Quantity Change To</b>: The new Quantity of the Focus Product after its positioning was altered.</li> <li> <b>Quantity Change</b>: The difference between the original Quantity and the new Quantity of the Focus Product.</li> <li> <b>Quantity Change Percentage</b>: The percentage difference between the original Quantity and the new Quantity of the Focus Product.</li> <li> <b>Quantity Change Error</b>: The difference between the measured Quantity Change from the Input Price Elasticity table and the forecasted output Quantity Change from the tuned Market Simulation.</li> <li> <b>Quantity Change Weighted Error</b>: The difference between the measured input Quantity Change the forecasted output Quantity Change multiplied by the input Weight. This Quantity Change Weighted Error is used by the tuning algorithm when finding the minimum error between real-world observations and the Market Simulation model.</li> </ol>

## Find here

Scientific Strategy > Market Simulation

Make sure to have this extension installed:

## Market Simulation nodes by Scientific Strategy for KNIME - Community Edition

Update site for KNIME Analytics Platform 3.7:

KNIME Partner Update Site