Inventory
How to measure demand forecast accuracy
Forecast accuracy measures how close your demand forecasts were to what actually sold. The most common formula is MAPE (mean absolute percentage error): the average of each period's error as a percentage of actual sales. Forecast accuracy = 100% − MAPE. Lower error means you can hold less safety stock.
The forecast accuracy formula (MAPE)
MAPE = Mean of (|Actual − Forecast| ÷ Actual) × 100 Forecast accuracy % = 100 − MAPE
- Actual
- units actually sold in the period
- Forecast
- units you forecast for that period
- | |
- absolute value: ignore whether the forecast was over or under
Worked example
Worked example: six months of forecasts for one productExample numbers
| Month | Actual | Forecast | Error | Absolute % error |
|---|---|---|---|---|
| 1 | 400 | 380 | −20 | 5.0% |
| 2 | 420 | 450 | +30 | 7.1% |
| 3 | 380 | 400 | +20 | 5.3% |
| 4 | 500 | 430 | −70 | 14.0% |
| 5 | 450 | 460 | +10 | 2.2% |
| 6 | 520 | 480 | −40 | 7.7% |
- Add up the absolute percentage errors: 5.0 + 7.1 + 5.3 + 14.0 + 2.2 + 7.7 ≈ 41.3%
- MAPE = 41.3% ÷ 6 ≈ 6.9%
- Forecast accuracy = 100% − 6.9% = 93.1%
Month 4 is the outlier. A 14% miss is worth investigating: was there a promotion, a press mention or a competitor stockout that the forecast didn't include?
WAPE: a better measure for slow sellers
MAPE divides by actual sales, so it can't handle months with zero sales and exaggerates errors on small numbers. WAPE (weighted absolute percentage error) divides total error by total sales instead:
WAPE = Σ |Actual − Forecast| ÷ Σ Actual × 100
For the same six months: total absolute error = 20 + 30 + 20 + 70 + 10 + 40 = 190 units; total actual sales = 2,670 units. WAPE = 190 ÷ 2,670 = 7.1%.
How forecast error should size safety stock
Safety stock exists because forecasts are wrong. The bigger and more variable your errors, the more buffer you need. The service-level formula makes the link explicit:
Safety stock = Z × σ(daily demand) × √(Lead time in days)
In practice, you can use the variability of your forecast errors in place of demand variability: if your forecasts are usually close, the standard deviation is small and so is the safety stock. If accuracy improves, you can safely hold less stock.
Safety Stock CalculatorHow much buffer stock you need to cover demand and lead-time swings. Want this handled automatically?Forecast demand and know exactly when to reorder, before you stock out or tie cash up in overstock.Try Verve AIHow to improve forecast accuracy
- Clean your sales history. Remove or adjust stockout periods and one-off events before forecasting from them.
- Add what you know about planned promotions, launches and price changes.
- Forecast at the right level. Forecast A products individually; group the long tail by category.
- Use the right method for each product. Moving averages for steady sellers, seasonal methods for seasonal ones. See demand planning vs supply planning.
- Track accuracy monthly and look for patterns, such as always over-forecasting new products.
Peak seasons need extra stock on top of everyday safety stock. The seasonal lead-time buffer calculator covers both higher demand and slower suppliers.
FAQ
What is a good forecast accuracy?
It depends on the product and how far ahead you're forecasting. Steady sellers forecast a month out should score much higher than new or seasonal products. Track your own accuracy over time and by product group.
What's the difference between MAPE and forecast accuracy?
MAPE (mean absolute percentage error) measures how far off forecasts are on average. Forecast accuracy is simply 100% minus MAPE.
Why does MAPE break for slow sellers?
MAPE divides by actual sales. If a product sells zero in a period, the error can't be calculated, and very small actuals produce huge percentages. Use WAPE, which divides total error by total sales, for slow movers.
Should I measure accuracy by product or overall?
Both. An overall number hides big misses on individual products, which is where stockouts and overstock come from. Track A products individually and the long tail as a group.