Sign in

Blog · Forecast and pipeline

MAD forecast accuracy: mean absolute deviation

MAD measures the average absolute forecast miss in the original business units. This page calculates it from saved forecasts and actuals, proves the result, and explains the row count, scale and missing-data choices that affect it.

The short answerMAD forecast accuracy uses mean absolute deviation: add the absolute differences between saved forecasts and actuals, then divide by the number of matched observations. The result stays in the original units, such as cases or dollars. Lower MAD means smaller average misses for comparable rows. Unlike signed error, overforecasts and underforecasts cannot cancel.

MAD forecast accuracy measures the average size of a forecast miss in the same units as the forecast. MAD stands for mean absolute deviation: take each forecast's absolute difference from actual, add those differences, and divide by the number of matched observations. A lower result means smaller average misses when the unit, horizon and rows are comparable.

The MAD formula

Absolute forecast error = |Forecast - Actual|

MAD = Sum of absolute forecast errors / Number of matched observations

This is the arithmetic mean of the absolute errors. The published forecast-error definition describes MAD as average absolute forecast error in units. It is also commonly called mean absolute error, or MAE.

Here, deviation means the difference between a saved forecast and its actual outcome. It does not mean deviation from average demand, and it does not mean median absolute deviation, a different statistical measure that shares the abbreviation. Write the full definition on the report so different teams calculate the same thing.

The broader forecast accuracy glossary explains the distinction between the size of misses and their direction. MAD measures size. It cannot tell the reader whether forecasts are systematically high or low.

Build the matched file before calculating

Start with a forecast saved before the outcome was known and an actual demand export for closed periods. Use a consistent forecast horizon, such as the commitment made before each target week began. Do not overwrite that saved number with the latest revised forecast.

Column What belongs in it
Product or business unit The entity being forecast
Target period The week or month being scored
Forecast creation date When the saved forecast was available
Actual The observed result for that entity and period
Forecast The saved expectation for the same row
Unit of measure Cases, labor hours or USD, used consistently

Resolve duplicate keys and unmatched rows before counting observations. A product-week forecast matched to several shipment lines must be compared with the summed shipments for that product-week. Otherwise the forecast repeats and the denominator no longer describes the business question.

A worked example: weekly case demand

A US parts distributor scores the saved weekly forecast for one product at one distribution center. Every row uses cases and the same forecast horizon. Signed error is forecast minus actual; positive values mean the forecast was too high.

Target week Actual (cases) Saved forecast (cases) Signed error (cases) Absolute error (cases)
Week A 100 120 20 20
Week B 140 110 -30 30
Week C 80 90 10 10
Week D 120 100 -20 20
Total 440 420 -20 80

Work the calculation in this order:

Step Calculation Result
Add absolute misses 20 + 30 + 10 + 20 80 cases
Count matched weekly observations Week A through Week D 4
Divide total absolute error by count 80 / 4 20 cases MAD

The forecast missed actual demand by an average of 20 cases per weekly observation. This is not 20%, and it is not a guarantee that the next miss will be 20 cases. It summarizes the observed errors in this evaluation window.

The signed total is -20 cases, so mean signed error is -20 / 4 = -5 cases. That directional average is smaller in magnitude because high and low forecasts offset. Taking the absolute value of the signed total would therefore lose much of the error the operations team experienced.

The check: multiply MAD back to total absolute error

The basic proof is:

MAD × Number of matched observations = Total absolute error

Here, 20 × 4 = 80 cases, matching the absolute-error column. Also reconcile the 440 actual cases to the source demand export and the 420 forecast cases to the saved forecast file. A correct average does not prove that all source rows were included.

Keep the unrounded result for comparisons. This example gives an exact whole-case average; the variation below uses one decimal place. A report that rounds before comparing methods can hide a small difference between them.

Change one forecast and see what moves

Suppose only Week A's saved forecast changes from 120 to 130 cases. All actuals and the other saved forecasts stay the same.

Observation Actual (cases) Revised comparison forecast (cases) Absolute error (cases)
Week A 100 130 30
Week B 140 110 30
Week C 80 90 10
Week D 120 100 20
Total absolute error 90

The revised comparison has MAD of 90 / 4 = 22.5 cases, against 20 cases before. The additional overforecast raises absolute error; it cannot disappear against Week B's underforecast. Treat this as a comparison between saved forecast versions, rather than rewriting history after actuals become available.

Units and denominators determine the meaning

MAD divides by the observation count. A percentage-error measure instead divides a miss by a demand value before or after aggregation, depending on the metric. The accuracy and bias guide covers per-row percentage errors; the WAPE guide covers errors scaled by total actual demand.

The units matter just as much. MAD in cases cannot be compared directly with MAD in individual pieces, and dollar errors should not be averaged with unit errors. Forecasting: Principles and Practice classifies mean absolute error as scale dependent and explains why different units prevent direct comparisons.

For a financial forecast, use actual and forecast dollars consistently; the output is dollars per observation. For an operating forecast, keep the physical unit the planning team controls. A finance analyst and demand planner may both use MAD, but they must agree on the row definition before comparing results.

Where MAD goes wrong

  • Counting blanks as observations with no miss. Exclude unresolved pairs from scoring and disclose them. A confirmed zero actual can be scored; an unknown actual cannot.
  • Using the wrong count. Divide by valid matched pairs, not all calendar periods, distinct products or a count reduced as if estimating sample variance.
  • Changing the row level. Monthly product observations and weekly product-site observations answer different questions. Their averages are not directly comparable.
  • Reading average miss as direction or risk coverage. MAD does not identify persistent underforecasting or guarantee a buffer sufficient for unusually large misses.
  • Comparing unlike demand scales. A larger-volume product may have a larger MAD while meeting its operating needs. Set expectations using the business context in what makes forecast accuracy good.

For the report-building workflow using these saved files, see the forecast comparison report guide.

Measure the misses on your own file in Covirage

Bring saved forecast and actual files with matching business entities, target periods, creation dates and units. Covirage maps the columns, and its tools compute and check the figures; the external AI model explains the result with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.

See Covirage for forecast analysis for the supporting workflow.

Questions people ask

Is MAD the same as mean absolute error?

For forecast evaluation, MAD usually means the mean absolute difference between forecasts and actuals, which is the same calculation as mean absolute error. Define it explicitly because MAD can also refer to other deviation measures in statistics.

Does MAD use the number of periods or the number of products?

It uses the number of matched observations being scored. For a single product with one row per week, that is the number of weeks. For a product-week file, each valid product-week pair is one observation.

Can I calculate MAD when actual demand is zero?

Yes. MAD does not divide by actual demand, so a confirmed zero actual remains a valid observation. Calculate the absolute forecast miss for that row and include the row in the count. Missing demand is a separate data issue.

What is a good MAD value?

A good MAD depends on the unit, forecast horizon, demand level and cost of a miss. Compare competing forecasts on the same observations, then assess whether the average miss is acceptable for inventory, staffing or financial planning.