Choosing a forecasting method when MAPE cannot see the problem
Atlas Home Care makes cleaning products; planner Mei forecasts 1,400 SKUs a month. SKU 4471, a refill pack sold through two regional grocery chains, has 26 months of history that looks like 0, 40, 900, 0, 25, 1,800, 0, 0, 60, 640 and so on. The current method is a three-month moving average, chosen because it takes the noise out. Category-level error is reported as MAPE 38%. Mei's manual overrides last year improved the family-level monthly forecast from MAPE 31% to 26%. A vendor is now demonstrating a machine-learning tool that shows MAPE 22% on the same history. Meanwhile SKU 2210, a stable high-volume item, has been over-forecast by 9% for seven consecutive months and is sitting on 24% more inventory than target. Mei has been told to pick the tool with the lowest error and to stop overriding the system.
1. Why is lowest MAPE the wrong selection rule here, and what should be measured instead?
Read the worked answer
MAPE breaks down on exactly this data.
- Division by zero. SKU 4471 has many zero months; MAPE is undefined there and, if you clip it, the metric is dominated by the small months rather than the big ones that actually drive inventory.
- It is asymmetric. Over-forecast error is capped at 100%, under-forecast error is unbounded, so MAPE rewards over-forecasting on a spike item - which is precisely what creates the write-off and the phantom replenishment.
- It hides bias. A method can show a respectable MAPE while being consistently 9% high, as SKU 2210 proves.
- It is probably in-sample. A 22% demo figure on the same history is a fit, not a forecast.
Measure instead: scaled absolute error (MASE or MAE divided by the naive-method MAE), a signed bias statistic, and forecast value added against both the naive benchmark and the current method - Mei's overrides already beat the system by 5 points, so any new tool must beat that, not just the moving average. Require rolling-origin out-of-sample backtests over at least 12 months, evaluated at the level where the decision is made: SKU-DC-week for replenishment, family-month for S&OP. Ask the vendor what loss function they optimised and to show performance on the intermittent SKUs specifically.
2. How should SKU 4471 be forecast, and what process discipline does the promotional spike need?
Read the worked answer
Treat it as two demand streams, because it is two demand streams.
The three-month moving average smears the 1,800 spike across three months, so it generates roughly 600 units of phantom demand in the two quiet months after every promotion - forecast error that becomes inventory. Split the problem:
- Baseline (the 0, 40, 25, 60 pattern): intermittent demand. Use Croston or SBA, or a simple rate-based method, and measure it with a scaled metric. Do not use a moving average on a series with this many zeros.
- Promotion (the 900 and 1,800): an event model driven by causal inputs - the two chains' feature calendars, price and display plans, and their own commitments. Get their order intentions 8-12 weeks ahead, before the buy is locked.
Process discipline: one accountable owner per stream; overrides carry a written reason code and are measured for FVA so Mei's instinct is validated or retired on evidence, not on hierarchy; and a post-event review that records actual lift against planned lift for the next event.
Where the spike is genuinely unpredictable, the answer is not a better point forecast but flexibility: short-cycle replenishment, consignment stock at the retailer DC, and a negotiated exit or return path for unsold promo packs.
3. SKU 2210 has been 9% high for seven months. Diagnose and correct it.
Read the worked answer
Seven consecutive months in the same direction is a systematic error, not noise, and safety stock cannot fix it - extra stock only converts bias into surplus, which is what the 24% overage is.
Work the diagnostic tree in order:
- Master data: pack-size change, a delisted customer still flagged active, duplicate item records, unit-of-measure mismatch between the forecast and the order.
- History contamination: returns booked as demand, promotional pull-forward, sample shipments, or a large one-off order that the trend is now extrapolating forever.
- Model: a genuine level shift the smoothing constant is chasing too slowly, or a seasonal index fitted on a distorted year.
- Incentive: sales inflating the consensus number in S&OP.
Correct at the source first, then de-bias the forecast (refit on a cleaned history, or apply a documented bias correction until the history is fixed). Add a governance trigger: if absolute bias exceeds 5% for three consecutive months, the item goes to exception review with a named owner and a decision - this is how you stop bias surviving in a system nobody is watching.
Finally, report bias and MAPE side by side every month. A low MAPE routinely hides a large cumulative bias, and bias is the error that actually accumulates in inventory.