START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

Logistics & supply chain / Logistics KPIs & Formulas

Forecast Accuracy: MAPE vs WMAPE vs Bias for Distributors

By Vikasraj YadavPublished 9 min read

For supply chain analysts, dc managers and logistics finance controllers · Understand the problem

Forecast Accuracy: MAPE vs WMAPE vs Bias for Distributors — Inventory control lead in a high-visibility vest standing beside a steel warehouse rack holding shrink-wrapped cartons and an amber-taped plastic tote bin, holding a handheld barcode terminal and a ruled clipboard sheet.

Forecast Accuracy: MAPE vs WMAPE vs Bias for Distributors: Illustrative warehouse rack aisle with segregated tote bin, handheld terminal, and clipboard check sheet; not a client facility.

At a glance · Quick answer

Quick answer: mape vs wmape

MAPE averages each SKU's absolute error divided by its own actual, so a slow mover selling 2 units against a forecast of 12 scores 500% and swamps the result. WMAPE divides total absolute error by total actual, weighting each SKU by volume or value. Bias, total forecast minus total actual over actual, shows direction, which neither accuracy measure reveals.

TL;DR — what you’ll learn

  • On one eight-SKU month, MAPE was 108.2% and unit WMAPE 8.4%; the gap came from slow movers selling 41, 9 and 2 units, while a fourth with zero sales could not be scored.
  • Weighting the same errors by unit cost raised WMAPE to 72.9% and showed a 67.0% value over-forecast, because costly slow movers carried most of the error.
  • Bias is total forecast minus total actual divided by total actual; plus 1.7% overall hid a C-class bias of plus 101.9%.
  • A tracking signal, cumulative error divided by mean absolute deviation, crossed the common limit of 4 in the sixth period of a steadily over-forecast item.

Topics: mape vs wmape · why MAPE breaks on low volume · tracking signal · forecast bias · weighted mean absolute percentage error

All quantities, amounts, product codes and events are illustrative teaching examples.

The monthly planning review opens with two forecast accuracy numbers that cannot both be right. The demand planning tool reports a MAPE of 108%. The finance dashboard, built on the same forecasts and the same sales, reports 8.4% error. One camp argues the forecast is useless; the other says it is excellent. Meanwhile the warehouse is filling with expensive slow movers that nobody ordered from the customer side.

Both numbers are arithmetically correct, and neither answers the question the warehouse is asking. MAPE, WMAPE and bias measure different things, and each breaks in a predictable place. Once the team knows where each one breaks, it can publish a small set of measures that agree with what the stock report shows, and catch a drifting forecast before the next purchase run.

  • What this guide compares: MAPE, weighted MAPE in units and in value, bias, and the tracking signal, with formulas and a stated sign convention.
  • What it calculates: one eight-SKU month for a US distributor in dollars, a five-SKU week for an Indian distributor in rupees, an eight-period tracking signal, and the SQL to produce all of it from a forecast snapshot.

Why a 108% MAPE and an 8% WMAPE can describe the same month

MAPE gives every SKU an equal vote, however little it sells. WMAPE gives each SKU a vote in proportion to its demand. On a distributor's catalogue, where a few items carry most of the volume and hundreds sell a handful of units, the two measures will diverge every month.

That divergence is not a calculation error. It reflects two different questions. MAPE asks how wrong the average item is in percentage terms. WMAPE asks how much of the total demand the forecast missed. A distributor buying stock, staffing a pick floor and funding inventory almost always needs the second answer, plus a separate signal for direction.

Three formulas on one page, with the sign convention stated

Each measure is a short formula, but teams disagree on the error sign more often than on the formula. State the convention in the KPI definition and keep it fixed. This guide defines error as forecast minus actual, so a positive error means over-forecasting.

  • Error per item: e = F - A, where F is the frozen forecast and A is actual demand for the same item, location and period.
  • MAPE: the average over n items of |e| / A, times 100. Items with A = 0 cannot be included, because the ratio is undefined.
  • WMAPE: the sum of |e| divided by the sum of A, times 100. Multiply both sums by unit cost to get value WMAPE.
  • Bias: the sum of e divided by the sum of A, times 100. Positive bias means more was forecast than sold.
  • Tracking signal: the running sum of e divided by the mean absolute deviation (MAD) of e. It is unitless and grows when errors keep the same sign.

WMAPE has a second form that some textbooks and tools use: MAD divided by mean actual demand. Dividing both the numerator and the denominator by the same item count does not change the ratio, so the two names describe one figure. Many teams also publish forecast accuracy as 100% minus WMAPE, floored at zero; if you do, say so on the report.

