The record is public. All of it.
xGB Core v1 — Reads the quality of every chance both sides create and concede — not just results — adjusted for opponent and venue, weighted toward recent play. Probabilities come from simulating the match many thousands of times. It was tuned on 2016–20 seasons and judged, untouched, on 2021–25: every number below comes from matches the engine had never seen when it was built. The model does not know lineups or injuries.
Held-out performance (1,900 matches)
| Metric | Model | Home-rates baseline | Uniform | Closing market |
|---|---|---|---|---|
| RPS (lower = better) | 0.1982 | 0.2320 | 0.2380 | 0.1949 |
| 1X2 accuracy | 54.5% | — | 33.3% | — |
We finish 0.0033 RPS behind the closing market — the honest price of a fully odds-free model. Published academic ML models sit at ~0.205; the market at ~0.195. We publish this number; they don’t.
The totals record — over/under 2.5
We publish an over-2.5 probability on every match page, so it faces the same exam as the 1X2: 1,900 held-out matches (100% with a market price), Brier 0.2414 against the closing market's 0.2401 — statistically indistinguishable (p = 0.31). Lower is better; 57% of these matches went over.
Calibration
Dozens of candidate improvements — including the folk wisdom: rest days, referees, travel, weather, late-season motivation — have been tested against held-out seasons. None beat the engine by a real margin, and none shipped. We keep that ledger so the engine never quietly gets worse.
Live track record
| Month | n | RPS | Accuracy |
|---|---|---|---|
| 2026-08 | 19 | 0.2140 | 63% |
This is the champion engine's own record. We run several others alongside it — see how each compares at the engine room.
What the engine can and cannot see
It weighs: the quality of every chance both sides create and concede, opponent strength, venue, and how recently it happened. Players are projected from their share of their club's threat and the minutes they are likely to play.
It cannot see: confirmed lineups, injuries and suspensions, or cup rotation — and every assessment says so on its face.
The xG Index is our 0–100 scale: 50 is league average, and player scores are always relative to position, on a stated minutes floor.
The archive rule: every prediction is written before kickoff and never edited or deleted. When we’re wrong, this page says so.