An instrument · pre-registered forecasts · graded in public

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.

I · Open registrations

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…

II · Scoreboard

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…

III · The ledger

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.

IDSeriesTargetCommittedSHA-256Status

Corrections

Loading…
IV · Method & self-test

How scoring works

Pinball (quantile) loss scores one decile q against the realised outturn y and the registered forecast fq:

L_q(y, f_q) = (y − f_q)·q if y ≥ f_q = (f_q − y)·(1 − q) otherwise

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.

Not run yet.

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