Home / Forecasting and Analytics / Forecast Accuracy Calculator
Forecasting and Analytics
Forecast Accuracy Calculator (MAD, MAPE, WMAPE, Bias and Tracking Signal)
Grade a forecast against what actually happened. Paste your actual demand in one column and the forecast in the other, one value per line, and the tool pairs them period by period and returns the full set of error metrics: MAD (mean absolute deviation), MSE, RMSE, MAPE, WMAPE, the mean forecast error or bias, bias percent, the running sum of errors, the tracking signal against its control limits, sMAPE, and MASE. The headline number at the top is forecast accuracy read as 1 minus WMAPE, the figure demand planners quote, and a plain-language verdict tells you whether the forecast is accurate enough, whether it leans high or low, and whether the tracking signal has drifted out of control. A per-period table shows each error and the running tracking signal, and any period that crosses your limit turns red. Every value stays in your browser.
This is the tool that judges the forecasts the other calculators produce. It does not make a forecast; it measures one you already have. The sign convention is e = A – F, actual minus forecast, so a positive average error means the forecast sits below actual demand and is biased low, which is under-forecasting. That single choice runs through every metric here, from the mean error to the tracking signal, so it is stated plainly and used consistently. MAD, RMSE, and MAPE tell you how big the average miss is in units or percent; the bias, the bias percent, and the tracking signal tell you which direction the miss leans and whether it is drifting one way over time. Read both, because a forecast with an acceptable percent error can still be quietly biased and heading out of control. It is free, needs no sign-up, and runs entirely in your browser.
In short: forecast error is e = A – F, actual minus forecast, measured over n paired periods. MAD = mean(|e|), MSE = mean(e squared), RMSE = square root of MSE, MAPE = mean(|e| / |A|) as a percent, and WMAPE = sum(|e|) / sum(|A|) as a percent. Forecast accuracy = 100 – WMAPE. The mean forecast error MFE = mean(e) gives the bias direction, bias percent = sum(e) / sum(A), RSFE is the running sum of the errors, and the tracking signal = RSFE / MAD is checked against control limits of +/-4. On the default series of actual 100, 120, 90, 110, 130, 80 against forecast 110, 100, 95, 100, 120, 95, the errors are -10, +20, -5, +10, +10, -15, which gives MAD 11.67, MSE 158.33, RMSE 12.58, MAPE 11.29%, WMAPE 11.11%, MFE +1.67, bias% +1.59%, RSFE 10, tracking signal 0.86, sMAPE 11.30%, MASE 0.42, and forecast accuracy 88.89% (1 minus WMAPE) or 88.71% (1 minus MAPE). The verdict: fair accuracy, small bias, in control.
forecast accuracy (1 – WMAPE)
88.89%forecast accuracy (1 – WMAPE)
- MAD / MAE (mean absolute deviation)
- 11.67
- MSE (mean squared error)
- 158.33
- RMSE (root mean squared error)
- 12.58
- MAPE (mean absolute percent error)
- 11.29%
- WMAPE (weighted MAPE)
- 11.11%
- MFE / Bias (mean error)
- 1.67
- Bias %
- 1.59%
- RSFE (sum of errors)
- 10.00
- Tracking signal (RSFE / MAD)
- 0.86
- Accuracy (1 – MAPE)
- 88.71%
- sMAPE (symmetric)
- 11.30%
- MASE (vs naive)
- 0.42
Forecast accuracy 88.89 percent. Fair accuracy. Bias is small (1.59 percent), so over and under errors roughly cancel. The tracking signal stays within the +/-4 limits, so the forecast is in control.
Per-period error (A / F / e / %err / RSFE / TS)
- t
- A / F / e / %err / RSFE / TS
- 1
- 100 / 110 / -10 / 10.0% / -10 / -1.00
- 2
- 120 / 100 / 20 / 16.7% / 10 / 0.67
- 3
- 90 / 95 / -5 / 5.6% / 5 / 0.43
- 4
- 110 / 100 / 10 / 9.1% / 15 / 1.33
- 5
- 130 / 120 / 10 / 7.7% / 25 / 2.27
- 6
- 80 / 95 / -15 / 18.8% / 10 / 0.86
How the calculator works
The tool does the arithmetic you would do by hand to score a forecast, only faster and with the tracking-signal chart drawn for you. You give it two columns, the actual demand and the forecast, one value per line, and it pairs them period by period. It takes the error in each period, builds every metric from those errors, ranks the forecast accuracy at the top, and lists the direction and the drift below. You read the headline accuracy first, the full metric list under it, the per-period error table with the running tracking signal after that, and the chart at the bottom. The two columns must line up, so the first actual belongs to the first forecast, the second to the second, and so on, and they must be the same length.
The single definition everything rests on is the error. For each period the error is e = A – F, the actual minus the forecast. With this sign a positive error means the actual came in above the forecast, so the forecast was too low, and a negative error means the actual came in below the forecast, so the forecast was too high. Carry that through to the average and a positive mean error means the forecast sits below demand on the whole, which is under-forecasting, while a negative mean error means it sits above, which is over-forecasting. Some texts define the error the other way round as F – A, which flips every sign; this tool uses A – F throughout, so read a positive bias as running low.
The size metrics measure how big the average miss is, ignoring direction. MAD, the mean absolute deviation, is the mean of the absolute errors, mean(|e|), and it is the same number as the MAE, the mean absolute error; the two names are interchangeable. It reads in demand units, so a MAD of 11.67 means the forecast is off by about 11.67 units in a typical period. MSE, the mean squared error, is the mean of the squared errors, mean(e squared), and because it squares before averaging it weights a big miss far more than a small one. RMSE, the root mean squared error, is the square root of the MSE, which brings the number back into demand units while keeping the heavier weight on large misses. RMSE is the metric to lead with when a big miss costs much more than several small ones.
The percent metrics put the miss on a scale-free footing. MAPE, the mean absolute percent error, is the mean of |e| / |A| expressed as a percent, so it says the average miss as a share of the actual. It is easy to read and compare, but it has two weaknesses: it is undefined when an actual is zero, so those periods are skipped and the count is shown, and it over-weights periods with small actuals, which can make an intermittent item look terrible for the wrong reason. WMAPE, the weighted MAPE, fixes both. It is sum(|e|) / sum(|A|) as a percent, so it weights each period by its volume and uses every period, with no blow-up on zeros. Forecast accuracy is 100 minus WMAPE, or 100 minus MAPE if you prefer the plain version, and the headline at the top of the tool is 1 minus WMAPE because that is the number demand planners quote.
The direction metrics catch systematic bias. The mean forecast error, MFE, is just mean(e), the average signed error, so it shows whether the misses lean high or low rather than how big they are. Bias percent is sum(e) / sum(A), the net error as a share of total demand, which puts the lean on a percent scale. RSFE, the running sum of forecast errors, is the cumulative total of the signed errors as you move through the periods, and it is the raw material of the tracking signal. A forecast can have a small MAD and a small MAPE and still run consistently low or high, which is exactly what these three numbers expose and the size metrics hide.
The tracking signal watches the bias drift over time. At each period the tracking signal is RSFE / MAD, the running sum of errors divided by the running mean absolute deviation, recomputed as the series grows. It counts how many MADs of one-directional error have piled up, so it climbs when the misses keep pointing the same way and stays near zero when they cancel. The control limits are +/-4, and some texts use +/-3; you set the limit in the tool and the default is 4. A tracking signal that stays inside the limits means the forecast is in control, one that is persistently positive means it keeps running low (under-forecasting), one that is persistently negative means it keeps running high (over-forecasting), and one that crosses the limit means the forecast is out of control and should be re-fit with a different method or different parameters.
Two further metrics round out the list. sMAPE, the symmetric MAPE, is the mean of 2*|e| / (|A| + |F|) as a percent, which puts the actual and the forecast in the denominator together so the measure is bounded and does not explode when an actual is small. MASE, the mean absolute scaled error, is the MAD divided by the mean absolute period-to-period change of the actuals, which is the error a naive forecast would make by just repeating the last value. MASE below 1 means the forecast beats that naive benchmark and above 1 means it does worse, and because it is scale-free it lets you compare accuracy across items of very different sizes. As a rule of thumb, lead with RMSE when large misses are costly, MAD for a robust demand-unit number and to feed the tracking signal, MAPE for a scale-free percent on a single clean series, WMAPE as the portfolio KPI that avoids the zero blow-up, and the bias, bias percent, and tracking signal to catch a forecast that leans one way.
What forecast error is and why the sign matters
Forecast error is the gap between what you predicted and what happened, measured one period at a time. In this tool it is e = A – F, and fixing that sign is the first thing to get right because it decides how you read every direction metric. A – F means the error is positive when demand beat the forecast and negative when demand fell short of it, so a run of positive errors is a forecast that keeps landing under actual demand. When you average those signed errors into the mean forecast error, a positive result says the forecast is biased low across the series, and a negative result says it is biased high. Keep that straight and the bias, the bias percent, the RSFE, and the tracking signal all read the same way; get it backwards and every direction call inverts.
The reason the sign is worth this much attention is that the two kinds of miss have different costs. A forecast that runs low, positive bias here, tends to leave you short of stock, with lost sales and expedited orders. A forecast that runs high, negative bias, tends to leave you with excess stock, carrying cost, and markdowns. The size metrics treat both the same because they take absolute values or squares, so they cannot tell you which problem you have. Only the signed metrics can, and only if you know which direction a positive number points. This tool states the convention on the page and in the verdict so there is no ambiguity: positive is under-forecasting, negative is over-forecasting.
It helps to separate two questions the metrics answer. The first is how big the typical miss is, which is a question of accuracy and is answered by MAD, RMSE, MAPE, and WMAPE. The second is whether the misses lean one way, which is a question of bias and is answered by the mean error, the bias percent, and the tracking signal. A good forecast is accurate and unbiased, so the average miss is small and the misses scatter evenly above and below. A forecast can be accurate but biased, where the misses are small but keep pointing the same way, and that is the case the tracking signal is built to catch, because a small steady lean accumulates into a real error over time even when no single period looks bad.
MAD, RMSE, MAPE, and WMAPE, and when to use each
The four accuracy metrics answer the same question in different units, and each has a job it does best. MAD is in demand units and treats every miss in proportion to its size, so it is the plain, robust number for how far off the forecast is on average, and it is the denominator the tracking signal needs. RMSE is also in demand units but squares the errors before averaging, so it grows faster than MAD when a few misses are large; the gap between RMSE and MAD is itself a signal that the errors are uneven, with a few big ones doing most of the damage. Use RMSE when a large miss is much more expensive than several small ones, which is common when a stockout or an overstock has a step cost rather than a linear one.
MAPE and WMAPE move from units to percent so you can compare across items of different sizes. MAPE is the simple average of the per-period percent errors, which makes it easy to explain, but it has the two failings already noted: it is undefined on a zero actual and it over-weights small actuals, so a single quiet period with a big percent miss can dominate the average. WMAPE weights by volume instead, dividing the total absolute error by the total actual demand, so a busy period counts for more than a quiet one and a zero period does not break anything. On a single clean series with no zeros and no tiny values, MAPE and WMAPE tell nearly the same story; on an intermittent or mixed series they can diverge sharply, and WMAPE is the one to trust.
The practical rule is to read WMAPE as the headline and keep the others for context. Forecast accuracy of 100 minus WMAPE is the number to report for a portfolio or a mixed series because it is volume-weighted and stable. MAPE is fine as the accuracy figure for one clean, non-zero series and is worth showing because so many people expect it. MAD and RMSE give the miss in the actual units of the problem, which is what an inventory or capacity decision needs, and the spread between them flags whether the errors are even or lumpy. On the default series MAD is 11.67, RMSE is 12.58, MAPE is 11.29%, and WMAPE is 11.11%; the four sit close together, which itself says the errors are moderate and even, with no single period dominating.
Bias, RSFE, and the tracking signal
Bias is the tendency of a forecast to sit on one side of demand, and three numbers here measure it. The mean forecast error is the average signed error in demand units, so on the default series MFE is +1.67, meaning the forecast runs about 1.67 units low in a typical period. Bias percent is the same lean as a share of total demand, +1.59% on the default series, which is small. RSFE is the running total of the signed errors, and it is the one that grows: as the periods accumulate their errors of -10, +20, -5, +10, +10, -15, the RSFE moves -10, 10, 5, 15, 25, 10, ending at 10. A forecast with balanced errors keeps its RSFE bouncing around zero; a biased forecast lets it drift steadily away.
The tracking signal turns that drift into a monitored number. It is RSFE / MAD at each period, so it expresses the accumulated one-directional error in units of the typical miss. Dividing by the MAD is what makes it comparable across items: a signal of 3 means the cumulative error is three typical misses in one direction, whatever the size of the item. The control limits at +/-4 are the trip wires. Inside them the forecast is judged in control, its bias small enough to be noise. Cross +4 and the forecast has been running low long enough that the drift is real, cross -4 and it has been running high, and either way the message is that the method is no longer tracking demand and needs to be re-fit. Some organizations tighten the limit to +/-3 for a faster alarm, which is why the tool lets you set it.
Reading the tracking signal per period matters as much as its final value. It reacts to accumulated bias, not to a single bad period, so a lone large miss that reverses next period barely moves it, while a string of smaller misses all pointing the same way pushes it steadily toward a limit. On the default series the running signal moves -1.00, 0.67, 0.43, 1.33, 2.27, 0.86: it climbs toward period 5 as three positive errors stack up, then eases back when the last period misses low, and it never approaches +/-4. That shape is exactly what you want, a signal that wanders inside the limits rather than marching to one edge, and the per-period column in the table lets you see the march start before the final number would.
Reading the control limits and the verdict
The chart plots the tracking signal period by period with the +/-limit drawn as two horizontal lines, so the question is simply whether the signal line stays between them. When it does, the forecast is in control and the accuracy metrics are the whole story. When the signal touches or crosses a line, the forecast has a bias problem that the average error size will not show, and the fix is not a smaller error but a different method or different parameters. The direction of the crossing tells you which way to look: a break above +4 is persistent under-forecasting, so the forecast needs to come up, and a break below -4 is persistent over-forecasting, so it needs to come down.
The verdict below the metrics puts this in words so you do not have to assemble it yourself. It states the accuracy from 1 minus WMAPE and grades it in plain terms, reports whether the bias is small or material and which direction it leans, and says whether the tracking signal stayed inside the limits. On the default series it reads that accuracy is 88.89 percent, that the bias is small at 1.59 percent so the over and under errors roughly cancel, and that the tracking signal stays within +/-4 so the forecast is in control. Read the verdict as the summary and the metrics as the detail: the verdict tells you whether to act, and the metrics tell you where the problem is if there is one.
A period that crosses your limit turns red in the per-period table, which makes a mid-series break easy to spot even when the final tracking signal has settled back inside the limits. That matters because the signal can spike past a limit and then recover as later errors reverse, and the ending value alone would hide the episode. If a row is red, the forecast went out of control at that point in the history, and it is worth knowing whether the method was struggling then even if it looks fine now. The chart and the red rows together show both the current state and the path it took to get there.
sMAPE and MASE, the bounded and the scaled metrics
sMAPE and MASE exist to fix specific weaknesses in the plain percent and the plain average. sMAPE, the symmetric MAPE, puts both the actual and the forecast in the denominator, mean of 2*|e| / (|A| + |F|), so it does not blow up when an actual is close to zero the way MAPE does, and it is bounded, which keeps a single wild period from dominating. On the default series sMAPE is 11.30%, almost the same as the MAPE of 11.29%, because the series has no small or zero actuals to pull them apart; the two diverge only when the denominator matters, which is precisely the intermittent case where MAPE misleads. Read sMAPE as a steadier version of MAPE for series that dip toward zero.
MASE scales the error against a benchmark instead of against the actuals. The benchmark is the naive-1 forecast, which just carries the last actual forward, and its typical error is the mean absolute period-to-period change of the actuals. MASE is the MAD divided by that number, so it says how the forecast compares to doing nothing clever. On the default series the actuals change by an average of about 28 units from one period to the next, so MASE is 11.67 / 28 = 0.42, well below 1, meaning the forecast makes less than half the error the naive forecast would. Below 1 beats naive, above 1 is worse than naive, and 1 is a tie.
The reason MASE is worth the extra step is that it is genuinely comparable across items. A percent metric like MAPE still depends on the shape of the series, and a unit metric like MAD depends on the size of the item, so neither lets you rank a high-volume SKU against a low-volume one cleanly. MASE removes both by measuring the forecast against the same-series naive benchmark, so a MASE of 0.5 on a big item and a MASE of 0.5 on a small item mean the same thing: each cuts the naive error in half. When you need to rank many items by how well they are being forecast, MASE is the metric that puts them on one scale, and the tool reports it alongside the others so you can use it directly.
Measuring seasonal or trended forecasts
The metrics here do not care how the forecast was made, only how well it matches the actuals, so a seasonal or trended forecast is graded the same way as a flat one. What changes is what a bias or an out-of-control tracking signal is telling you. If you feed in a forecast that ignores a trend, the errors will lean steadily one way as the trend pulls demand away from the flat forecast, and the tracking signal will march toward a limit; the fix is not a smaller error but a method that carries the trend. If you feed in a forecast that ignores a season, the errors will swing with the calendar, large and positive in the busy season and large and negative in the quiet one, and while they may cancel in the bias they will inflate MAD and RMSE.
That is why this tool sits at the end of the forecasting workflow rather than the start. Generate the forecast in the method that fits the demand, then paste the actual and forecast columns here to check the fit. A trend needs a trend method, so a series climbing or falling steadily belongs in the Linear Regression Forecast Calculator or in the Holt version of the Exponential Smoothing Calculator. A repeating calendar pattern needs the Seasonal Index Calculator, which removes the season, fits the trend underneath, and adds the season back. A level with no trend or season is the home of the Moving Average Calculator and the level version of exponential smoothing. Score any of those forecasts here, and if the tracking signal breaks or the bias is large, the break itself points to which of those methods the demand actually needed.
When you compare two candidate forecasts for the same demand, score each here and read the metrics side by side. RMSE and MAD say which forecast misses less on average, the bias and tracking signal say which one leans and drifts, and MASE says which one beats the naive benchmark by more. A forecast that wins on error size but loses on bias is worth a second look, because a biased forecast will keep drifting even if its current errors are small. The point of the full metric set is that no single number decides it; the accuracy metrics rank the size of the miss and the direction metrics rank the reliability, and a forecast you trust does well on both.
Preparing clean paired data
The metrics are only as good as the pairing behind them, so a little care with the two columns pays off. Line the actual and the forecast up period by period, oldest first, so the first actual matches the first forecast and the tracking signal accumulates in time order. The columns must be the same length, because a missing value in either shifts every later pair out of alignment and quietly corrupts every metric from that point on. Paste each column straight from a spreadsheet, one value per line, and check that the counts match before you read the result.
Decide what to do about zeros and gaps before you paste. A zero actual is fine for the absolute metrics and for WMAPE, which use it directly, but it breaks MAPE, which divides by the actual, so the tool skips those periods for MAPE and shows the count it skipped. If your demand is intermittent with many zeros, lead with WMAPE and the absolute metrics and treat the MAPE as unreliable. A genuine gap, a period with no data at all, is different from a zero and should not be entered as one; either fill it with an estimate or leave that period out of both columns so the pairing stays intact.
Use actual demand rather than shipped or sold quantity where the two differ, on the actual side as much as anywhere. A period that stocked out records lower sales than the demand that was really there, so scoring the forecast against the censored figure understates the error and can hide a forecast that was actually too low. If you know a period was constrained, score against an estimate of true demand rather than the truncated number. Keep the spacing even, one period per row with no mixed intervals, so the running tracking signal advances one real period at a time, and make sure both columns cover the same span before you read the verdict.
Five worked examples
Example 1: the default series, the full metric set
This one shows the whole panel on one series so the numbers are transparent. The actuals are 100, 120, 90, 110, 130, 80 and the forecasts are 110, 100, 95, 100, 120, 95, so the errors e = A – F are -10, +20, -5, +10, +10, -15. From those, MAD is the mean of the absolute errors, (10 + 20 + 5 + 10 + 10 + 15) / 6 = 11.67, MSE is 158.33, and RMSE is its square root, 12.58. MAPE is 11.29% and WMAPE is sum(|e|) / sum(|A|) = 70 / 630 = 11.11%, so forecast accuracy is 88.89 percent by WMAPE or 88.71 percent by MAPE. The mean error MFE is +1.67, bias percent is +1.59%, RSFE ends at 10, and the tracking signal is 10 / 11.67 = 0.86, sMAPE is 11.30% and MASE is 0.42. The lesson is that the forecast is off by about 11.67 units on average, which is 11.11 percent of volume, and it runs a touch low with a positive bias, but the small bias and a tracking signal of 0.86 well inside +/-4 mean it is effectively unbiased and in control.
Example 2: reading the per-period tracking signal on the same series
This case keeps the default series and follows the tracking signal period by period, because the final value hides how it got there. The RSFE accumulates the signed errors: after period 1 it is -10, then 10, 5, 15, 25, and back to 10, and the running tracking signal is the RSFE divided by the running MAD at each step, which gives -1.00, 0.67, 0.43, 1.33, 2.27, 0.86. The signal climbs toward period 5, where three positive errors in a row have stacked the RSFE up to 25, and then it eases back when the final period misses low by 15 and pulls the RSFE down to 10. The lesson is that the tracking signal reacts to accumulated one-directional error rather than to any single period, so it rises as same-direction misses pile up and falls when they reverse, and here it peaks at 2.27 in period 5 and never comes close to the +/-4 limit.
Example 3: a biased, out-of-control forecast
This case shows what a breach looks like. The actual is 100 in every period and the forecast is 90 in every period, over 8 periods, so every error is A – F = +10, exactly the same each time. The MAD stays at 10 because every absolute error is 10, and the RSFE grows 10, 20, 30, and so on, so the running tracking signal is RSFE / MAD = the period number itself: 1, 2, 3, 4, 5, and it crosses +4 at period 5. The size metrics look calm, MAD 10 and MAPE 10%, and no single period is alarming, yet bias percent is +10% and the tracking signal marches straight to the limit. The lesson is that a small but consistent one-directional miss is invisible in the per-period MAPE and yet drives the tracking signal out of control; the verdict flags under-forecasting and says to re-fit, because the forecast is 10 units low every single period.
Example 4: zero-demand handling
This case shows why MAPE cannot be the headline on intermittent demand. The actuals are 0, 10, 10 and the forecasts are 5, 8, 12, so the errors are -5, +2, -2. MAPE has to divide by the actual, and the first actual is zero, so it skips that period and averages the two valid ones, (5/10 + 2/10) / 2 = 20%, which quietly drops the period-1 miss entirely. WMAPE uses every period because it divides totals: sum(|e|) / sum(|A|) = (5 + 2 + 2) / (0 + 10 + 10) = 9 / 20 = 45%. The two disagree sharply, and the reason is the zero. The lesson is that MAPE hides the period-1 miss because the actual is zero, while WMAPE and the absolute metrics count it, which is why WMAPE is the safer headline for intermittent demand and why the tool reports how many periods MAPE had to skip.
Example 5: comparing items with MASE
This case shows the metric built for ranking. MASE divides the MAD by the naive-1 benchmark, which is the mean absolute change of the actuals from one period to the next, the error you would make by just repeating last period. On the default series the actuals move 100, 120, 90, 110, 130, 80, and the absolute period-to-period changes average about 28 units, so MASE is 11.67 / 28 = 0.42. Because that is well below 1, the forecast makes less than half the error a last-value naive forecast would, so it clearly beats the benchmark. The lesson is that MASE is scale-free and comparable across items of very different sizes, so it is the metric to rank SKUs against each other: below 1 is good and beats naive, 1 is a tie, and above 1 is worse than doing nothing, which is a forecast worth replacing.
Three expert tips
Lead with WMAPE, not MAPE
Plain MAPE breaks on zero-demand periods and over-weights periods with small actuals, so it can read terrible on intermittent items for a reason that has nothing to do with the forecast. WMAPE weights by volume, uses every period, and does not blow up on a zero, so it reads as the accuracy of the whole portfolio rather than an average of percentages that a couple of quiet periods can dominate. That is why demand planners quote WMAPE and report 1 minus WMAPE as the headline accuracy, and why this tool puts it at the top. Keep MAPE for a single clean series with no zeros and no tiny actuals, where it and WMAPE agree anyway, and reach for WMAPE the moment the series is intermittent or mixes large and small periods. The default series shows them close, 11.11% against 11.29%, but the zero-demand example shows them at 45% against 20%, and that gap is exactly where the choice matters.
Read the bias and the tracking signal, not only the error size
MAD, RMSE, and MAPE tell you how big the average miss is but say nothing about which way it leans. The mean error and the bias percent show whether the forecast runs high or low, and the tracking signal watches the accumulated bias against the +/-4 control limits period by period. A forecast can post an acceptable MAPE and still be quietly biased, missing low a little every period, and that steady lean accumulates into a real shortfall that the average error size never reveals. The out-of-control example makes the point: MAD 10 and MAPE 10% look fine, yet the tracking signal marches to +4 by period 5 because the forecast is low every single time. When the size metrics look acceptable but the tracking signal drifts to a limit, that is the signal to change the method or its parameters, not to accept the forecast because the percent error looked reasonable.
Grade the method you used, then switch if it fails here
This tool measures a forecast; it does not make one. Generate the forecast in the method that suits the demand, the Moving Average, Exponential Smoothing, Linear Regression, or Seasonal Index calculator, then paste the actual and forecast columns here and read the verdict. A biased or out-of-control result points back to a method mismatch, and the shape of the error says which way to move. A steady one-directional drift usually means an unmodeled trend, which needs regression or the Holt version of exponential smoothing. Errors that swing with the calendar mean an unmodeled season, which needs the seasonal index. Lumpy, intermittent demand that neither of those tames needs a method built for it. The break you see here is not just a bad grade; it is a diagnosis that tells you which tool to go back to.
Common mistakes to avoid
The first mistake is getting the sign convention backwards. This tool uses e = A – F, so a positive bias is under-forecasting and a negative bias is over-forecasting; if you read it the other way, every direction call inverts and you will chase the wrong fix. The second is leading with MAPE on intermittent demand. MAPE skips zero-actual periods and over-weights small ones, so on a series with zeros or tiny values it can look far better or far worse than the forecast deserves, and WMAPE, which uses every period and weights by volume, is the number to trust there.
A third mistake is watching only the error size and ignoring the bias. MAD, RMSE, and MAPE cannot see a steady one-directional lean, so a forecast with an acceptable percent error can drift out of control unnoticed; read the mean error, the bias percent, and the tracking signal alongside the size metrics. A fourth is misaligned columns: a missing or extra value in either the actual or the forecast shifts every later pair and corrupts every metric, so check that the two counts match and that the periods line up before reading anything. A fifth is scoring against censored sales instead of true demand, which understates the error in any period that stocked out and can hide a forecast that ran low. Fix the sign, pick the right headline metric, read the bias, align the columns, and use real demand, and the metrics will hold up.
Where this calculator fits
It suits anyone who has a forecast in hand and needs to know how good it is. A demand planner can paste the actuals and the forecast, read the accuracy from 1 minus WMAPE, check the bias and the tracking signal for drift, and get a plain verdict on whether the forecast is good enough to plan on. An operations or inventory analyst can use the RMSE and MAD in demand units to size safety stock and can watch the tracking signal to catch a method that has started to run high or low before it costs a season of stockouts or overstock. A student or an analyst learning forecasting can see the whole error panel on one series, watch the tracking signal accumulate period by period, and understand why WMAPE and the bias metrics say things MAPE alone cannot.
This is the hub of the forecasting set, the tool that grades what the others produce. Generate a level forecast in the Moving Average Calculator and measure its error here. Generate a level or trend forecast in the Exponential Smoothing Calculator and measure it here. Fit a trend line in the Linear Regression Forecast Calculator and score the projection here. Build a seasonally adjusted forecast in the Seasonal Index Calculator and check it here. In each case the workflow is the same: make the forecast there, measure its error here, and let a bias or an out-of-control tracking signal tell you whether the method matched the demand. An XYZ Demand Classification calculator, which groups items by how variable their demand is so you can pick a method before you forecast, is a sibling in this silo and is not yet live. The Forecasting and Analytics hub gathers the forecasting tools as they go live.
Frequently asked questions
What does this forecast accuracy calculator do?
It grades a forecast against the actual demand. You paste two columns, the actual demand and the forecast, one value per line, and it pairs them period by period and returns the full error panel: MAD, MSE, RMSE, MAPE, WMAPE, the mean forecast error or bias, bias percent, RSFE, the tracking signal against its control limits, sMAPE, and MASE. The headline is forecast accuracy read as 1 minus WMAPE, and a plain verdict says whether the accuracy is good enough, which way the forecast leans, and whether the tracking signal has drifted out of control. It shows a per-period table with each error and the running tracking signal, turning any period that crosses your limit red, and it charts the tracking signal with the control limits drawn. On the default series of actual 100, 120, 90, 110, 130, 80 against forecast 110, 100, 95, 100, 120, 95, the errors are -10, +20, -5, +10, +10, -15, MAD is 11.67, WMAPE is 11.11%, the tracking signal is 0.86, and accuracy is 88.89 percent. Every value stays in your browser.
How is forecast error defined, A minus F or F minus A?
This tool uses e = A – F, the actual minus the forecast. With that sign a positive error means the actual beat the forecast, so the forecast was too low, and a negative error means the actual fell short, so the forecast was too high. Averaged over the series, a positive mean error means the forecast runs below demand on the whole, which is under-forecasting, and a negative mean error means it runs above, which is over-forecasting. Some textbooks define the error as F – A, which flips every sign, so a positive bias there would mean over-forecasting instead. The choice does not change the size metrics, because MAD, RMSE, MAPE, and WMAPE take absolute values or squares, but it does change how you read the mean error, the bias percent, and the tracking signal. Since this tool uses A – F throughout and states it in the verdict, read a positive bias here as the forecast running low.
What is the difference between MAD, RMSE, MAPE, and WMAPE?
They measure the size of the miss in different units. MAD, the mean absolute deviation, is the mean of the absolute errors in demand units, and it is the same number as the MAE. RMSE is the square root of the mean squared error, also in demand units, but because it squares before averaging it weights large misses more heavily, so it is the metric to lead with when a big miss costs much more than several small ones. MAPE is the mean of the per-period percent errors, easy to read but undefined on a zero actual and prone to over-weighting small actuals. WMAPE is the total absolute error divided by the total actual demand as a percent, so it weights by volume and uses every period with no blow-up on zeros. On a single clean series they agree closely; on intermittent or mixed demand WMAPE is the reliable headline, and forecast accuracy is 100 minus WMAPE.
What is the tracking signal and what are the control limits?
The tracking signal is the running sum of forecast errors divided by the running mean absolute deviation, RSFE / MAD, recomputed at each period. It measures how many typical misses of one-directional error have accumulated, so it climbs when the forecast keeps missing the same way and stays near zero when the errors cancel. The control limits are +/-4, and some texts use +/-3; you set the limit in the tool and the default is 4. A tracking signal inside the limits means the forecast is in control, a persistently positive one means it keeps running low (under-forecasting), a persistently negative one means it keeps running high (over-forecasting), and crossing a limit means the forecast is out of control and should be re-fit. The tool charts the signal with the limit lines drawn and turns any period that crosses the limit red in the per-period table, so a mid-series breach is easy to spot even if the final value settles back inside.
What does a positive bias mean here?
Because the error is e = A – F, a positive mean error means the actual came in above the forecast on average, so the forecast was too low and the demand kept beating it. That is under-forecasting, and its usual cost is running short of stock, with lost sales and expedited orders. A negative mean error is the opposite: the forecast ran above demand, which is over-forecasting, and its usual cost is excess stock, carrying cost, and markdowns. On the default series the mean forecast error is +1.67 and the bias percent is +1.59%, both small and positive, so the forecast leans a touch low but not enough to matter. The size metrics cannot tell you which way a forecast leans because they discard the sign, so read the mean error, the bias percent, and the tracking signal whenever you need to know the direction of the miss and not just its size.
Why is WMAPE better than MAPE for intermittent demand?
Because MAPE divides by the actual in each period, and intermittent demand has periods with zero or very small actuals. A zero actual makes the per-period percent undefined, so MAPE skips that period entirely and can hide a real miss, and a small actual makes the percent huge, so one quiet period can dominate the average and make the forecast look far worse than it is. WMAPE avoids both by dividing the total absolute error by the total actual demand, sum(|e|) / sum(|A|), so it weights each period by its volume and uses every period, including the zeros. The zero-demand example shows the gap: on actual 0, 10, 10 against forecast 5, 8, 12, MAPE skips the first period and reports 20%, while WMAPE counts all three and reports 45%. For any series with zeros or a mix of large and small periods, WMAPE is the number to trust and 1 minus WMAPE is the accuracy to report.
What is the difference between MAD and RMSE?
Both are in demand units, but they weight the misses differently. MAD is the mean of the absolute errors, so every miss counts in proportion to its size, which makes it a robust, plain number for how far off the forecast is on average and the right denominator for the tracking signal. RMSE is the square root of the mean squared error, and because it squares each error before averaging it gives extra weight to large misses, so a few big errors pull it up more than they pull up the MAD. The gap between them is informative: when RMSE sits well above MAD, the errors are uneven and a handful of large misses are doing most of the damage, and when they are close, the errors are fairly even. Use RMSE when a large miss is much more costly than several small ones, and use MAD for a robust average and to feed the tracking signal. On the default series MAD is 11.67 and RMSE is 12.58, close together, which says the errors are moderate and even.
What does MASE tell me and when should I use it?
MASE, the mean absolute scaled error, compares the forecast to a naive-1 benchmark that just repeats the last actual. It is the MAD divided by the mean absolute period-to-period change of the actuals, so it says how the forecast stacks up against doing nothing clever. Below 1 the forecast beats the naive benchmark, above 1 it does worse, and 1 is a tie. On the default series the actuals change by an average of about 28 units period to period, so MASE is 11.67 / 28 = 0.42, meaning the forecast makes less than half the error the naive forecast would. Use MASE when you need to compare accuracy across items of very different sizes, because it is scale-free: a MASE of 0.5 means the same thing on a large SKU and a small one, each cutting the naive error in half. That makes it the metric to rank many items on one scale, which a unit metric like MAD or even a percent like MAPE cannot do cleanly.
What is sMAPE and how does it differ from MAPE?
sMAPE, the symmetric MAPE, is the mean of 2*|e| / (|A| + |F|) as a percent. The difference from MAPE is the denominator: MAPE divides by the actual alone, so it is undefined on a zero actual and explodes when the actual is small, while sMAPE divides by the actual and the forecast together, which keeps the denominator away from zero and bounds the measure so no single period can dominate. On a clean series with no small or zero actuals the two are almost identical, which is why on the default series sMAPE is 11.30% against a MAPE of 11.29%. They diverge only when the actual runs small, which is exactly the intermittent case where MAPE misleads. Read sMAPE as a steadier version of MAPE for series that dip toward zero, though for a portfolio KPI WMAPE is still the usual headline because it weights by volume.
How many periods do I need to score a forecast?
You can compute the metrics on as few as a couple of paired periods, but the tracking signal and the bias need a reasonable run of history to mean anything. A handful of periods gives you MAD, RMSE, MAPE, and WMAPE that describe the misses you have, but the tracking signal needs several periods to accumulate before it can show a drift, and the bias needs enough periods for a genuine lean to separate from random scatter. As a rule, score at least eight to twelve periods before you read much into the tracking signal, and more is better because a longer history makes both the accuracy and the bias estimates steadier. The columns must be the same length and lined up oldest first, so the running tracking signal advances one real period at a time, and any gap in either column should be resolved before you paste rather than left to shift the pairing.
How does the tool handle zero values?
It depends on the metric. A zero actual is used directly by the absolute metrics, MAD, MSE, and RMSE, and by WMAPE, which divides totals, so none of those break on a zero. MAPE is the exception, because it divides by the actual in each period, so a zero actual makes that period’s percent undefined; the tool skips those periods for MAPE and shows how many it skipped, so you know the MAPE is computed on fewer periods than the rest. sMAPE is more robust because it divides by the actual and the forecast together, so it survives a zero actual as long as the forecast is not also zero. The practical takeaway is that on a series with zeros you should lead with WMAPE and the absolute metrics and treat the MAPE as partial. A genuine gap, a period with no data at all, is not the same as a zero and should not be entered as one; fill it or leave that period out of both columns.
My MAPE looks fine but the tracking signal broke. What does that mean?
It means the forecast is biased even though its average percent error is acceptable. MAPE, like MAD and RMSE, measures the size of the miss and discards the direction, so a forecast that misses low by a small amount every single period can post a reasonable MAPE while quietly running below demand the whole time. The tracking signal catches exactly that, because it accumulates the signed errors and divides by the typical miss, so a steady one-directional lean pushes it toward a limit even when no single period looks bad. The out-of-control example shows it: actual 100 against forecast 90 every period gives a MAPE of 10%, which looks fine, yet the tracking signal marches to +4 by period 5 because the forecast is 10 units low every time. When you see this, do not accept the forecast on the strength of the percent error; the broken tracking signal is telling you to change the method or its parameters so the forecast stops leaning.
Which forecasting tool should I use before this one?
The one that matches the shape of your demand, because this tool measures a forecast rather than making it. For a level that drifts without a clear trend, use the Moving Average Calculator or the level version of the Exponential Smoothing Calculator, then score the result here. For a steady trend up or down, use the Linear Regression Forecast Calculator or the Holt version of exponential smoothing. For a repeating calendar pattern, use the Seasonal Index Calculator, which removes the season, fits the trend underneath, and adds the season back. Generate the forecast in whichever fits, paste the actual and forecast columns here, and read the verdict. If the tracking signal breaks or the bias is large, the shape of the error points back to the right method: a steady drift means an unmodeled trend, calendar-shaped swings mean an unmodeled season, and lumpy demand that neither tames needs a method built for intermittence. This tool is the hub that grades all four, so it is where you check whether the method you chose actually fit.
Is the tool free, and does it work in my browser?
Yes to both. The forecast accuracy calculator is free with no sign-up, and every calculation runs in your browser, so the actual and forecast values you enter are never sent to a server, stored, or shared. You can download a PDF of the result, export a CSV, or share a summary on WhatsApp. It pairs your two columns period by period, computes MAD, MSE, RMSE, MAPE, WMAPE, the mean error and bias percent, RSFE, the tracking signal against the control limit you set, sMAPE, and MASE, reads out forecast accuracy as 1 minus WMAPE, shows a per-period error table with the running tracking signal, and charts the tracking signal with the limit lines drawn. It is a measurement and analysis tool, so use it to judge a forecast and to catch bias and drift, and read the accuracy, the bias, and the tracking signal together before you decide whether the forecast is good enough to plan on.
More forecasting and analytics calculators
The Moving Average, Exponential Smoothing, Linear Regression Forecast, and Seasonal Index calculators are live and feed this one directly: generate a forecast in any of them, then measure its error here. The remaining sibling is on the way and is not yet live, so it is listed for reference rather than linked.
The forecasting tools work as a set, and this one sits at the end of the workflow. Make a forecast in the Moving Average, Exponential Smoothing, Linear Regression Forecast, or Seasonal Index calculator, then measure its error here with MAD, RMSE, MAPE, WMAPE, the bias, and the tracking signal. When a bias or an out-of-control tracking signal shows up, the shape of the error points back to which method the demand actually needed. The Forecasting and Analytics hub gathers the forecasting tools as they go live.
Sources, disclaimer, and editorial transparency
The relationships used here are standard forecast-accuracy and demand-planning practice. A forecast is scored against actual demand over n paired periods with the error e = A – F, actual minus forecast, so a positive mean error is under-forecasting and a negative mean error is over-forecasting. MAD = mean(|e|), which equals the MAE; MSE = mean(e squared); RMSE = square root of MSE; MAPE = mean(|e| / |A|) as a percent, undefined on a zero actual and so skipped there; WMAPE = sum(|e|) / sum(|A|) as a percent; and forecast accuracy = 100 – WMAPE (or 100 – MAPE). The mean forecast error MFE = mean(e), bias percent = sum(e) / sum(A), and RSFE is the running sum of the signed errors. The tracking signal = RSFE / MAD is recomputed each period with the running MAD and compared to control limits of +/-4 (some texts use +/-3). sMAPE = mean(2*|e| / (|A| + |F|)) as a percent, and MASE = MAD divided by the mean absolute period-to-period change of the actuals, the naive-1 benchmark, so MASE below 1 beats naive. The worked-example numbers are computed from the series shown: the default series of actual 100, 120, 90, 110, 130, 80 against forecast 110, 100, 95, 100, 120, 95 gives errors -10, +20, -5, +10, +10, -15, MAD 11.67, MSE 158.33, RMSE 12.58, MAPE 11.29%, WMAPE 11.11%, MFE +1.67, bias% +1.59%, RSFE 10, a running tracking signal of -1.00, 0.67, 0.43, 1.33, 2.27, 0.86, sMAPE 11.30%, MASE 0.42, and forecast accuracy 88.89% by WMAPE or 88.71% by MAPE; the biased series of actual 100 against forecast 90 over 8 periods gives MAD 10, MAPE 10%, bias% +10%, and a tracking signal equal to the period number that crosses +4 at period 5; and the zero-demand series of actual 0, 10, 10 against forecast 5, 8, 12 gives a MAPE of 20% over the two valid periods against a WMAPE of 45% over all three. This calculator and guide are built and reviewed by the OpsCalculators team; see our Editorial Policy for how each tool is researched, built, and tested.
Results are accurate for the formulas and the series above, and they are a measurement and analysis estimate, not a guarantee of future demand. The metrics score the forecast you provide and cannot fix a forecast built with the wrong method; a large bias or an out-of-control tracking signal is a sign to re-fit with a method that matches the demand, not a defect in the scoring. Use e = A – F consistently, lead with WMAPE on intermittent or mixed demand, read the mean error, the bias percent, and the tracking signal alongside the error size, align the two columns period by period, and score against real demand rather than censored sales so a stockout does not hide a forecast that ran low. See our full Disclaimer. OpsCalculators.com is operated by MAFHH INTERNATIONAL LTD. Your inputs are processed in your browser and are never stored; see our Privacy Policy.