Track record

How the models have done on matches they hadn't seen

Two engines, evaluated separately. The research model's results don't validate the app engine, and the other way round.

Archived reference model

Reference research model · pitchcast-research-v1

Run by the owner in Python on OpenFootball CC0 data. Settings (180-day half-life, ridge 12, low-score correction on) were chosen on 2024-25; 2025-26 stayed untouched until the final test. Refit: first calendar day of each month; exclude all training matches on or after cutoff, predict targets on or after cutoff.

ModelMatchesLog lossBrierAcc.
Research model (selected)3801.03740.624847.6%
League base rate3801.08290.655442.6%
Slow decay, no low-score correction3801.03630.623847.4%
Same model, no home advantage3801.04700.631745.8%

Held-out 2025-26, 380 matches. The slow-decay variant without the low-score correction scores slightly better here, so we make no claim that faster form weighting or the correction helps in general. Reported 6 Oct 2026, 16:41 UTC by owner (reference research model, Python).

Server engine used for new runs

Pitchcast app engine · pc-dc-1.0.0

The xG-assisted model blends historical chance quality with goals. Its 75% xG weight was selected on 2024/25 before evaluating the later seasons. Across 440 later-season matches, accuracy rose from 46.8% to 48.4%; log loss improved from 1.0485 to 1.0453. The gain is modest: the 95% week-bootstrap interval for the log-loss change includes zero. This is retrospective testing, not proof of future accuracy.

Executed 6 Oct 2026, 16:42 UTC · data through 2026-09-20

ModelMatchesLog lossBrierAcc.
Elo4301.04050.624347.4%
Plain Poisson4301.05100.633247.9%
League base rate4301.08530.657241.9%
Pitchcast DC (tuned)4301.04880.632147.0%

By season

2024/25 (tuning season)

ModelLog lossBrierAcc.
Elo0.99450.592353.2%
Plain Poisson0.98810.590652.4%
League base rate1.08470.658140.8%
Pitchcast DC0.97760.584452.4%

2025/26 (later-season test)

ModelLog lossBrierAcc.
Elo1.03820.622847.9%
Plain Poisson1.04940.632247.9%
League base rate1.08220.655042.6%
Pitchcast DC1.05000.633147.4%

2026/27 (later-season test)

ModelLog lossBrierAcc.
Elo1.05790.635744.0%
Plain Poisson1.06280.641048.0%
League base rate1.10920.673736.0%
Pitchcast DC1.04000.624244.0%

2026/27 contains only a few rounds — treat it as noisy.

Calibration

All home, draw and away probabilities from later-season test matches, in 10% bins. Well calibrated means on the diagonal. Small bins are noisy.

PredictedObserved
BinnPred.Obs.
0–10%685.214.7
10–20%10815.214.8
20–30%56624.527.7
30–40%15735.236.9
40–50%13645.037.5
50–60%12854.749.2
60–70%9164.456.0
70–80%3673.366.7
80–90%0——
90–100%0——

Definitions & protocol

Log loss — Mean negative natural log of the probability assigned to the observed result.

Brier — Multiclass Brier = mean over matches of Σ over {H,D,A} of (p − o)²; range 0 (perfect) to 2.

Accuracy — share of matches where the most likely outcome happened. Secondary: it ignores confidence.

Data — Premier League + Championship regular-season results from OpenFootball (CC0) commit e6744429ee395bc86f247348c6184bb08d4eb361, 2021/22 onward.

Tuned settings — decay ξ = 0.001/day, ridge = 0.05, window = 365 days.

Baselines — Elo: K=20, home +60, untuned; plain Poisson: no decay or low-score correction, two-season window; base rate: trailing PL home/draw/away frequencies.

Player data — None used — no player, injury or lineup information enters historical or live predictions.

Odds — No bookmaker odds benchmark: timing/licence for production use not established.