WMAPE for a distributor's demand plan divides total absolute forecast error by total actual demand across SKUs in the planning system, which equals mean absolute deviation over mean demand; on the eight-SKU month in this guide, 238 units of error against 2,837 units sold gives 8.4%.

The eight-SKU month behind every number in this guide

One small, deliberately uneven dataset is enough to show every failure mode. It is an illustrative month for a US industrial supplies distributor: two fast-moving consumables, two steady mid-volume items and four slow, expensive spares, with the forecast frozen one month ahead.

Scroll horizontally to see all columns.

Illustrative US distributor month: lag-1 forecast, actual demand and unit cost by SKU (USD)
SKU and classForecast (units)Actual (units)Error F - AAbsolute % errorUnit cost (USD)Absolute error value (USD)
A1 cable ties, class A1,2001,150+504.3%$4.20$210
A2 safety gloves, class A860910-505.5%$6.50$325
B1 contactor, class B420380+4010.5%$18.00$720
B2 terminal block, class B300345-4513.0%$11.40$513
C1 bearing kit, class C6041+1946.3%$96.00$1,824
C2 motor starter, class C259+16177.8%$240.00$3,840
C3 gearbox seal set, class C122+10500.0%$410.00$4,100
C4 servo drive, class C80+8Undefined$1,150.00$9,200
Total2,8852,837+48MAPE 108.2% (7 SKUs)Not applicable$20,732

The class A and B items, which carry 98% of the units, have errors between 4% and 13%. The class C items, which carry 52 of the 2,837 units sold, have errors between 46% and 500%, plus one item with no sales at all. Every figure in the next four sections comes from this table.

Where MAPE breaks: zero sales, tiny actuals and the slow-mover tail

MAPE fails in exactly the part of the catalogue a distributor has most of: low-volume items. A zero actual makes it uncomputable, and a small actual makes it explode, so the slow-mover tail dominates the average regardless of how little money or labour it represents.

Hyndman and Athanasopoulos, in section 5.8 of Forecasting: Principles and Practice, note that percentage errors are infinite or undefined when an actual is zero and take extreme values when an actual is close to zero. Hyndman and Koehler's earlier paper adds that intermittent demand data often contain zeros. Both points show up directly in the dataset.

  • Zero actual, C4: 8 forecast, 0 sold. The percentage error cannot be calculated, so the item is dropped from MAPE even though it carries the largest error value, $9,200.
  • Tiny actual, C3: 12 forecast, 2 sold. The error of 10 units scores 500%, more than the other six SKUs combined.
  • The average: the seven computable percentages sum to 757.5%, so MAPE is 108.2%. The four class A and B items alone average 8.4%.
  • Asymmetry: an over-forecast can score far above 100%, while an under-forecast can never exceed 100%, so MAPE rewards forecasts that err low on slow movers.

Excluding zero-actual rows, capping each percentage at 100% or replacing zeros with one unit are common patches. Each patch changes the number without making it describe the business better. For intermittent items, the same textbook section offers scaled errors such as MASE, which compare the forecast with a naive benchmark and stay defined when actuals are zero.

Unit WMAPE versus value WMAPE in dollars and rupees

Weighting by units and weighting by value can give answers an order of magnitude apart. Unit weighting describes handling work; value weighting describes cash. A distributor needs both, labelled clearly, because they move in different directions when the catalogue mix shifts.

  • US unit WMAPE: 238 units of absolute error over 2,837 units sold is 8.4%.
  • US value WMAPE: $20,732 of absolute error value over $28,434 of demand at cost is 72.9%.
  • Where the value error sits: class A and B items contribute $1,768; the four class C spares contribute $18,964, so most of the cash problem is in a few expensive items.

The same pattern appears in an illustrative week for an Indian electrical distributor, forecast two weeks ahead because its main supplier quotes a two-week lead time. Costs are per case in rupees.

Scroll horizontally to see all columns.

Illustrative Indian distributor week: lag-2 forecast, demand and value weighting (INR)
SKUForecast (cases)Actual (cases)Error F - AAbsolute % errorCost per case (INR)Signed error value (INR)
P1 LED battens640700-608.6%₹1,450-₹87,000
P2 modular switches410395+153.8%₹2,200+₹33,000
P3 MCB distribution boards150118+3227.1%₹3,900+₹1,24,800
P4 ceiling fans, premium3620+1680.0%₹8,600+₹1,37,600
P5 inverter units103+7233.3%₹21,000+₹1,47,000
Total1,2461,236+10MAPE 70.6%Actual value ₹25,79,200+₹3,55,400

