Why MAPE Lies About Your CPG Forecast: MAPE vs. WMAPE vs. MASE
Why MAPE Lies About Your CPG Forecast (and What to Measure Instead)
A planner stands up in the S&OP meeting and reports "92% forecast accuracy" — an 8% MAPE. Everyone nods. But the fast-moving line keeps stocking out, and three slow SKUs keep overbuilding into the shelf-life wall. How can the forecast be "92% accurate" and still be wrecking your schedule?
Because the number is lying. Not the forecast — the metric. The way you calculate accuracy decides which SKUs get your attention, which problems show up on the scoreboard, and which ones hide. On a CPG portfolio stuffed with low-volume and promo-driven items, the default metric most teams report — MAPE — is the wrong tool for the job.
This post is about picking an accuracy metric that survives a real SKU portfolio. We'll cover why MAPE breaks, then two fixes operators can actually report: WMAPE and MASE, plus a sidebar on intermittent SKUs.
MAPE in 60 seconds
MAPE — the mean absolute percentage error — is exactly what it sounds like. For each forecast point, take the absolute error (how far off you were), divide it by the actual demand, and average those percentages across all points. It "is a measure of prediction accuracy of a forecasting method in statistics."
Its appeal is obvious: everyone understands "we were 8% off." It's scale-free on its face, it reads like a report-card grade, and it drops cleanly into a slide. That intuitive "percent off" interpretation is exactly why it spread everywhere.
The problem is hiding in the denominator.
The three ways MAPE breaks on a CPG portfolio
1. Divide-by-small: tiny SKUs dominate the average
Because MAPE divides the error by the actual, any SKU with small demand generates a monster percentage. Forecast 10 cases, sell 2, and you're "400% off" on that line. One slow mover with a lumpy week can drag a whole portfolio's MAPE into the triple digits, even if your A-items were nearly perfect. As the reference literature puts it plainly: "MAPE should be used with extreme caution in forecasting, because small actuals can lead to highly inflated MAPE scores."
That's backwards for a CPG planner. The SKUs that matter most to your revenue and your run schedule are the high-volume movers — but MAPE hands the microphone to the tiny ones.
2. Divide-by-zero: intermittent demand makes MAPE undefined
Now take a slow mover that sells zero units this week — which is normal for a huge chunk of any CPG catalog. Divide by zero and MAPE is literally undefined (or blows up to infinity if your spreadsheet silently fudges it). The exact SKUs that need the most forecasting discipline — intermittent, lumpy, promo-driven — are the ones MAPE can't measure at all.
This is why the standing recommendation is that "wMAPE should be used instead of MAPE wherever possible."
3. Asymmetry: MAPE quietly biases you toward stockouts
This one is subtle and dangerous. MAPE is asymmetric: because the actual sits in the denominator, the metric structurally punishes over-forecasting differently than under-forecasting. The upshot is that chasing a lower MAPE can nudge your forecasts down — and down-biased forecasts mean under-building, which means stockouts. You can "improve" the scoreboard while quietly starving your fill rate. (If you want to catch directional bias directly, that's a separate job — see tracking signal.)
Fix #1 — WMAPE: weight the error by volume
The first fix keeps the familiar percent-error feel but stops the tiny SKUs from hijacking the number. WMAPE (sometimes written wMAPE) "is a variant of MAPE in which the mean absolute percent errors is treated as a weighted arithmetic mean — most commonly the absolute percent errors are weighted by the actuals (e.g., in sales forecasting, errors are weighted by sales volume), which overcomes the 'infinite error' issue."
In plain operator terms: instead of averaging percentages, you sum up all the absolute errors (in cases or units) and divide by the total actual volume. High-volume A-items dominate the result appropriately. The 2-case slow mover that was "400% off" contributes 8 cases of error against a portfolio moving tens of thousands — it barely registers.
Worked mini-example. Say you have five SKUs. Four are low-volume with wild percentage errors (60%, 80%, 150%, 200%) and one is your flagship that was 5% off on 20,000 cases. A plain MAPE averages those five percentages and spits out something ugly — say 40%+ — making your forecast look broken. WMAPE weights each error by its actual volume. The flagship's 5% on 20,000 cases swamps the handful of cases behind those big percentages, and the portfolio WMAPE lands near 9% — which is the number that actually reflects how well you served demand.
WMAPE aligns your accuracy report with where the units and revenue actually live. That's the same logic behind ABC-XYZ segmentation: manage by impact, not by count. For an aggregate portfolio KPI — the number you report up to S&OP — WMAPE is usually the right default.
Fix #2 — MASE: scale it against a naïve forecast
WMAPE fixes the weighting problem but still struggles when you want to compare accuracy across SKUs with very different scales, or when zeros dominate. For that, reach for MASE.
The mean absolute scaled error "is the mean absolute error of the forecast values divided by the mean absolute error of the in-sample one-step naïve forecast." It was proposed in 2005 by Rob J. Hyndman and Anne B. Koehler, who described it as a "generally applicable measurement of forecast accuracy without the problems seen in the other measurements."
Translation: instead of dividing your error by the actual (which is what blows up), you divide it by how badly a dumb naïve forecast would have done on the same data. That reframes the whole question from "what percent off were we?" to "did we beat a naïve guess, and by how much?"
Three properties make MASE the metric to compare across a messy portfolio:
- Scale invariance. "MASE is independent of the scale of the data, so it can be used to compare forecasts across data sets with different scales." A 50,000-case SKU and a 50-case SKU sit on the same yardstick.
- Handles zeros and intermittent demand. Percentage measures "rely on division by the actual, which skews the distribution for values near or equal to 0 — especially problematic for intermittent demand data sets, where zero occurs frequently." MASE sidesteps that.
- Symmetry. MASE "penalizes positive and negative forecast errors equally and penalizes errors in large and small forecasts equally; in contrast, MAPE and median absolute percentage error fail both criteria." No hidden push toward under-forecasting.
The killer feature for operators: MASE has a built-in benchmark baked into the number. "Values greater than one indicate that the in-sample one-step naïve forecast performs better than the forecast under consideration." So MASE < 1 means your model beats a naïve guess; MASE > 1 means you'd be better off with the dumb forecast. That's a bright line anyone on the floor can read.
If that sounds familiar, it should. It's the same philosophy as Forecast Value Added: every forecasting step should earn its keep against a naïve baseline, or you should stop doing it. MASE is FVA's measurement cousin.
One practical note: for seasonal SKUs, use a seasonal-naïve denominator (compare against "same week last year" rather than "last week") so MASE doesn't unfairly reward you for beating a baseline that never stood a chance.
Sidebar — Intermittent SKUs: MAAPE and friends
When zeros truly dominate — the lumpy, slow-moving tail of your catalog — even WMAPE and MASE can get awkward, and you may want a bounded percentage-style measure. Researchers built one: "a new accuracy measure called the mean arctangent absolute percentage error (MAAPE) was developed by modifying MAPE — the most popular accuracy measure — by transforming it using the arctangent" (Kim & Kim, 2016). The arctangent transform keeps the measure finite and defined even when actuals hit zero, so a single zero-demand week doesn't detonate the whole report.
MAAPE is a measurement companion to the forecasting method itself — for the lumpy tail, you're probably forecasting with Croston's method, which separates demand size from demand interval. Measure those SKUs with a bounded metric, not raw MAPE.
Which metric when — a CPG decision table
| Situation | Use this |
|---|---|
| Aggregate portfolio KPI, fast movers, report to S&OP | WMAPE (volume-weighted) |
| Comparing model vs. naïve, or across SKUs of different scales | MASE (benchmark baked in) |
| Intermittent / lumpy slow movers with frequent zeros | MAAPE (bounded), paired with Croston |
| Detecting directional bias (a separate job) | Tracking signal |
Notice that last row: accuracy and bias are different questions. A forecast can be accurate on average and still consistently lean one direction. Always pair an accuracy metric with a bias metric — that's what the tracking signal post is for.
How to roll this out on the floor
Report accuracy at the aggregation level that matches the decision. If you build a SKU at a specific DC in a specific week, measure accuracy at SKU-DC-week. If you're planning a product family's monthly capacity, measure at family-month. Aggregating up always flatters your numbers — demand errors cancel out — so don't report a rosy family-month figure and pretend it tells you anything about your weekly stockout risk.
Pair accuracy with bias — always. One metric for "how far off" (WMAPE or MASE), one for "which way" (tracking signal). Reporting only accuracy is how you end up with a clean scoreboard and a dirty fill rate.
Set realistic targets per segment, not one blanket number. A single "95% accuracy" goal across the whole catalog is a fantasy that punishes the planners stuck with lumpy SKUs and lets easy, stable SKUs coast. Set accuracy targets by ABC-XYZ class instead — tight targets for high-volume, stable items; looser, honest targets for the erratic tail. Practitioner guidance from demand-planning vendors echoes this: look beyond raw history and treat different demand patterns differently rather than forcing one metric and one target on everything.
Close the loop to safety stock. Forecast error is the raw material for safety stock. The more accurately you measure error — and the more honestly you segment it — the better you size buffers. A metric that lies about error produces buffers that either starve your fill rate or bloat your working capital. See safety stock and lead-time variability for where error feeds the buffer math.
Takeaways
- Stop reporting raw MAPE as your headline number. It inflates on small actuals, breaks on zeros, and quietly biases you toward stockouts.
- Use WMAPE for the portfolio KPI. Weighting by volume puts the number where the units and revenue actually are.
- Use MASE to compare against a naïve baseline. MASE < 1 means you're beating the dumb forecast — the same discipline as Forecast Value Added.
- Use a bounded metric like MAAPE for the intermittent tail, paired with Croston's method.
- Segment your targets and always pair accuracy with bias. One metric never tells the whole story.
The forecast you report up the chain is only as honest as the metric you grade it with. Pick the one that survives your real portfolio — not the one that looks best on a slide.
Sources
- Wikipedia — Mean absolute percentage error (MAPE, WMAPE, MAAPE mention): https://en.wikipedia.org/wiki/Mean_absolute_percentage_error
- Wikipedia — Mean absolute scaled error (MASE definition, properties, interpretation): https://en.wikipedia.org/wiki/Mean_absolute_scaled_error
- Kim & Kim (2016), A new metric of absolute percentage error for intermittent demand forecasts, International Journal of Forecasting (MAAPE): https://www.sciencedirect.com/science/article/pii/S0169207016000121
- Netstock — Overcoming Common Demand Forecasting Challenges: https://www.netstock.com/blog/overcoming-common-demand-forecasting-challenges/
- GAINSystems — Boost Accuracy in Demand Planning: Look Beyond Historical Data: https://gainsystems.com/blog/for-effective-demand-planning-look-beyond-historical-data/
More from the journal
Johnson's Rule: Sequence Your Mix-and-Pack Runs to Shrink Total Makespan
On a two-stage CPG line, finish time isn't the sum of run times — it's the makespan. Johnson's rule re-orders the same jobs to finish the whole set sooner, with zero new equipment. Here's the algorithm, a worked mix-to-pack example, and the CPG fine print.
OTIF Starts on the Line: Scheduling to the Must-Arrive-By Date
OTIF is a retailer-compliance scorecard that grades whether you delivered the right product, in full, on the must-arrive-by date. It's a scheduling problem before it's a logistics one — here's how to build a schedule that survives it.
SMED Changeover Reduction: Convert Internal Setup to External and Break the 10-Minute Barrier
Most schedulers optimize the order of changeovers. SMED shrinks the duration of each one. Here's how to measure a changeover correctly, separate internal from external setup, and convert the two into smaller, fresher production runs.