Accuracy & evaluation
WAPE, explained — and why it beats MAPE for real demand
WAPE (weighted absolute percentage error) is total absolute error divided by total actuals. It behaves when some periods are zero, and it does not let tiny SKUs dominate the score the way MAPE does.
Updated Aug 22, 2026·8 min read
The definition
WAPE is total absolute error divided by total actuals. Write it once: sum of |forecast − actual|, over the sum of actuals. Multiply by 100 if you like percents. Some teams say wMAPE. Same skeleton.
It is a volume-weighted score. Miss a big SKU and it shows. Miss a tiny one and it barely moves the number. That matches pallets and cash better than averaging a percent on every row.
Same week, two ways to score it
A worked example
Five days of actuals: 120, 80, 0, 200, 150. Forecasts: 100, 90, 20, 160, 170. Absolute errors: 20, 10, 20, 40, 20. Sum 110. Actuals sum to 550. WAPE = 20%.
MAPE on Wednesday is a tantrum — divide by zero, or an enormous percent if you sneak in a floor. That one empty day can own a steering meeting. WAPE treats it as a 20-unit miss on a 550-unit week, which is how the truck was loaded.
WAPE vs MAPE
MAPE averages |error / actual| per period. It feels like a grade. Then a SKU sells one unit, the model says two, and that row is 100% by itself. Buyers do not feel pain that way. Catalogs full of intermittent demand make MAPE a random number generator.
MAPE still has a home: strictly positive series of similar scale, company-week revenue, maybe. The moment zeros or mixed sizes show up, switch. If a vendor only quotes MAPE, ask what they did with the zeros. The pause is the answer.
How to use it in a review
Quote grain and horizon with the number. “11% WAPE, weekly, category, 8-week horizon, vs 16% seasonal naive on the same folds.” That sentence can change a PO. “We hit 11% accuracy” cannot.
- Always pair with bias. WAPE can hide a model that is always 6% heavy.
- Slice A items vs long tail. Aggregate WAPE loves the head.
- Watch live vs backtest. A gap is leakage or a world that moved.
What WAPE will not tell you
It will not tell you a rare spike was a disaster if the rest of the month was quiet — RMSE or a pinball loss might. It gets odd if actuals can go negative. And it is not comparable across grains. A 8% chain-week and a 35% SKU-day can be the same system, doing its job.
Next: picking a metric on purpose, or what “good” even means.
FAQ
- What does WAPE stand for?
- Weighted Absolute Percentage Error. Some teams say wMAPE. Same idea: sum of |forecast − actual|, divided by the sum of actuals, usually as a percent.
- Why is WAPE better than MAPE?
- MAPE divides by each period's actual. A near-zero day explodes the score, and small SKUs punch above their weight. WAPE weights error by volume, which matches how money and pallets actually move.
- Is a 10% WAPE good?
- It depends on the grain and the category. Daily SKU-store demand is often in the teens or worse; weekly category totals can sit under 10%. Compare against a naive baseline on the same folds, not against a round number from a blog.
Keep going
Guide
Choosing a forecast accuracy metric
Pick the metric that matches the cost of being wrong. WAPE for volume, MAE when units are the pain, RMSE when big misses hurt more than small ones, bias when you always run heavy or light.
Guide
What is good forecast accuracy?
Good is beating a naive baseline on the same grain, horizon, and folds — by enough to change a decision. Industry round numbers are gossip until they match your SKU mix and your clock.
Guide
How to backtest a forecasting model
Backtesting asks the model to forecast a past window it was not trained on, then scores the miss. Walk the window forward so you see many 'futures,' not one lucky test month.
Use case
Retail demand forecasting
Anticipate demand by product, store, channel, and region before buying or allocation decisions are locked.
Use case
Shipment volume forecasting
Forecast inbound and outbound volume by lane, facility, customer, and mode before capacity is committed.