The model that stops where the evidence stops.
This page shows the raw statistical output: three quarterly series, each with 80% and 95% bands and a regime flag. Everything lives in static JSON (forecast/forecast-output.json), generated by forecast/forecast.py. The browser computes nothing — it only displays.
Three series, three horizon steps
Loading from forecast-output.json…
How the published claims have done
Every forecast this page publishes is frozen in an append-only ledger and later scored against realised values: absolute error, pinball loss across the published band quantiles, and empirical coverage of the 80% and 95% bands against their nominal rates. The honest state today: nothing has matured yet. Realised-value ingestion is curated manually — until a target quarter closes and its value is recorded, every step below reads awaiting resolution. The scorer is proven against fixed fixtures (tests/) before real outcomes accrue.
Loading scorecard.json…
Every edition we ever published
Forecasts cannot be quietly rewritten here. Each published edition is frozen as an immutable, content-addressed claim (id HSF-…) in forecast/ledger.json, rebuilt from the repository's git history. A newer edition supersedes an older one — it never erases it. Superseded claims stay on this page and stay in the scorecard.
Loading ledger.json…
What sits under the hood
Holt, damped (phi=0.8)
For series with 3–4 quarterly points, the full ETS/SARIMA + exogenous specification (forecasting-methods.md item 5) is not executable. The card recipe falls back to Holt with a damped trend — the most conservative smoother that still holds a direction.
Backtest selection, rolling origin
Alpha per series via one-step rolling-origin backtest. Sigma from residuals; 95% band = 1.96·sigma, 80% band = 1.2816·sigma, with a z-fallback when n_resid<5. Backtest MAE is shown next to every outcome.
Static JSON, monthly refit
No client-side modelling: forecast.py runs in the nightly pipeline and writes forecast-output.json. The page is a rendering, not a simulator. Beyond Q+3 the scenario outlook takes over — see Outlook 2027–2029.
What the model refused
77 series delivered, 3 forecast, 74 skipped. A series with fewer than three dated numeric points is not extrapolated — the reason per series is listed below. Refusal is a result.
Loading…