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 = 150WAPE = 30 / 150 = 20%bias = +10 / 150 = +6.7% (forecast slightly high)MAPE = undefined: actual is 0 in the second period, cannot divideThat 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.