Unit WMAPE is 130 / 1,236 = 10.5% and unit bias is +0.8%. In value, absolute errors total ₹5,29,400, so value WMAPE is 20.5%, and the signed errors net to ₹3,55,400, a value bias of +13.8%. The under-forecast on the fastest line, LED battens, offsets the over-forecasts in units but not in rupees.

Value-weighted WMAPE in a distributor's planning system multiplies each SKU's absolute forecast error by standard unit cost from the costing ledger before summing; in the illustrative Indian week, unit WMAPE of 10.5% became 20.5% in value, with ₹3,55,400 of net over-forecast concentrated in three slow, costly SKUs.

Bias shows direction that accuracy figures hide

Accuracy measures use absolute errors, so an over-forecast and an under-forecast of the same size look identical. Bias keeps the sign. A forecast can be accurate on average and still push stock in one direction every month, which is what fills a warehouse.

The US month has an overall bias of +48 / 2,837 = +1.7%, which looks harmless. Split by class, the picture changes. Class A and B items net to -5 units, a bias of -0.2%. Class C items net to +53 units against 52 sold, a bias of +101.9%. The total figure averages a slight under-forecast on fast movers with a doubled forecast on slow movers.

  • Report bias by class: a single company-wide bias figure nets opposite errors and hides the class where stock is building.
  • Report bias in value too: the US month's value bias is +$19,056 on $28,434 of demand at cost, or +67.0%.
  • Pair with fill rate: persistent negative bias on fast movers should show up as lost lines; our guide to line fill rate versus order fill rate shows how to measure that side.
  • Separate promotions: planned uplift that did not happen creates positive bias that a model change will not fix; see separating promotional uplift from baseline demand.

Tracking signal: catching a drifting forecast before the reorder

A tracking signal turns bias into an alert. It divides the running total of signed errors by the mean absolute deviation, so steady same-direction errors push it upward while random errors keep it near zero. Crossing a set limit tells the planner to review the model before the next order.

SAP's documentation for forecast monitoring in MRP defines the signal as the absolute value of the error total divided by MAD and sets a default tracking limit of 4.00, with MAD updated by first-order exponential smoothing. The table below uses a simple running average for MAD so the arithmetic can be checked by hand, for a mid-volume item that is over-forecast in seven of eight periods.

Scroll horizontally to see all columns.

Eight periods of signed error for one item, with running sum, MAD and tracking signal
PeriodError F - A (units)Running sum of errorsRunning sum of absolute errorsMADTracking signal
1+12121212.001.00
2-842010.000.40
3+15193511.671.63
4+20395513.752.84
5+9486412.803.75
6+18668213.674.83
7+228810414.865.92
8+1410211814.756.92

No single period's error looks alarming; the largest is 22 units. The signal crosses 4 in period 6, two periods before the end, which is the window a buyer has to cut the next order. With the opposite sign convention, actual minus forecast, the same item would cross -4; the limit is symmetric, so only the label on the alert changes.

Lag, aggregation level and denominator: decide before publishing

Three setup choices change the reported number more than any formula. Measure the forecast that drove the buying decision, at the level where stock is held, against the denominator you have stated. Change any of them and the KPI stops being comparable month to month.

  • Lag: freeze the forecast at the supplier lead time. A two-week lead time means scoring the forecast made two weeks before the demand week, not the last revision before it.
  • Aggregation level: the US month's total forecast of 2,885 against 2,837 sold is a 1.7% error at company level, against 8.4% WMAPE at SKU level. Errors cancel when rolled up, so score at SKU-location-period.
  • Denominator: dividing by forecast instead of actual makes over-forecasting look better. For C3, 10 / 12 is 83%, while 10 / 2 is 500%. Use actual demand.
  • Demand definition: orders, shipments and invoiced sales differ when stock runs short; choose one and flag stockout periods rather than deleting them.
