Module: Computing monthly sales forecasts

Executive summary

This module is one of the cornerstones of STOCK. It forecasts monthly sales.

The forecast uses an adjusted sales history, as described in the preceding modules.

It is often the case that we work with a sales history of a sparsely sold product (with a low number of sale-events), hence, the module groups the history of sales to make it the best for the forecast. For example, Planning Wizard can forecast a product sale jointly at various branches and also sales of products of the same category. These forecasts are then divided for particular items.

This is especially useful for new items with a short sales history, and also for highly seasonal products: this way, their seasonality can be determined with a greater precision for the entire category – rather than for each item separately.

The module incorporates approximately 80 statistical methods for sale forecasting, the most suitable one (i.e., the one with the smallest expected margin for error) is automatically selected.

If the module Analysis of promotions and forecast of promotion sales is enabled, the module works over (so-called) normal sales (i.e., with an adjusted history of sales, the history is – in particular – trimmed from the effects of promotions). More details are to be found in the module: Computing baseline.

Functional description

Computing forecast and its margin for error

Forecasting models

Forecasting models are algorithms that – based on historical time series of sales and other support information – are able to forecast (predict) expected (non-promotional) sales in the future. There are rather important clues indicating which of the forecasting methods should be selected. These indicators are:

  1. A length of a historical time series
  2. An output from an analysis of seasonality for historical time series
  3. An output from a trend analysis of historical time series

STOCK disposes with a wide range of forecasting methods, ranging from moving average to neural networks. Each sale forecast is based on a different method; the most important feature for deciding on a method is the minimum limit for the length of a time series (each of the diverse forecasting methods in STOCK poses different requirements on the length of time series). The time series length is composed of a minimum period for adaptation of a method and a minimum period to verify accuracy of the results. Moreover, not all methods are applicable to seasonal and trend data; for those, which are used for seasonal and trend data, some of the methods require special conditions imposed on a data series; the data series thus must be trimmed (or otherwise adjusted) to serve as bases for computations using one of these methods. As a basic methodology, we use a bottom-up approach – we try to forecast the lowest possible level, i.e. we predict sales for a single item at a single warehouse. To improve the conditions for a forecast method selection (and to assess them) we complement the bottom-up approach with a Top-down and Middle-out approaches: they forecast sales of a product as such (or sales of a category of products) at individual warehouses.

Most methods impose specific internal parameters (e.g. smoothing factor for an exponential smoothing method): these parameters are optimized using genetic algorithms for each product to ensure the highest possible accuracy of the forecasts.

For the actual forecast, all the methods that meet the criteria of an input time series are loaded; the winner, then, is the method with the highest average accuracy (for details, see the following paragraph: Accuracy of sales forecast). If Top-down or Middle-out approach was enabled, the results (including their expected accuracy) subsequently need to be disaggregated proportionally among all individual locations.

The output of sales forecast is a monthly sales forecast and its estimated error:

image0

Accuracy of sales forecast

An estimated method accuracy is important in STOCK, for determining the most accurate sales forecast in particular. In addition, these data (in accordance with configuration) are also available in safety stock (see the module: Safety stock). The accuracy of prediction is computed using progressive covering of a time series and comparing the expected quantity with a real quantity in covered sections.

One step of computation of accuracy using progressive covering of the sales history:

image1

The output of the analysis of a method accuracy is an estimated error for each month in the forecasted period in the future, starting with the current month. The resulting analysis of the estimated error for one month ahead at each point of the history:

image2

Top-Down forecast

To forecast non-promotion sales in the module Sales forecast, it is advantageous to combine historical sales of a group of products at various locations (using user-defined connections) and then forecast sales for this group as a whole. Typically, we deal with – for example – the same products at various stores. Such approach allows evaluating the accuracy of sales forecasting methods for a longer, compact time series – and also use of complex algorithms for a forecast.

Ultimately, the whole group will get assigned the best sales forecast: the one with the highest precision. This forecast is – as always – distributed between all the individual locations; the distribution is based, for example, on a proportion of sales on individual locations, current trends, an overall length of sales history and other factors.

Middle-Out forecast

