Frozen v1.1 against challenger tl-v2-candidate-1

Does any new idea beat the live model?

Every idea is a hypothesis until it improves forecasts on matches it was not tuned on. The rules were committed before any result (protocol). These are historical simulations, never part of the live record.

v1.1Decision: keep v1.1 live
0/7Ideas that passed validation
0.9444v1.1 log loss on untouched seasons; base rates 1.0593
1.16v1.1 calibration slope on untouched seasons (1 is ideal; above 1 means too cautious)
1140Matches in the untouched holdout

Ideas tested

Tuning seasons 2013-14, 2014-15, 2015-16, 2016-17

IdeaChange in log lossInterval (Bonferroni)Result
Low-score dependence (Dixon–Coles ρ)+0.0003-0.0013 to 0.0019rejected
Promoted-club prior−0.0023-0.0075 to 0.0029rejected
Championship-informed promoted prior+0.00420.0008 to 0.0079rejected
Club-specific home advantage−0.0000-0.0009 to 0.0007rejected
Short rest across competitions (EPL + UCL schedule; PARTIAL coverage)+0.0000-0.0005 to 0.0007rejected
Negative control: kickoff slot+0.0009-0.0018 to 0.0036rejected
Rating half-life−0.0010-0.0032 to 0.0012rejected

An idea is accepted only if the whole interval is below zero (better forecasts). The kickoff-slot idea is a deliberate negative control.

Frozen v1.1 against the candidate

Holdout A (out-of-period, untouched)

Neither model was tuned on these seasons. Scored once, after the candidate was frozen. 2017-18, 2018-19, 2019-20: 1140 matches on 328 match days.

MetricFrozen v1.1Candidate v2v2 − v1.1 (95% interval)Base rates
Three-way log loss (lower is better)0.94440.9444+0.0000 (-0.0000 to 0.0000)1.0593
Brier score, three-way0.55780.5578+0.0000 (-0.0000 to 0.0000)0.6399
Ranked probability score0.19250.1925+0.0000 (0.0000 to 0.0000)0.2313
Calibration slope (1 is ideal)1.161.16
Super Tips (frozen policy)662/932 (71%, expected 69%)662/932 (71%, expected 69%)
Pass rate18%18%
Market (closing odds) benchmarknot measured: no lawful archived odds present (see docs/v2/SOURCES.md)

Coverage: rest schedule complete for 0% of matches (no Europa League or cup data); 324 matches involved a promoted club (108 with Championship data). Intervals: paired bootstrap over match days.

Brier skill by market
Marketv1.1v2
1X2:HOME16.2%16.2%
1X2:DRAW2.5%2.5%
1X2:AWAY17.4%17.4%
DC:1X17.4%17.4%
DC:X216.2%16.2%
OU:OVER:2.51.9%1.9%
OU:UNDER:2.51.9%1.9%
OU:UNDER:3.51.9%1.9%
OU:OVER:1.51.2%1.2%
BTTS:YES0.2%0.2%
BTTS:NO0.2%0.2%
TEAM:HOME:OVER:1.511.5%11.5%
TEAM:AWAY:OVER:1.510.6%10.6%
TEAM:HOME:UNDER:0.55.4%5.4%
TEAM:AWAY:UNDER:0.57.1%7.1%

Holdout B (in-period, reused)

Not a clean holdout: v1.1 was tuned on 2022-24 and its rule chosen after seeing 2024-27. Reported for completeness. 2021-22, 2022-23, 2023-24, 2024-25, 2025-26, 2026-27: 1950 matches on 600 match days.

MetricFrozen v1.1Candidate v2v2 − v1.1 (95% interval)Base rates
Three-way log loss (lower is better)0.98090.9809+0.0000 (-0.0000 to 0.0000)1.0710
Brier score, three-way0.58360.5836+0.0000 (-0.0000 to 0.0000)0.6482
Ranked probability score0.20110.2011+0.0000 (0.0000 to 0.0000)0.2326
Calibration slope (1 is ideal)1.101.10
Super Tips (frozen policy)1145/1638 (70%, expected 69%)1144/1638 (70%, expected 69%)
Pass rate16%16%
Market (closing odds) benchmarknot measured: no lawful archived odds present (see docs/v2/SOURCES.md)

Coverage: rest schedule complete for 0% of matches (no Europa League or cup data); 554 matches involved a promoted club (554 with Championship data). Intervals: paired bootstrap over match days.

Brier skill by market
Marketv1.1v2
1X2:HOME13.9%13.9%
1X2:DRAW0.9%0.9%
1X2:AWAY13.1%13.1%
DC:1X13.1%13.1%
DC:X213.9%13.9%
OU:OVER:2.51.3%1.3%
OU:UNDER:2.51.3%1.3%
OU:UNDER:3.51.2%1.2%
OU:OVER:1.50.2%0.2%
BTTS:YES0.7%0.7%
BTTS:NO0.7%0.7%
TEAM:HOME:OVER:1.59.4%9.4%
TEAM:AWAY:OVER:1.56.0%6.0%
TEAM:HOME:UNDER:0.57.3%7.3%
TEAM:AWAY:UNDER:0.54.2%4.2%

v1.1 calibration on untouched seasons

0%10%20%30%40%50%60%70%80%90%0–10%: landed 6% of 125 (plausible 3–11%); model expected 7%0–10%n = 1256%10–20%: landed 13% of 514 (plausible 10–16%); model expected 16%10–20%n = 51413%20–30%: landed 25% of 1311 (plausible 23–28%); model expected 25%20–30%n = 131125%30–40%: landed 33% of 472 (plausible 29–37%); model expected 34%30–40%n = 47233%40–50%: landed 47% of 410 (plausible 42–51%); model expected 45%40–50%n = 41047%50–60%: landed 54% of 252 (plausible 47–60%); model expected 54%50–60%n = 25254%60–70%: landed 71% of 185 (plausible 64–77%); model expected 65%60–70%n = 18571%70–80%: landed 81% of 110 (plausible 73–87%); model expected 75%70–80%n = 11081%80–90%: landed 89% of 38 (plausible 76–96%); model expected 84%80–90%n = 3889%90–100%: landed 100% of 3 (plausible 44–100%); model expected 91%90–100%n = 3100%
Home, draw and away probabilities pooled, 2017-18, 2018-19, 2019-20. Dot: what actually happened. Band: plausible range for that sample size. Dark tick: what the model expected.

Promotion criteria

  • Not met: Holdout A log loss better, 95% interval excluding zero
  • Not met: Holdout A Brier and RPS not worse; calibration slope 0.9–1.1
  • Met: Holdout B not worse beyond noise (upper 95% bound of v2 − v1.1 below +0.002)
  • Not met: Forward test: ≥ 8 rounds of shadow forecasts, not worse (not started: shadow forecasting begins with Matchweek 10)
  • Not met: Owner approval, new model version, freeze-log entry (not requested)

Not tested, and why

  • Expected goals / shot quality: no lawful, documented, archived source reachable (docs/v2/SOURCES.md).
  • Team news and player impact: no player-level availability history; absences are shown as facts with zero effect.
  • Weather: no archived as-of forecasts available here; context only by design.
  • Betting odds as a benchmark: no archived closing odds present; market comparison not measured.
  • Head-to-head records: excluded by design: small samples, explained by team strength.
  • Europa League, Conference League and domestic cup congestion: no open historical data; rest is PARTIAL.

Generated 2026-10-31 10:32 UTC by npm run v2:evaluate. How the live model works.

Model comparison · Touchline Tips