Practical insights
- 1000published
- 25in review
- 8topic families
Results
- Use many rolling origins that span the seasons you care about, not one final holdout
A forecast model is chosen from a single holdout of the last eight weeks before peak season.
easydocumented fact - Report error by horizon and evaluate at the horizon the decision uses
A dashboard shows one pooled error for a 1-to-90-day forecast that feeds pricing decisions made 21 days before departure.
easydocumented fact - Compute WAPE at the level where actuals cannot sum to zero
WAPE is reported for every store-SKU-week cell and many cells are blank or infinite.
easypractitioner heuristic - Do not average MAPE across series of very different volumes
A portfolio report averages per-series MAPE, and a few slow movers make the whole forecast look broken.
easydocumented fact - Model one-off events as interventions and keep them out of learned seasonality
A city hosted a single major sports final, and hotel and flight demand spiked for one week.
easydocumented fact - Fit normalisation statistics at each cutoff, never on the full time series
A notebook standardises the whole series with its mean and standard deviation, then runs a rolling-origin backtest.
easydocumented fact - In direct models, keep every lag at least as long as the horizon it predicts
A direct model for 14-days-ahead demand uses lag 7 sales as a feature.
easypractitioner heuristic - Shift before rolling so window features exclude the target period
A 7-day rolling mean of sales is computed and joined to the same row as the target.
easydocumented fact - Prefer simple models on very short series and say how little the backtest can tell you
A new route has 30 weeks of history, and someone proposes a seasonal ARIMA with many parameters.
easydocumented fact - Measure forecast value added at every step, including human overrides
Planners adjust the statistical forecast every month, and nobody knows whether the adjustments help.
easypractitioner heuristic - Track forecast bias separately from accuracy
A forecast with acceptable MAE consistently runs below actual demand on high-season weeks.
easypractitioner heuristic - Try a simple average of diverse forecasts before building a model-selection layer
ETS, ARIMA and a gradient-boosting model each win on different series, and the team plans a meta-model to pick a winner per series.
easyempirical finding - Build an explicit time grid so missing periods are not mistaken for zeros or skipped
A route's daily table has a nine-day gap where no rows exist, and the lag-7 feature is computed with row offsets.
easypractitioner heuristic - End each backtest origin on a complete aggregation period
Daily bookings are rolled up to weeks, and the cutoff falls on a Wednesday; the training week's total contains three days and the test week begins mid-week.
easypractitioner heuristic - Build the naive benchmark at the production horizon from the origin value, not from the previous day
A 28-day-ahead model is compared with a naive baseline computed as yesterday's actual for every target day.
easydocumented fact - Retire sMAPE from forecast reports because of its asymmetry and its failure at zero
A report uses symmetric MAPE because it is bounded and the team believes it fixes MAPE's bias toward low forecasts.
easydocumented fact - Put a sampling error on measured interval coverage before calling a model miscalibrated
An 80% interval covered 74% of 50 backtest origins and the team wants to retune the model.
easypractitioner heuristic - Report how many series the new model beats the benchmark on, next to the average improvement
A candidate model improves average MASE over 2,000 series by 4% and the team proposes a full cutover.
easypractitioner heuristic - Take the seasonal difference first and let a seasonal-strength measure decide whether you need one
Daily bookings show a strong weekly pattern and a trend, and an analyst applies a first difference and then wonders why the weekly spikes are still there.
easydocumented fact - Let a damped trend compete with a linear trend whenever automatic forecasts run beyond a few periods
A monthly forecast for 1,000 route-level series is produced automatically, and a linear-trend Holt model projects 24 months of continued growth on routes that recently grew.
easydocumented fact - Convert monthly totals to per-day or per-trading-day rates before modelling seasonality
Monthly revenue for a retailer swings partly because months contain different numbers of trading days, and the seasonal model learns a short-February dip and a long-month bump as seasonality.
easydocumented fact - Check that the method tolerates gaps, and model systematic closures with dummies rather than interpolating them
A store's daily sales are missing on public holidays when it is closed, and the pipeline either fails inside an exponential smoothing fit or silently interpolates the closures.
easydocumented fact - Forecast a new route or product with a global model on its attributes instead of waiting for local history
A new route launches with three weeks of data, so a local seasonal model has nothing to estimate seasonal indices from.
easypractitioner heuristic - Give a boosted tree the same-weekday and same-season lags explicitly
A daily boosted model uses lags 1 to 7 and a rolling 7-day mean, and its Monday forecasts keep missing the Monday level after a holiday week.
easypractitioner heuristic