induwara.lk
induwara.lkData Science · Forecast Accuracy

MASE Calculator — Mean Absolute Scaled Error

Paste your training history, test actuals, and forecasts to get the Mean Absolute Scaled Error — a scale-free forecast-accuracy metric where below 1 beats the naïve baseline. Shows the forecast MAE, the scaling MAE, and a per-point breakdown. Seasonal support, no signup, in your browser.

By Induwara AshinsanaUpdated Jul 13, 2026
MASE Calculator
In-sample series, in order. Builds the naïve baseline.5 values
What actually happened over the holdout.3 values
Your model's predictions, same count as actuals.3 values

1 = non-seasonal (one-step naïve). Use 4 for quarterly, 12 for monthly, 7 for daily-weekly.

Examples
MASE
0.5714
cross-checked ✓
Verdict
Beats the naïve baseline
MASE < 1 — average error is smaller than the naïve forecast's.
Forecast MAE
1.0000
numerator · 3 terms
Scaling MAE
1.7500
naïve m=1 · 4 terms

Per-point test-set errors

#ActualForecast| error |
116151
215161
317161
Forecast MAE = mean of | error |1.0000

MASE = 1.0000 ÷ 1.7500 = 0.5714, where the denominator is the in-sample MAE of the m=1 naïve forecast over 4 steps.

Runs entirely in your browser — your numbers are never uploaded, logged, or stored. Method: forecast MAE scaled by the in-sample m-step naïve MAE, per Hyndman & Koehler (2006) and Forecasting: Principles and Practice (FPP3).

How it works

MASE (Mean Absolute Scaled Error), proposed by Rob Hyndman and Anne Koehler in 2006, measures forecast accuracy by dividing the forecast's error by the error a naïve forecast would have made on the training data. Because the scaling constant is fixed per series, MASE is unit-free and comparable across series with wildly different magnitudes — and, unlike MAPE, it is well defined even when actual values are zero. It is computed in three steps:

  1. Scaling factor (denominator). Take the in-sample MAE of the m-step naïve forecast on the training series y₁ … yₙ:scale = (1 / (n − m)) · Σₓ₋ₘ₋ₙ | yₜ − yₜ₋ₘ |For non-seasonal data (m = 1) this is simply the mean absolute first-difference of the training series — the error of a “same as last period” forecast.
  2. Forecast MAE (numerator).Take the mean absolute error of your forecasts fᵢ against the test actuals aᵢ over the h holdout points:MAE_f = (1 / h) · Σᵢ₋₁ᵣ | aᵢ − fᵢ |
  3. Scale it. Divide the two:MASE = MAE_f / scale

The interpretation, following Forecasting: Principles and Practice (FPP3): MASE < 1 means the forecast is on average more accurate than the in-sample one-step (or seasonal) naïve forecast; MASE = 1 matches it; MASE > 1 is worse. For a seasonal series, set m to the season length so the baseline becomes a seasonal naïve forecast (repeat the value from one season ago) rather than a one-step one.

One edge case matters: if the training series is perfectly flat, the naïve baseline makes no error, the scaling denominator is zero, and MASE is a division by zero. This calculator reports that explicitly instead of returning a misleading value. Every MASE it shows is also independently re-derived from the algebraically-equivalent aggregate form (n−m)·Σ|a−f| ÷ (h·Σ|yₜ−yₜ₋ₘ|) and the two routes are compared — when they agree the result is flagged “cross-checked”.

Worked examples

Non-seasonal (m = 1) → MASE 0.5714

Training
10, 12, 14, 13, 15
Test actuals
16, 15, 17
Forecasts
15, 16, 16
  1. First differences of training: |12−10|, |14−12|, |13−14|, |15−13| = 2, 2, 1, 2
  2. scale = (2+2+1+2) / (5−1) = 7 / 4 = 1.75
  3. Forecast errors: |16−15|, |15−16|, |17−16| = 1, 1, 1
  4. MAE_f = (1+1+1) / 3 = 1.0
  5. MASE = 1.0 / 1.75 = 0.5714 → below 1, beats the naïve baseline

Seasonal (m = 4, quarterly) → MASE 0.5000

Training
20, 30, 25, 35, 22, 32, 27, 37
Test actuals
24, 34
Forecasts
23, 33
Period m
4
  1. Season-apart differences: |22−20|, |32−30|, |27−25|, |37−35| = 2, 2, 2, 2
  2. scale = (2+2+2+2) / (8−4) = 8 / 4 = 2.0
  3. Forecast errors: |24−23|, |34−33| = 1, 1 → MAE_f = 1.0
  4. MASE = 1.0 / 2.0 = 0.5000 → beats the seasonal-naïve baseline

Boundary case (m = 1) → MASE exactly 1.0000

Training
1000000000, 1000000002.5, 1000000001
Test actuals
1000000003
Forecasts
1000000001
  1. First differences: |2.5|, |1000000001 − 1000000002.5| = 2.5, 1.5
  2. scale = (2.5 + 1.5) / (3−1) = 4.0 / 2 = 2.0
  3. Forecast error: |1000000003 − 1000000001| = 2 → MAE_f = 2.0
  4. MASE = 2.0 / 2.0 = 1.0000 → matches the naïve baseline exactly
  5. Shows MASE is scale-free: works the same at magnitude 10⁹ or 10

Frequently asked questions

Sources & references

The formulas and the worked examples on this page were last reconciled against Hyndman & Koehler (2006) and the FPP3 “Scaled errors” section on 2026-07-13. The calculator independently re-derives every MASE through an equivalent aggregate form, so a regression in the math surfaces immediately.

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] — most fixes ship within 24 hours.