Our public record starts on 31 October 2026, so this first report covers the six forecasts graded that day. It compares the published statistical model with a simple base-rate benchmark. Our two AI analysts run in shadow and had no graded match yet, so they are not part of this report. Everything below is calculated from the same locked forecasts as our track record, so you can check any number against the ledger.
This month at a glance
- 6 matches graded across 4 leagues, on 31 Oct.
- Published forecasts: 67% correct, RPS 0.107 (lower is better; the base rate scored 0.180).
- The AI analysts have no graded match this month, so this report makes no comparison with them.
- Biggest upset: Bayern Munich vs Borussia Dortmund 2–2, a result we gave 21%.
How the forecasts did
RPS is our main score: it grades the whole forecast, not just the pick, and lower is better. The published forecast is the statistical model. The base rate always predicts the league’s usual share of home wins, draws and away wins, so it is the benchmark to beat.
| # | Layer | Matches | Correct | RPS | Log loss |
|---|---|---|---|---|---|
| 1 | Published (statistical model) | 6 | 67% | 0.1072 | 0.742 |
| 2 | Base rate (benchmark) | 6 | 67% | 0.1796 | 0.994 |
Every graded match of the month, sorted by RPS, lower is better. The AI analysts had no graded match this month, so they are not in this table. A month is a small sample: differences in the third decimal are usually noise.
The biggest upsets
These are the matches where the result was not the one we rated most likely, starting with the least expected. Upsets are part of a well-calibrated forecast, not a failure of it: a result given 20% should happen about one time in five.
| Date | Match | Score | Forecast H/D/A | Chance we gave it |
|---|---|---|---|---|
| 31 Oct | Bayern Munich vs Borussia DortmundBundesliga | 2–2 | 62 / 21 / 17 | 21% |
| 31 Oct | Aston Villa vs FulhamPremier League | 1–1 | 51 / 27 / 22 | 27% |
By league
| League | Matches | Correct | RPS | Season record |
|---|---|---|---|---|
| Premier League | 2 | 50% | 0.176 | Track record |
| La Liga | 2 | 100% | 0.032 | Track record |
| Bundesliga | 1 | 0% | 0.205 | Track record |
| Primeira Liga | 1 | 100% | 0.023 | Track record |
Fewer than 100 matches per league: an early sample, not a ranking of leagues.
What a month can and can’t tell you
Six matches on one day are far too few to judge a forecasting model. One late goal moves every number here, and the low RPS says more about which matches were played that day than about the model. The track record is the place to judge it as the sample grows. The AI layer will only get a say in the published numbers once it has beaten the model over at least 300 matches and six weeks, under rules we fixed in advance and publish on the methodology page.
What a month can show is whether anything has broken: a league where the model is badly off, a run of confident misses, or an AI layer drifting away from the evidence. When we find something like that, we say so here and log any model change in the version history.
Cite this report
In October 2026, Touchline Atlas graded 6 locked football forecasts: 67% picked the right 90-minute result, with a ranked probability score of 0.107. Source: Touchline Atlas, https://thetouchlineatlas.com/reports/2026-10/.
Free to quote with a link. The underlying forecasts are in the ledger under CC BY 4.0.

