Usage (Optimization - Markdown)

To run the Optimization - Markdown Accelerator, you need to create a new Model Object from the Optimization > Models menu, using the Markdown model class to instantiate the optimization model and give it the required parameters. The model will then be added to the list and will be editable.

New Model

  1. Go to Optimization > Models and add a new model.

  2. Define the name of the model and choose Markdown as Model Class.

  3. The new model opens: Definition, Scope, Configuration, and Results are the steps of the model and will be explained below.

Definition Step

This step aims to define the input data and their mapping. You can also apply a filter to your data. There are these tabs:

  • Sales defines the historical transactions.

  • Products defines the products to markdown (optional).

  • Stock defines the historical stocks.

  • Competition defines the prices of the competitors on similar products (optional).

Sales Tab

In this tab, you define the transaction source and map it. The general recommendations are:

  • The model automatically filters some unavailable values (like null, negative or zero values, depending on the fields). First, apply the configuration entries and check the filtered-out data before adding more filters, if needed.

  • The dimension (like Store or Product) are IDs, and the dimension names are the labels displayed in the interface. When there is no name field mapped, the ID is used instead.

  • The Date is the date of the transaction.

  • Time period (daily, weekly or monthly) is used to define the future period for the optimization.

  • The money fields must provide extended values (except the Minimum Advertise Price which is not in the Extended fields section).

  • The mapping of the fields should reflect this waterfall structure:

    Markdown Waterfall Structure

Products Tab

In this tab, you can enable the product selection by checking the Add Product Selection checkbox.

If the product selection is enabled, you define the products source and map it. The general recommendations are:

  • The model automatically filters some unavailable values (like null, negative or zero values, depending on the fields). First, apply the configuration entries and check the filtered-out data before adding more filters, if needed.

  • The Product and Store fields are used to link the stock data to the sales data. Their values and their types should correspond.

Stock Tab

In this tab, you define the stock source and map it. The general recommendations are:

  • The model automatically filters some unavailable values (like null, negative or zero values, depending on the fields). First, apply the configuration entries and check the filtered-out data before adding more filters, if needed.

  • The Product and Store fields are used to link the stock data to the sales data. Their values and their types should correspond.

Competition Tab

In this tab, you can enable the competition definition by checking the Add Competition Alignment checkbox.

If the competition definition is enabled, you define the competition source and map it. The general recommendations are:

  • The model automatically filters some unavailable values (like null, negative or zero values, depending on the fields). First, apply the configuration entries and check the filtered-out data before adding more filters, if needed.

  • The Product and Store fields are used to link the stock data to the sales data. Their values and their types should correspond.

  • The Shelf Price field is the unit shelf price of the product sold by the competitor.

When the Definition step is done, you can go to the Scope step. For this, use the Continue button at the top right. If all required fields are not provided, there will be an error message.

Scope Step

The Continue button at the Definition step will automatically run the calculation that starts the Scope step. This calculation mainly performs the materialization of the sales, stock, and competitor tables in the model. At the end of the calculation, the tab is available and there are three tables called Sales, Stock, and Competition in the model tables (accessible through the menu in the top right corner).

In the Scope step, you define the scope of the optimization.

  • Included Product Groups relies on the product group field which was defined during the Definition step. If nothing is provided, there is no filter.

  • Product Minimum Historical Revenue, Product Historical Minimum Margin (%), Store Minimum Historical Revenue, and Store Historical Minimum Margin (%) are filters related to global values.

  • You can add as many custom filters as you want with Advanced Filters.

In the right panel, there is an overview of the data which will be taken into account in the optimization. It is refreshed to reflect your filters when you click the Apply Settings button.

Note that data shown in portlets are limited to scope, while filters are applied to historical values on the Sales table level. It might result in counter-intuitive behavior of the Product list and Store list portlets, hence the presence of historical and in scope columns.

Configuration Step

