Analytics ยท honest forecasting

demand-forecast-pipeline

A point forecast hides the decision risk. This pipeline reports what the backtest missed and turns those misses into empirical intervals.

Public · synthetic demo
The problem

A single accuracy score cannot show how uncertainty changes by horizon.

Choosing a model on one split can reward luck. Assuming Gaussian error can make an interval look cleaner than the backtest evidence supports.

Input

A synthetic daily series with rolling-origin evaluation.

Main series: 730 observations
Forecast horizon: 14
Seasonal period: 7
Minimum training window: 60
Backtest stride: 7
Nominal interval target: 80%
The money shot

Backtest evidence selects the model and sets the interval width.

Chosen model sMAPE
3.094
Fold/horizon points
1333
Main-series interval width
26.27
Short-series interval width
46.75

The selected additive Holt-Winters baseline had reference MAE 9.042. The short, erratic series had 21 observations and a wider average interval than the 730-observation main series.

How it's verified

Every candidate sees the same rolling origins.

ModelBacktest sMAPEBacktest MAE
holt_winters_additive3.099.042
seasonal_naive3.4510.012
moving_average10.4231.426

The first forecast is 313.03 with an empirical 80% interval of 301.97–323.49, built from 96 backtest residuals.

Honest limitations

Backtest-shaped uncertainty can still fail after a regime change.

  • The candidates are simple baselines with fixed smoothing constants.
  • The intervals reuse backtest residuals; coverage is a calibration check, not independent validation.
  • No promotions, weather, price, missing-data handling, or outlier treatment enter the model.
  • The data is synthetic, and the future can differ from every rolling origin in the fixture.
The interval is evidence from past misses, not a guarantee about the future. jigonyoo.com · Back to hub