Demand forecasting estimates how much of a product will sell in the coming periods based on past data. Every inventory planning calculation (safety stock, reorder point, order quantity) rests on this forecast and on how wrong it can be.

The demand pattern determines the method

Not every product sells the same way. A drink sold almost every day and a spare part sold a few times a year cannot be forecast with the same method. A widely used classification (Syntetos–Boylan) looks at two measures:

  • ADI: average interval between demands = number of periods ÷ number of periods with demand.
  • CV²: variability of demand size in periods with demand = (standard deviation ÷ mean)².
Pattern Condition Example Suitable methods
Smooth ADI < 1.32 and CV² < 0.49 Fast-moving consumer good Exponential smoothing, Holt, Holt-Winters, moving average
Erratic ADI < 1.32 and CV² ≥ 0.49 Product affected by promotions The same methods; higher uncertainty
Intermittent ADI ≥ 1.32 and CV² < 0.49 Spare part Croston, SBA, TSB
Lumpy ADI ≥ 1.32 and CV² ≥ 0.49 Project-driven product Croston, SBA, TSB

For intermittent demand, methods such as “repeat the last period” or a short moving average often forecast zero and break the stock plan. The Croston family instead forecasts the demand size and the demand interval separately and gives the average demand.

How the method is chosen: backtesting

You cannot know in advance which method fits a product; it has to be tested. Backtesting (rolling origin) holds out the last periods of history, trains the candidate methods only on the earlier part and has them forecast the held-out periods. This is repeated a few times, shifting the cut-off point. The method with the smallest error is chosen and retrained on the full history.

How forecast error is measured

Error = forecast − actual. Three measures are read together:

Measure Formula What it tells
WAPE Σ |error| ÷ Σ actual How wrong we were relative to total demand
Bias Σ error ÷ Σ actual Whether we systematically over (+) or under (−) forecast
MASE mean |error| ÷ mean error of “repeat the previous period” Below 1: better than the naive method

Example

A three-period test: actual demand 100, 0 and 50; forecast 90, 10 and 60.

errors = −10, +10, +10
Σ |error| = 30
Σ actual = 150
WAPE = 30 / 150 = 20%
bias = +10 / 150 = +6.7% (forecast slightly high)
MAPE = undefined: actual is 0 in the second period, cannot divide

That is why VidiStock uses WAPE instead of MAPE. For slow-moving products, where WAPE also rewards forecasting zero, method selection uses the squared error (RMSE).

A forecast is not a single number

Every forecast has an uncertainty. The standard deviation of the backtest error is used in two places:

  • Prediction interval: forecast ± 1.28 × error deviation (80%), ± 1.96 × error deviation (95%).
  • Safety stock: the larger the uncertainty, the more buffer is needed. See How to calculate safety stock.

In VidiStock

VidiStock determines the demand pattern of every product and warehouse, compares the candidate methods suited to that pattern by backtesting and picks the most accurate one. The product screen shows the chosen method, the errors of the candidates, WAPE, bias and the prediction interval. Details: Methods and accuracy.