Insights · 2025-26 season review
Results vs the market: which teams beat the odds all season
Before every match, the betting market prices each team's chances. Convert those prices into expected points, add them up over a season, and you get the table the market was pricing — match by match, with team news, transfers and form already baked in. Compare it with the real table and the gaps are where the season surprised the people with money on it. Across 1,466 teams in 89 leagues, most gaps are small. These weren't.
Beat the market's pricing
The market never caught up: priced match by match, Lincoln's season was worth 73.2 points — they took 103. The biggest positive gap in our entire dataset.
Week after week the odds said mid-table; the results said otherwise. A +25.4-point gap means the market re-priced them all season and still stayed behind.
Week after week the odds said mid-table; the results said otherwise. A +22.7-point gap means the market re-priced them all season and still stayed behind.
Fell short of the market's pricing
The market kept believing — a season priced at 38.8 points delivered 17. Whether that's misfortune or a decline the odds were slow to accept, the gap only says one thing for certain: bettors who trusted the price paid for it.
Favoured on paper far more often than results justified. Gaps this size are usually a mix: some bad luck, some real decline the market repriced too slowly.
Favoured on paper far more often than results justified. Gaps this size are usually a mix: some bad luck, some real decline the market repriced too slowly.
The West Brom case
West Brom started 31 of their 46 Championship matches as the bookmakers' favourite — and converted just 11 of those into wins. The market spent a whole season expecting a top-eight side; the table said 21st. How often favourites actually deliver — league by league — is its own story: Favourite conversion 2025-26 →
The full table
All 1,466 teams with at least 25 priced matches. Click a header to sort.
| Team | League | P | Pts | Market xPts | Gap ↓ |
|---|---|---|---|---|---|
| Lincoln | League One | 46 | 103 | 73.2 | +29.8 |
| Mjallby | Allsvenskan | 30 | 75 | 49.6 | +25.4 |
| Frosinone | Serie B | 38 | 81 | 58.3 | +22.7 |
| Kashima Antlers | J1 League | 37 | 75 | 53.9 | +21.1 |
| Rochdale | National League | 48 | 112 | 91.7 | +20.4 |
| VfL Osnabruck | 3. Liga | 38 | 80 | 59.7 | +20.3 |
| Mirassol | Serie A Betano | 37 | 67 | 46.9 | +20.1 |
| Racing Santander | LaLiga2 | 44 | 88 | 68 | +20 |
| Hradec Kralove B | 3. CFL - Group B | 32 | 61 | 41.2 | +19.8 |
| Vaduz | Challenge League | 36 | 81 | 61.4 | +19.6 |
| Hull | Championship | 49 | 80 | 60.6 | +19.4 |
| FK Ceska Lipa | 3. CFL - Group B | 32 | 88 | 68.8 | +19.2 |
| Malaga | LaLiga2 | 48 | 85 | 66.4 | +18.6 |
| Thun | Super League | 38 | 75 | 56.6 | +18.4 |
| Bromley | League Two | 46 | 87 | 68.7 | +18.3 |
| Schalke | 2. Bundesliga | 34 | 70 | 52.3 | +17.7 |
| Cesena U20 | Primavera 1 | 39 | 70 | 52.4 | +17.6 |
| Erzurumspor | 1. Lig | 38 | 81 | 63.7 | +17.3 |
| Viking | Eliteserien | 30 | 71 | 53.7 | +17.3 |
| Al-Faisaly | Division 1 | 34 | 73 | 55.9 | +17.1 |
| St. Truiden | Jupiler Pro League | 40 | 71 | 53.9 | +17.1 |
| Jeonbuk | K League 1 | 33 | 71 | 54 | +17 |
| Kyoto | LeagueMapping object (44) | 29 | 55 | 38 | +17 |
| Abha | Division 1 | 34 | 77 | 60.5 | +16.5 |
| Ravenna | Serie C - Group B | 36 | 73 | 56.5 | +16.5 |