The Continue button at the Scope step takes you to the Configuration step. There is no calculation, so it is direct. In the Configuration step, you define your optimization configuration.

  • General tab defines the global inputs for the optimization.

  • Price tab defines the limits that each shelf price should respect.

  • Competition tab defines the desired positioning with the different competitors.

General Tab

Optimization Priority defines the balance between revenue vs. profit (as a margin rate) that you want to maximize.

Elasticity Model is a model of the Multifactor Elasticity type that must run until the end. The elasticity is used to forecast the quantity sold, for each product, and store, when the price changes. This value is used to predict the stock coverage and to maximize the global revenue or profit.

Number of Optimized Periods defines how many forecasted days/weeks/months are calculated.

Use fallback for elasticity makes use of a simple elasticity aggregated at product group level from the Elasticity Model to estimate quantities sold when elasticities are not available for a specific product/store/date.

Maximum number of periods to consider for fallback defines how far in the previous periods we go back to compute the forecasted quantity in case the fallback elasticities are used.

As Stock target type, select one these values:

  • Absolute Quantity

  • % relative decrease of Quantity of Stock (per product and store)

  • Stock value (total stock value per store, defined as money value)

Target period is the first day of the period for which the default target applies.

Default target is the quantity of desired stock at the end of the target period, defined at product/store level.

Specific Product Group Target allows to override the default target for all the products of a given product group.

Price Tab

Shelf Price Changes Limits define how much the optimized shelf prices, by product, store, and period can differ from the historical values.

Shelf Price Limits define the minimum percentage value of the elements of the waterfall.

Enforce Minimum Advertise Price is to use the mapping field Minimum Advertise Price, in the Definition step, to enforce a minimum value to the shelf price of each product. It is not displayed if the field is let empty in Definition step.

If Use markdown ladder is enabled, you can define a set of discount levels recommended for markdown. For example:

Competition Tab

The Competition tab is displayed in case the competition was set in the Definition step.

Acceptable Range From Competition Reference Price is a pair of values applied on each shelf price to position it with the competition price.

Competition Positioning Target is set for more global positioning. It defines how much the model should differ, on average, from each different competitor. The list of competitors is automatically created, based on the competition source.

Results Step

When the Configuration step is done, you can go to the Results step, using the Continue button. It will first run the longest calculation of the model. This calculation is a sequence that you can follow in the job tracker:

First, the model runs some preparations. Then, two optimization engines are launched, one named Simulation, which defines the initial state of the optimization, and one named Optimization which performs the actual optimization. In the end, the postprocessing is run. The duration of the run depends mainly on the size of the input data in the scope.

Once the calculation has run, some other tables are available through the table link, but normally you do not need to access them. If needed, go to to understand what these tables are. The most important one is the Optimized table which reflects the state of all the values after the optimization, and the Glassbox tables which are used to dig into the way the Optimization Engine reached the optimized state.

The Results step tabs are:

  • Impact – Displays comparisons between the current state (before optimization) and the optimized one. It also contains a bar chart showing Average Markdown on Recommended Retail Price, per selected period, computed as average of the markdown discount % per product and store.

  • Details – Displays tables that compare the current to the optimized values at different levels of granularity.

  • Glassbox – Displays charts that provide the state of the values finders and the criteria at the end of the optimization. It is useful to understand how the model reached its optimized state.

  • Drivers – Displays information about the criteria in relationship with the selected value finder.

  • Evaluation – Mocks the evaluation method of the model.

For more details see .

Possible Inconsistencies in Stock Target

Note on stock target “Stock Value”: The values may be inconsistent between the stock target and the Result step, but it is by design because we offer an estimation of the stock value to the user, estimation that may diverge due to a difference in the final scope (e.g. when some parameters such as price elasticity are missing so related products filtered out some transaction lines). To prevent and reduce such inconsistencies, here are additional steps:

  • In case of target setting, the values given by the user are used to estimate a delta rate to become the target.

  • For default values, if the default targets are greater than the available stock value, the constraint is not created.

  • A specific table called “Stock Value Target” is added in the Details tab containing (if needed) the stores that have their targets changed and the reason why.