Receipts
Football: what the model called before the match, and what happened
How to read this honestly
Every prediction here was made out of sample — the model was refitted
repeatedly and only ever saw matches played before the one it was predicting. That
is what makes them forecasts rather than hindsight.
Two are kept per match, win or lose: the result call (who wins) and the model's most confident selection of any kind. Neither is chosen after the fact, which is the point — a page showing only the winners would look like a record and work like an advertisement.
A hit rate on its own means nothing. Backing the home side wins a lot of football matches without predicting anything, so the baseline is shown beside every rate. The gap between them is the only part that is evidence of skill.
For the same reason the list defaults to against the grain first. Sorting by confidence puts a 100% call on a 97–39 mismatch at the top, which is correct and proves nothing — anyone would call it. A confident call on the side the baseline does not back is the one worth showing.
Two are kept per match, win or lose: the result call (who wins) and the model's most confident selection of any kind. Neither is chosen after the fact, which is the point — a page showing only the winners would look like a record and work like an advertisement.
A hit rate on its own means nothing. Backing the home side wins a lot of football matches without predicting anything, so the baseline is shown beside every rate. The gap between them is the only part that is evidence of skill.
For the same reason the list defaults to against the grain first. Sorting by confidence puts a 100% call on a 97–39 mismatch at the top, which is correct and proves nothing — anyone would call it. A confident call on the side the baseline does not back is the one worth showing.
Result calls settled
12,965
Called correctly
49.8%
Always backing the draw
83.7%
Better than that by
-33.8pp
The model does not beat always backing the draw here. Nothing on this page should be read as evidence of skill. Its most confident selections claimed 90.5% and delivered 88.4% over 21,380 matches.
Called it 6,462
| Date | Match | What the model said | Confidence | Result | |
|---|---|---|---|---|---|
| 7 Nov 25 |
|
Away to win 1X2 (match result) · KSA-Pro League |
89.7% | 2–4 |
landed
against the grain
|
| 24 Jan 26 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
87.8% | 1–2 |
landed
against the grain
|
| 11 Apr 26 |
|
Away to win 1X2 (match result) · KSA-Pro League |
86.9% | 0–2 |
landed
against the grain
|
| 23 Aug 26 |
|
Away to win 1X2 (match result) · NED-Eredivisie |
85.9% | 2–5 |
landed
against the grain
|
| 26 Oct 25 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
85.6% | 0–3 |
landed
against the grain
|
| 20 Sep 25 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
84.9% | 0–3 |
landed
against the grain
|
| 10 Mar 26 |
|
Away to win 1X2 (match result) · RSA-Premiership |
84.4% | 0–2 |
landed
against the grain
|
| 1 Mar 26 |
|
Away to win 1X2 (match result) · GRE-Super League |
84.4% | 1–2 |
landed
against the grain
|
| 21 Dec 25 |
|
Away to win 1X2 (match result) · GER-Bundesliga |
83.5% | 0–4 |
landed
against the grain
|
| 3 May 25 |
|
Away to win 1X2 (match result) · ESP-La Liga |
82.4% | 1–2 |
landed
against the grain
|
| 5 Feb 26 |
|
Away to win 1X2 (match result) · KSA-Pro League |
82.1% | 0–6 |
landed
against the grain
|
| 25 Feb 26 |
|
Away to win 1X2 (match result) · KSA-Pro League |
81.5% | 0–5 |
landed
against the grain
|
| 30 Aug 26 |
|
Away to win 1X2 (match result) · NED-Eredivisie |
81.3% | 1–4 |
landed
against the grain
|
| 24 Jan 26 |
|
Away to win 1X2 (match result) · TUR-Super Lig |
81.2% | 1–3 |
landed
against the grain
|
| 13 Dec 25 |
|
Away to win 1X2 (match result) · TUR-Super Lig |
80.8% | 1–4 |
landed
against the grain
|
| 23 Aug 25 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
80.3% | 1–4 |
landed
against the grain
|
| 25 May 25 |
|
Away to win 1X2 (match result) · ENG-Premier League |
80.0% | 1–2 |
landed
against the grain
|
| 28 Apr 25 |
|
Away to win 1X2 (match result) · NED-Eerste Divisie |
79.9% | 2–3 |
landed
against the grain
|
| 28 Aug 26 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
79.9% | 0–4 |
landed
against the grain
|
| 23 May 26 |
|
Away to win 1X2 (match result) · RSA-Premiership |
79.7% | 0–2 |
landed
against the grain
|
| 27 Sep 25 |
|
Away to win 1X2 (match result) · NED-Eredivisie |
79.6% | 1–2 |
landed
against the grain
|
| 20 Sep 25 |
|
Away to win 1X2 (match result) · GER-Bundesliga |
79.4% | 1–4 |
landed
against the grain
|
| 11 Apr 26 |
|
Away to win 1X2 (match result) · POR-Primeira Liga |
79.3% | 0–1 |
landed
against the grain
|
| 31 Dec 25 |
|
Away to win 1X2 (match result) · KSA-Pro League |
79.3% | 1–3 |
landed
against the grain
|
| 1 Sep 26 |
|
Away to win 1X2 (match result) · RSA-Premiership |
79.2% | 0–4 |
landed
against the grain
|
Page 1 of 259
Older →
Where it goes wrong, and what would fix it
Why this table is ordered by shortfall, not by hit rate
A market family that claims 30% and delivers 30% is working perfectly, and one that claims
90% and delivers 74% is broken — even though the second has the far higher hit rate.
What matters is the gap between what the model claimed and what happened, so that is what
this is sorted on.
| Market family | Settled | Claimed | Delivered | Shortfall | What that means |
|---|---|---|---|---|---|
| N goals in a row | 14,628 | 30.5% | 28.3% | -2.2pp | Slightly over-claiming. Within what calibration can absorb. |
| Lead by N at any time | 21,942 | 39.5% | 37.7% | -1.8pp | Slightly over-claiming. Within what calibration can absorb. |
| 1X2 — 1UP early payout | 4,876 | 55.1% | 55.0% | -0.1pp | Calibrated. What it claims is what it delivers. |
| Winning margin | 90,615 | 14.3% | 14.3% | 0.0pp | Calibrated. What it claims is what it delivers. |
| 1st half 1X2 | 7,314 | 33.3% | 33.3% | 0.0pp | Calibrated. What it claims is what it delivers. |
| Corner range | 26,061 | 33.3% | 33.3% | 0.0pp | Calibrated. What it claims is what it delivers. |
| European handicap 2:0 | 38,835 | 33.3% | 33.3% | 0.0pp | Calibrated. What it claims is what it delivers. |
| Result & Over/Under | 233,010 | 16.7% | 16.7% | 0.0pp | Calibrated. What it claims is what it delivers. |
These are the model's own claims measured against results, which is what Track record aggregates and what the radar's calibration already corrects for. Nothing here is a bookmaker price, so none of it says anything about whether a bet had value.