Ligue 1 · Surprises against the model
2025-26 ↺ — reconstructed walk-forward estimates: each one calculated only from earlier matches and frozen on match day at 00:00 UTC (the site did not exist then). All leagues → How good is the model? →
298 matches with an estimate out of 306 played (teams with fewer than 8 matches in the model's window have no estimate).
The biggest upsets 2025-26 ↺
The matches in which the result happened that the model gave the smallest chance before kick-off. Example: if the model gave the away win 5% and the away side won, the match is near the top of the list. A 5% chance happens, on average, once every 20 matches.
- ↺Olympique de Marseille 0–2 FC Nantesmodel: 1 80% · X 12% · 2 7.8% · the actual result had 7.8% (≈ 1 in 12.86)
- ↺model: 1 8% · X 11.3% · 2 80% · the actual result had 11.3% (≈ 1 in 8.86)
- ↺FC Metz 2–0 Racing Club de Lensmodel: 1 12.3% · X 20% · 2 68% · the actual result had 12.3% (≈ 1 in 8.10)
- ↺model: 1 71% · X 16% · 2 13.1% · the actual result had 13.1% (≈ 1 in 7.66)
- ↺Stade Rennais FC 1901 0–0 FC Metzmodel: 1 77% · X 13.1% · 2 10% · the actual result had 13.1% (≈ 1 in 7.63)
- ↺model: 1 77% · X 14.8% · 2 9% · the actual result had 14.8% (≈ 1 in 6.75)
- ↺model: 1 65% · X 20% · 2 14.9% · the actual result had 14.9% (≈ 1 in 6.72)
- ↺AS Monaco FC 0–1 Paris FCmodel: 1 68% · X 16% · 2 16.1% · the actual result had 16.1% (≈ 1 in 6.21)
- ↺FC Metz 2–1 OGC Nicemodel: 1 16.2% · X 19% · 2 65% · the actual result had 16.2% (≈ 1 in 6.15)
- ↺model: 1 16.3% · X 18% · 2 66% · the actual result had 16.3% (≈ 1 in 6.13)
- ↺model: 1 16.4% · X 16% · 2 68% · the actual result had 16.4% (≈ 1 in 6.12)
- ↺model: 1 75% · X 16.4% · 2 9% · the actual result had 16.4% (≈ 1 in 6.11)
- ↺Lille OSC 0–2 AJ Auxerremodel: 1 57% · X 27% · 2 16.7% · the actual result had 16.7% (≈ 1 in 5.99)
- ↺model: 1 65% · X 18% · 2 17.3% · the actual result had 17.3% (≈ 1 in 5.79)
- ↺model: 1 66% · X 17.3% · 2 16% · the actual result had 17.3% (≈ 1 in 5.79)
- ↺FC Nantes 0–2 FC Metzmodel: 1 61% · X 21% · 2 17.4% · the actual result had 17.4% (≈ 1 in 5.76)
- ↺model: 1 68% · X 17.6% · 2 15% · the actual result had 17.6% (≈ 1 in 5.67)
- ↺model: 1 68% · X 17.6% · 2 14% · the actual result had 17.6% (≈ 1 in 5.67)
- ↺model: 1 17.9% · X 22% · 2 60% · the actual result had 17.9% (≈ 1 in 5.60)
- ↺model: 1 66% · X 18.2% · 2 15% · the actual result had 18.2% (≈ 1 in 5.51)
How often low-chance results happen n = 298
All the possible results (home win, draw, away win) the model gave a small chance to, grouped into bands. For each band: how often they happened, next to what the model estimated on average. A well-calibrated model has the two numbers close together.
| the model's chance | results | happened | actual | estimated on average |
|---|---|---|---|---|
| 0% – 10% | 20 | 1 | 5.0%95%: 1–24% | 7.2% |
| 10% – 20% | 145 | 33 | 22.8%95%: 17–30% | 16.1% |
| 20% – 30% | 341 | 79 | 23.2%95%: 19–28% | 24.2% |
Results under 20% that came: 34; expected on average 24.8 (if the model is right, between 16 and 33, 95%). Above the interval: the model underestimated low-chance results this season.
Teams and upsets 2025-26 ↺
For each team: the results under 20% that went its way (a win or a draw) and against it (a defeat), next to how many were expected on average. “Expected” = the sum of those results' chances in its matches.
| Team | matches | in favour: actual | expected | against: actual | expected |
|---|---|---|---|---|---|
| FC Lorient | 33 | 7 | 2.6 | 1 | 0.2 |
| Olympique de Marseille | 33 | 5 | 2.5 | 2 | 1.6 |
| Paris FC | 26 | 4 | 1.7 | 0 | 0.0 |
| FC Metz | 33 | 7 | 4.9 | 0 | 0.0 |
| RC Strasbourg Alsace | 33 | 3 | 1.2 | 1 | 1.2 |
| Stade Rennais FC 1901 | 34 | 3 | 1.3 | 0 | 0.5 |
| Angers SCO | 33 | 3 | 2.0 | 0 | 0.0 |
| Le Havre AC | 34 | 4 | 3.0 | 0 | 0.0 |
| Olympique Lyonnais | 34 | 2 | 1.5 | 0 | 1.1 |
| OGC Nice | 33 | 2 | 1.6 | 3 | 0.8 |
| Lille OSC | 34 | 1 | 0.9 | 1 | 0.9 |
| Toulouse FC | 34 | 1 | 1.0 | 1 | 0.9 |
| FC Nantes | 34 | 2 | 2.2 | 1 | 0.2 |
| Racing Club de Lens | 33 | 0 | 0.6 | 1 | 1.0 |
| Stade Brestois 29 | 33 | 1 | 1.7 | 0 | 0.2 |
| AJ Auxerre | 34 | 1 | 1.7 | 0 | 0.0 |
| Paris Saint-Germain FC | 34 | 3 | 4.0 | 4 | 3.2 |
| AS Monaco FC | 34 | 1 | 2.0 | 3 | 1.5 |
This season · estimates frozen in real time ❄
The matches of the current season played after the model's estimate was frozen, within the last hour before kick-off, in which a result under 20% came.
16 matches played with a frozen estimate ❄; in 0 of them a result under 20% came.
How to read it
How to read the figures on this page and what they do not say.
- A match's upset = the chance the model gave, before kick-off, to the result that happened (home win, draw or away win). The smaller it is, the less the model expected the result.
- A result with a 20% chance happens, on average, once every 5 matches. Upsets are normal: the right question is whether they come as often as the model says — the “How often” table answers it.
- Estimates marked ↺ are reconstructed: calculated only from earlier matches, but the site did not publish them at the time. Those marked ❄ were frozen and published within the last hour before kick-off.
- The figures say what happened against the estimate, not why.
Updated: 25 Oct 2026, 07:20 UTC