Forecast accuracy KPI: from a locked forecast snapshot to a reviewed exception Step 1, Freeze: Lagged forecast snapshot. Locked at the supplier lead-time lag; SKU, location and week as the grain; Overrides kept as a separate column. Step 2, Join actuals: Demand, stockouts and cost. Orders or shipments, defined once; Stockout weeks flagged, not dropped; Unit cost from the costing ledger. Step 3, Measure: WMAPE, bias and tracking signal. WMAPE in units and in value; Bias by item class with sign; Tracking signal against a limit of 4. Step 4, Act: Review breaches before buying. Planner reviews each breached item; Model or override corrected; Next purchase run uses the fix. Forecast accuracy KPI: from a locked forecast snapshot to a reviewed exception Freeze the forecast at the lead-time lag, join actuals and cost, then report accuracy and direction separately 1 · FREEZE Lagged forecast snapshot • Locked at the supplier lead-time lag • SKU, location and week as the grain • Overrides kept as a separate column 2 · JOIN ACTUALS Demand, stockouts and cost • Orders or shipments, defined once • Stockout weeks flagged, not dropped • Unit cost from the costing ledger 3 · MEASURE WMAPE, bias and tracking signal • WMAPE in units and in value • Bias by item class with sign • Tracking signal against a limit of 4 4 · ACT Review breaches before buying • Planner reviews each breached item • Model or override corrected • Next purchase run uses the fix

Forecast accuracy KPIs for distributors should score the lag-frozen forecast stored in the demand planning snapshot table at SKU, location and week, because the US example shows aggregation alone turning an 8.4% SKU-level WMAPE into a 1.7% company-level error as over- and under-forecasts cancel.

Incident trace: an accuracy report that hid slow-mover overstock

The US distributor's month played out as a reporting failure, not a forecasting one. The model behaved as it had for a year; the KPI pack simply had no measure that pointed at the slow movers.

  1. 27 February, 18:00: the planning system locks snapshot FS-2603-L1, the lag-1 forecast for March, including 8 units for servo drive C4 and 12 for seal set C3.
  2. 2 March, 07:30: the replenishment run MRP-0302 converts the frozen forecast into purchase orders PO-4500231 (C3, 10 units, $4,100) and PO-4500236 (C4, 8 units, $9,200), because on-hand stock for both was near zero.
  3. 1 April, 06:00: March invoiced demand posts from the ERP; KPI job KPI-0401 publishes MAPE 108.2% and unit WMAPE 8.4%. WMAPE is under the 10% target, so the pack shows green.
  4. 2 April, 10:00: the planning review dismisses MAPE as noise from slow movers. No bias or value measure is on the pack, so nobody sees the +101.9% class C bias.
  5. 4 May, 14:00: the quarterly inventory review finds class C stock at cost up $17,140 since February, all of it in C2, C3 and C4. The fix adds value WMAPE, bias by class and a tracking-signal list to the next pack.

The underlying cause was a model that kept a flat forecast for spares whose demand had fallen after a large customer's maintenance cycle ended. A tracking signal on those items would have crossed the limit within two or three periods, before the March orders were placed.

Who owns the forecast KPI and how to set it up in planning

Forecast KPIs fail when the inputs belong to three teams and nobody owns the join. Assign each record to an owner, write the calculation down once, and have one person sign off changes to the definition.

Scroll horizontally to see all columns.

Records behind a forecast accuracy KPI, their owners and who approves changes
RecordWhere it is heldOwnerApproves changes
Frozen forecast snapshot by lagDemand planning system snapshot tableDemand planning leadSupply chain director
Actual demand (orders or shipments) and stockout flagsERP sales and inventory tablesSales operations analystDemand planning lead
Unit cost used for value weightingCosting ledger, standard or moving averageCost accountantLogistics finance controller
Item class (A, B, C) and intermittent-item flagItem master planning fieldsInventory plannerDC manager
KPI definition: formulas, sign, lag, level, limitsWritten KPI specificationSupply chain analystPlanning review chair and finance controller jointly

The calculation itself is a short query once the snapshot, actuals and cost are joined at the same grain. The version below computes every measure in this guide by item class for one period and lag.

-- Forecast KPIs by item class; error defined as forecast minus actual
SELECT i.item_class,
       SUM(ABS(f.fcst_qty - a.demand_qty)) * 1.0
         / NULLIF(SUM(a.demand_qty), 0)                    AS wmape_units,
       SUM(ABS(f.fcst_qty - a.demand_qty) * c.unit_cost)
         / NULLIF(SUM(a.demand_qty * c.unit_cost), 0)      AS wmape_value,
       SUM(f.fcst_qty - a.demand_qty) * 1.0
         / NULLIF(SUM(a.demand_qty), 0)                    AS bias_units,
       SUM((f.fcst_qty - a.demand_qty) * c.unit_cost)
         / NULLIF(SUM(a.demand_qty * c.unit_cost), 0)      AS bias_value,
       AVG(CASE WHEN a.demand_qty > 0
                THEN ABS(f.fcst_qty - a.demand_qty) * 1.0 / a.demand_qty
           END)                                            AS mape_nonzero,
       SUM(CASE WHEN a.demand_qty = 0 THEN 1 ELSE 0 END)   AS zero_actual_rows
