Ledger
The forecast that grades itself.
Every forecast below is pre-registered: committed as an immutable, hash-stamped JSON file before the target period's data exists, then graded in public once it arrives. A verdict is either SCORED or UNEVALUABLE — and UNEVALUABLE is terminal: late beyond its grace window, discontinued, redefined, or vintage-conflicted, it can never later become SCORED. Any correction is appended, dated, alongside the original — never edited into it. This page runs no backtests, ever: a foundation forecaster's pretraining can already contain the very history a backtest would score it against, so a backtest proves nothing about forward skill on data the model may have already seen — only real, dated precedence, committed before the fact, can.
Committed before the data exists
Each series below carries a decile forecast fan — nine quantiles (0.1 through 0.9) registered for the next unpublished period, before that period's number exists anywhere. The shaded bands nest the 80/60/40% intervals around the median; the dashed lines mark this cycle's two registered baselines (naive: last observed value; rw-drift: naive plus the recent trend) for comparison once grading happens. Every number on a card is stored — committed at the timestamp shown, hash-stamped, and re-verified live in your browser against that hash below each card.
Loading registry…
Graded in public
Once a target period's data is published, its registration is scored: pinball loss across all nine deciles, whether the 80% interval actually contained the outturn, and the median forecast's absolute error against the two registered baselines. Everything below is live — computed in your browser, right now, from the registry embedded in this page, by the same scoring kernel shipped in ledger.js and covered by the self-test in section IV.
Computing…
Append-only
Every registration this instrument has ever committed, in one table, oldest first. Nothing here is ever deleted or rewritten — a wrong forecast stays visible exactly as filed; only corrections (below the table, dated, appended) can add context after the fact.
| ID | Series | Target | Committed | SHA-256 | Status |
|---|
Corrections
How scoring works
Pinball (quantile) loss scores one decile q against the realised outturn y and the registered forecast fq:
pinball_mean is the average of Lq over all nine registered deciles. interval80_hit is true iff f0.1 ≤ y ≤ f0.9 — whether the registered 80% interval actually contained what happened. abs_err_median is |y − f0.5|, reported alongside the naive and random-walk-with-drift baselines' own absolute errors (never pooled into one "skill score" — a point-forecast absolute error and a nine-decile pinball mean are not the same unit, so they are shown side by side, not divided into each other).
Vintage policy (verbatim). "first-published value at first successful fetch on/after release date scores; later revisions never re-open a verdict." A statistical office restating an old quarter's figure next year does not reopen last year's already-SCORED verdict — the number that was live on the day this instrument checked is the number that gets graded, permanently.
Self-test
Re-verify, right now, in this browser: the pinball-loss closed forms, the interval-hit boundary cases, the canonical-JSON + SHA-256 hash (round-trip and tamper detection), the registry aggregates on a synthetic mini-registry, and — using the real embedded registry, not a synthetic stand-in — that every registration's sha256 field genuinely matches a fresh hash of its own fields.
What is stored, measured, live
stored — registered and committed: the forecast deciles, the baselines, the engine/checkpoint, the hash. Written once, at registration time, and never edited. measured — a fetched outturn: the real-world number, once published, that a registration is graded against. live — computed in your browser from the embedded registry at the moment this page renders: every scoreboard aggregate, every hash re-verification, every self-test result.
Registry: github.com/MagicBundle/ledger — every registration, outcome and correction is a public commit. The repository's commit graph, not any field inside a file, is the timestamp that makes a forecast pre-registered.
Contact the author: info@iterativeintelligence.io