ML Systems Lab Open interactive version →
Intermediate 45 min read MASEMAPEpinball lossWinkler scoreDiebold-Mariano

Forecast Evaluation

MASE, pinball loss, Winkler score, Diebold-Mariano, rolling vs expanding window

MAPE is the default metric most teams use, and it has three distinct failure modes that make it actively misleading. It's undefined when actuals are near zero (division by zero). It systematically biases selection toward models that underpredict, because over-forecasts generate larger percentage errors than under-forecasts of equal absolute magnitude. And it's not comparable across series with different scales. MASE solves all three by normalising against the in-sample naïve forecast — scale-free, symmetric, defined when Y_t = 0, and interpretable (MASE < 1 means you beat the naïve baseline). But metric choice is the second problem. The first is backtesting design: a rolling-origin evaluation that faithfully simulates production conditions is the only reliable proxy for live performance. Fitting normalisation scalers on the full dataset including the test period is ubiquitous and inflates reported performance by 5-15% — not from overfitting the model, but from the preprocessing pipeline implicitly seeing the future.

Key points

Takeaway

MAPE misleads in three ways simultaneously: it's undefined for zero-valued series, penalises over-forecasting more than under-forecasting of equal absolute magnitude, and can't be compared across series with different scales. MASE solves all three and should be the default metric. The more consequential failure mode is backtesting design: fitting preprocessing (normalisation, scaling) on the full dataset including test data is a ubiquitous form of lookahead bias that inflates reported MASE by 5-15% — not from overfitting the model, but from the scaler implicitly encoding future level information.

Recap

Check your understanding

Q1. You have two models. Model A has MAPE = 8%, Model B has MAPE = 12%. Model A looks better. But 15% of your series have true values below 5. Which model should you trust and how do you decide?

Q2. You are comparing two forecasting models across 1,000 series. How do you statistically test which model is better, controlling for the multiple-series problem?

Q3. You fit your preprocessing pipeline (including Z-score normalisation) on the full training+test set combined, evaluate on the held-out test, and get MASE = 0.83. What is wrong and how large could the bias be?

Q4. A PM asks why your 95% prediction interval contains the actual value only 81% of the time in production. Which TWO statements are correct?

Try it interactively

ML Systems Lab is a free interview-prep platform for ML engineers — work through the full interactive module, quizzes, and drills.

Open ML Systems Lab →