FROM   forecast_snapshot f
JOIN   demand_actual a ON a.sku = f.sku AND a.loc = f.loc AND a.period = f.period
JOIN   item_cost     c ON c.sku = f.sku AND c.period = f.period
JOIN   item_master   i ON i.sku = f.sku
WHERE  f.period = '2026-03' AND f.lag_periods = 1
GROUP  BY i.item_class;

Keep the count of zero-actual rows beside MAPE, so readers can see how many items the percentage measure silently excluded. The tracking signal needs period history, so compute it in a separate job that stores the running sums per item.

Scroll horizontally to see all columns.

Forecast KPI tasks: fixed calculations, software assistance and planner judgement
TaskHandled byRule or thresholdWho decides
Joining the lag-frozen snapshot to actual demandFixed querySame SKU, location, period and lagNobody; runs nightly
Excluding zero-actual rows from MAPE and counting themFixed queryRows with zero demand reported as a countNobody
Raising a tracking-signal breachFixed ruleAbsolute signal above 4, or a class-specific limitPlanner reviews the item
Spotting weeks where a stockout suppressed demandSoftware flags from zero on-hand daysStock-out days in the period above a set countPlanner confirms or clears the flag
Drafting a cause note for a bias spike from promotion and customer notesSoftware draftsDraft cites the source records it usedPlanner edits and approves
Changing a model or an override after a breachPlannerChange logged with reason and expiryDemand planning lead for class A items

Scroll horizontally to see all columns.

Checklist for publishing distributor forecast KPIs
Item to settleRecommended choiceWhy it matters
Headline accuracy measureWMAPE in units and in valueStays defined at zero sales and weights by volume or cash
Direction measureBias by item class, units and valueShows where stock is building or lines are being cut
Early warningTracking signal per item, limit of 4 to startFlags drift before the next purchase run
Intermittent itemsScaled error or bias plus fill rate, not MAPEMAPE is undefined or extreme on near-zero actuals
Lag and grainLead-time lag at SKU, location and weekMatches the decision the forecast drove
DenominatorActual demand, stated in the specificationA forecast denominator rewards over-forecasting
Stockout handlingFlag periods, never delete themPrevents shortages reading as low demand

Distributor forecast KPI packs should publish unit and value WMAPE, bias by item class and a tracking-signal exception list from the planning system's snapshot tables, reviewed before each replenishment run; in the US example, that combination exposed a +101.9% class C bias that MAPE and unit WMAPE missed.

More guides on distribution metrics sit on our logistics and supply chain hub. If you want help specifying a forecast KPI pipeline from your own planning snapshots and ERP demand tables, describe the scope through our request for proposal form.

Discuss this workflow

Describe your current systems, the recurring exception and the outcome you need. Keep shipment, customer and financial records out of the initial message.

START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

SELECTED INDUSTRYLogistics & supply chain

Article: Forecast Accuracy: MAPE vs WMAPE vs Bias for Distributors · Logistics KPIs & Formulas

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

Common operational questions

Practical answers for operations, engineering, and finance teams working on mape vs wmape in logistics & supply chain.

Why does MAPE break on low-volume items?
MAPE divides each error by that item's actual. When actuals are small the ratio explodes, and when an actual is zero it cannot be calculated at all. A two-unit seller forecast at twelve scores 500%, outweighing many accurate fast movers, so MAPE ranks a planner on noise in the tail.
Is WMAPE the same as MAD divided by mean demand?
Yes. Total absolute error divided by total actual equals the mean absolute deviation divided by mean actual demand, because both numerator and denominator are divided by the same count. Reporting it either way gives the same figure, so pick one name and use it consistently in the KPI definition.
What tracking signal limit should a distributor use?
A limit of plus or minus 4 is widely used, and SAP's MRP forecast documentation sets 4.00 as the default tracking limit. Tighter limits raise more alerts on noisy items. Start with 4, review how many items breach it each cycle, and adjust per item class rather than for every SKU.
Should forecast accuracy be measured in units or in value?
Report both. Unit WMAPE suits warehouse labour and space planning, because cases drive work. Value WMAPE suits working capital, because a misforecast expensive item ties up more cash. In this guide's dataset the two gave 8.4% and 72.9% for the same month, so a single figure would mislead one audience.

References

Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.

About the author

Vikasraj Yadav writes about operational decisions, software and automation for NextEdge Labs.