To our knowledge the only GB BESS forecast with a graded, pre-registered validation record — commitments in dated commits before outcomes were known.
| Year | Basis | Mean | P50 | P95 | Read |
|---|---|---|---|---|---|
| 2022 | synthetic | 2.8% | 3.7% | 7.0% | in-sample — all pass (crisis year) |
| 2023 | synthetic | 16.8% | 1.2% | 44.5% | P95 hot (scarcity knee) |
| 2024 | synthetic | 10.4% | 10.0% | 55.8% | mean/P95 hot |
| 2025 | synthetic | 12.0% | 8.2% | 59.4% | HELD-OUT — FAIL on P95 |
| 2025 | realised | 1.6% | 24.0% | 55.4% | HELD-OUT — best mean of any year; FAIL on P50/P95 |
| 2026H1 | synthetic | 1.4% | 23.0% | 55.6% | HELD-OUT WINDOW — first held-out mean PASS; FAIL on P50/P95 |
| 2026H1 | realised | 7.8% | 26.3% | 54.5% | HELD-OUT — FAIL on all three legs; completed under the frozen rules, published straight |
2025 was a moderate-gas, low-scarcity year: realised prices had a flat tail (P95/P50 ≈ 1.5) where the frozen stylised scarcity knee expects a steeper one (≈ 2.6–3.0). The knee is too convex for a calm year, so the model over-states the top of the distribution. The error is in the tail shape, not the level — the realised-2025 mean is the best of any backtest year (1.6%). The held-out 2026H1 window repeats the pattern: a hot P95 (55.6% synthetic / 54.5% realised) while the synthetic window mean transfers (1.4% — the first held-out mean pass in the record) and the realised completion misses cold (mean 7.8%, P50 26.3% — the model under-states the realised window) — realised P50 sat above the window mean, a top-heavy gas-cost distribution the frozen single-σ family cannot shape.
The body and the tail are coupled in the single-σ stylised curve family: you cannot flatten 2025's calm tail without regressing the 2022 energy-crisis tail it must also fit. With only one genuine scarcity year (2022) in the public record, there isn't enough tail data to fit a curve that's right for both regimes. This is a one-crisis-year data scarcity ceiling — more knobs would overfit, not fix it. 2026H1 graded exactly this diagnosis out of sample: the level machinery transfers (mean PASS), the shape does not (P50/P95 FAIL) — the fix is more crisis-regime data, not more shape degrees of freedom. A fifth pre-registered re-shape, fitted at all five windows, measured the same wall in 2026-07: candidates that fix the hot tail break the crisis-year fit — so it too was NOT adopted.
Every adoption rule was frozen in committed code before any held-out input was fetched — the git history proves the gap for both windows (2025; 2026H1 under protocol §14). True virgin hold-outs, graded once, published as-is.
Two independent optimisers implement the dispatch problem — CEMeridian (the production solver) and HiGHS — and every CI run cross-checks them to a 1e-6 relative objective tolerance, so results aren't an artefact of one implementation. That parity check is a build gate, not a per-run one: a run resolves a single solver and never dual-solves. What every solve does carry is the in-engine optimality audit plus the invariant suite (state-of-charge and power bounds, round-trip consistency, price sanity, the zero-storage fixed point) — any violation halts the run.
The realised-2025 mean is the best of any year (1.6%) and the 2026H1 synthetic window mean passes (1.4% — the record's first held-out mean pass). The 2026H1 realised completion misses its mean gate (7.8%) — but cold, like the P50 legs: the model under-states the realised window, the conservative direction. The hot gap stays confined to the upside tail you should not be banking anyway.
Cells fit to the targets they're graded against are labelled fit (in-sample), never a pass — so you always know which numbers are out-of-sample evidence.
Size downside on the P90 (exceedance, low) band and the 1.10× P90-DSCR covenant — both conservative by construction and unaffected by an over-stated upside P95. Treat the model's central case (mean/P50) as the planning number, the P90 as the bankable floor, and do not lean on a single high percentile for downside protection. The one place the model is optimistic is the one place a prudent financing never relies on. On the held-out 2026H1 window every central-case miss is cold — synthetic P50 £74.0/MWh vs realised £96.1; on the realised completion, mean £85.8 vs £93.1 and P50 £70.4 vs £95.5 — under-statements of the central case, not over-statements; the over-statement stays confined to the P95 upside tail. The full procedure for credit teams — P50 sizing, P90 covenant test, binding-year discipline — is written up in the underwriting note.