League Two 2024-2025 Performance vs Market
Expected points (xPTS) come from pre-match market odds: what the market rated each team's chances at before kickoff. A positive Δ means the team is outperforming those expectations — playing better than the market rated them; a negative Δ means they're delivering less than their billing. Big gaps usually say more about the team than about fortune.
| # | Team | P | Pts | xPts | vs xPTS | |||||
|---|---|---|---|---|---|---|---|---|---|---|
1 | Port Vale | 46 | 80 | 70.6 | +9.4Outperforming ++ | 7 | +3.9 | +5.4 | 1:2 vs Doncaster (+2.1) | 0:1 vs Gillingham (-2.2) |
2 | Newport | 46 | 49 | 41.0 | +8.0Outperforming ++ | 24 | +10.7 | -2.7 | 0:3 vs Crewe (+2.3) | 0:3 vs Cheltenham (-1.2) |
3 | Grimsby | 46 | 68 | 61.5 | +6.5Outperforming ++ | 14 | -1.9 | +8.4 | 0:1 vs AFC Wimbledon (+2.3) | 0:1 vs Salford (-1.8) |
4 | Cheltenham | 46 | 60 | 53.7 | +6.3Outperforming ++ | 20 | +5.2 | +1.1 | 1:2 vs Notts Co (+2.3) | 0:1 vs MK Dons (-1.5) |
5 | Bromley | 46 | 66 | 59.9 | +6.1Outperforming ++ | 16 | -0.0 | +6.1 | 0:1 vs Doncaster (+2.2) | 1:2 vs Crewe (-1.7) |
6 | Doncaster | 46 | 84 | 78.4 | +5.6Outperforming ++ | 1 | -0.1 | +5.7 | 2:3 vs Port Vale (+1.8) | 0:1 vs Bromley (-1.9) |
7 | Salford | 46 | 69 | 63.8 | +5.2Outperforming ++ | 11 | -0.6 | +5.8 | 0:1 vs Grimsby (+2.1) | 1:2 vs Accrington (-1.8) |
8 | Harrogate | 46 | 53 | 47.9 | +5.1Outperforming ++ | 22 | +7.4 | -2.3 | 0:2 vs Barrow (+2.3) | 0:2 vs Bromley (-1.4) |
9 | Bradford City | 46 | 78 | 74.5 | +3.5Outperforming | 3 | +13.5 | -10.1 | 1:2 vs MK Dons (+1.8) | 0:1 vs Tranmere (-2.0) |
10 | Crewe | 46 | 62 | 61.3 | +0.7On expectation | 15 | -1.5 | +2.2 | 0:1 vs Fleetwood (+2.0) | 0:3 vs Newport (-2.1) |
11 | Colchester | 46 | 67 | 66.3 | +0.7On expectation | 9 | +0.7 | -0.0 | 0:1 vs Bromley (+1.8) | 1:2 vs Cheltenham (-1.9) |
12 | Walsall | 46 | 77 | 76.4 | +0.6On expectation | 2 | +0.1 | +0.6 | 0:1 vs AFC Wimbledon (+1.8) | 0:1 vs Accrington (-2.0) |
13 | Swindon | 46 | 62 | 61.5 | +0.5On expectation | 13 | -0.6 | +1.1 | 0:1 vs Walsall (+2.1) | 2:3 vs Morecambe (-1.8) |
14 | AFC Wimbledon | 46 | 73 | 73.0 | 0.0On expectation | 4 | +3.1 | -3.1 | 0:1 vs Grimsby (+1.7) | 0:1 vs Grimsby (-2.1) |
15 | Notts Co | 46 | 72 | 72.7 | -0.7On expectation | 5 | -5.7 | +5.0 | 0:2 vs Grimsby (+1.8) | 1:2 vs Cheltenham (-2.1) |
16 | Gillingham | 46 | 58 | 59.0 | -1.0On expectation | 17 | +1.6 | -2.6 | 0:1 vs Port Vale (+2.4) | 1:2 vs Harrogate (-1.9) |
17 | Chesterfield | 46 | 70 | 72.3 | -2.3Underperforming | 6 | -0.3 | -2.0 | 1:2 vs Notts Co (+1.9) | 0:3 vs Accrington (-2.0) |
18 | Accrington | 46 | 50 | 53.2 | -3.2Underperforming | 21 | -4.2 | +1.1 | 0:3 vs Chesterfield (+2.3) | 0:1 vs Crewe (-1.4) |
19 | Barrow | 46 | 59 | 63.6 | -4.6Underperforming | 12 | +0.8 | -5.4 | 1:2 vs Notts Co (+2.2) | 0:2 vs Harrogate (-2.0) |
20 | Fleetwood | 46 | 60 | 65.2 | -5.2Underperforming −− | 10 | -4.1 | -1.1 | 0:2 vs Salford (+2.0) | 1:2 vs Carlisle (-1.9) |
21 | Tranmere | 46 | 51 | 58.5 | -7.5Underperforming −− | 18 | -0.9 | -6.6 | 0:1 vs Bradford City (+2.3) | 0:1 vs Grimsby (-1.6) |
22 | Morecambe | 46 | 36 | 47.2 | -11.2Underperforming −− | 23 | -4.9 | -6.3 | 0:1 vs Barrow (+2.2) | 0:2 vs Carlisle (-1.5) |
23 | Carlisle | 46 | 42 | 55.8 | -13.8Underperforming −− | 19 | -8.8 | -5.0 | 1:2 vs Fleetwood (+2.2) | 0:1 vs Morecambe (-1.8) |
24 | MK Dons | 46 | 52 | 67.0 | -15.0Underperforming −− | 8 | -7.3 | -7.6 | 0:1 vs Crewe (+1.9) | 6:3 vs Newport (-1.9) |