The Middle-Out approach is used in combination with the Top-Down to ensure the most accurate forecasts – especially for new products and for products that are just shortly on the market. Each product is ranked – based on user-defined data – into one (or several) category of products; sales forecasts are then done over these categories (rather than over individual products). Unlike the Top-Down approach, it is possible to further select different methods for each product, based on the accuracy of a method tested on the sales of the given product. Furthermore, the customer can group various products into user-defined groups manually. So: we forecast, for example, sales of all types of winter tires together, but the sales for each winter tire are also forecasted: the accuracy of these two sales forecasts is then compared.

The subsequent division of sales forecast runs based on ratio computed in a manner similar to the Top-Down approach. Additionally, a method can be (manually) forced (or denied) for particular members of the group. The Middle-Out approach supports several modes of operation:

  • Never (suppressed)
    • No product is assigned category forecast.
  • Force (forced)
    • All products are (forced-)assigned category forecast.
  • Fight (classical behavior)
    • The most accurate method is selected from all available forecasts.
  • Fight only seasonal force (forced for seasonal products)
    • All products for which a seasonal category is forecasted get the seasonal category forecast enforced.
  • Fight only new product force (enforced for new products)
    • For all products labeled as new products, the category forecast is enforced.
  • Fight only new seasonal product force (forced for seasonal new products)
    • For all products that are labeled as new and that have seasonal category forecast available, this forecast is enforced.

Moreover, it is possible to configure one’s own Middle-Out relations between different products, if (and as) you wish. These links are then evaluated and their resulting forecasts are added to the methods available for sales forecast, in accordance with the current settings.

A decision tree for various Middle-Out settings:

image3

Setting forecast zeroing using SIDI

If a product has a special attribute, the sales forecast can be zeroed. This attribute must be imported from the primary information system.

If a product has this attribute, its sales will never enter into computation of non-promotion sales forecasts – not even if the product is set as a predecessor to another product, or is a part of the Top-Down / Middle-Out session.

One can zero non-promotion sales forecast – but if there are promotions planned on the product, promotional sales forecast can be obtained.

Explaining the sales forecast

In the GUI, in the tab “Forecast”, the results of this module are to be checked. You can find all inputs, adaptation of various methods to history to determine an error and the resulting error of forecasted sales.

For the Top-Down forecast, the history and resulting forecast for the group and for individual items are available.

If the Middle-Out approach won, the history as well as forecast for the whole group is available.

For example, below is an explanation for an item:

image4

Displaying the forecast

The forecast can be displayed at several places.

The resulting forecast is shown in Product detail (see module Detail).

The forecast can be exported.

Extensions

Middle-Out outside of the product hierarchy using SIDI

In principle, the Middle-Out approach can be used for a standard product hierarchy. The hierarchy can be displayed in the tree menu, the module: Tree menu. Under certain circumstances, however, the hierarchy is not the best for the forecast (it is user friendly, but not all products in the same category can be forecasted for jointly).

In this case, a new categorization of products – used exclusively for the sales forecasting – can be imported.

User’s forecast cleaning

Setting up cleaning

The extension allows a user to change the computed forecast in case of an expected, yet non-systemic change – such as a competitor closes down an establishment or there are unexpected changes in the market. The cleaning can be set for a specific product in stock, or for any node in the category tree. If a user cleans sales forecast, the algorithm Fast adapt for the product in the given period is ignored.

The cleaning can be realized in several ways:

  1. Increase / decrease of trend in % for the whole forecast

image5

  1. Increase / decrease of quantity in % on a specific part of a forecast

image6

  1. Increase / decrease of quantity by an absolute value for each month of the forecast. These changes can be set for more products at once, as the yellow-marked products below show. Mouse over and mark the area you want to change (in blue): to this area, the change from the form is applied. If a percentage change is selected, notice that it is stored as an absolute value; if the original forecast changes, the percentage change is still applied by an absolute value (not by a percentage of the new forecast).

image7

Report on adjustments in the forecast

It is a good practice to add a note why cleaning was set up in precisely this way. One can then just get a list of all the adjustments (and the changes) in the Report on adjustments in the forecast. It stores the user who initiated the adjustment, their notes, the original as well as the new values, the product, the warehouse and the period affected by the adjustment. All changes are valid from the moment of entry.