Ligue 2 2023-2024 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 | Angers | 38 | 68 | 59.3 | +8.7Outperforming ++ | 4 | +10.0 | -1.4 | 1:2 vs Guingamp (+1.8) | 1:3 vs Amiens (-1.8) |
2 | Rodez | 38 | 60 | 51.9 | +8.2Outperforming ++ | 9 | +6.0 | +2.1 | 2:1 vs St Etienne (+1.9) | 0:1 vs Valenciennes (-1.7) |
3 | Pau FC | 38 | 51 | 44.3 | +6.7Outperforming ++ | 17 | +1.1 | +5.6 | 1:2 vs St Etienne (+2.2) | 1:2 vs Bastia (-1.8) |
4 | Auxerre | 38 | 74 | 69.0 | +5.0Outperforming ++ | 1 | +3.0 | +2.0 | 2:4 vs Bordeaux (+1.9) | 0:1 vs Dunkerque (-2.3) |
5 | Paris FC | 38 | 59 | 54.4 | +4.6Outperforming | 7 | +3.9 | +0.7 | 0:1 vs St Etienne (+2.1) | 1:2 vs Dunkerque (-1.9) |
6 | Laval | 38 | 55 | 51.1 | +3.9Outperforming | 11 | -6.2 | +10.0 | 0:1 vs Guingamp (+2.1) | 0:3 vs Concarneau (-1.8) |
7 | Bastia | 38 | 51 | 47.3 | +3.7Outperforming | 14 | +1.6 | +2.1 | 0:1 vs Guingamp (+2.1) | 1:4 vs Pau FC (-1.8) |
8 | Caen | 38 | 58 | 55.3 | +2.7Outperforming | 6 | +4.4 | -1.8 | 1:2 vs Bastia (+1.9) | 1:2 vs Grenoble (-1.8) |
9 | Amiens | 38 | 53 | 50.5 | +2.5Outperforming | 12 | -3.0 | +5.6 | 0:1 vs Auxerre (+2.2) | 2:3 vs Pau FC (-1.7) |
10 | St Etienne | 38 | 65 | 62.6 | +2.4Outperforming | 2 | -0.5 | +3.0 | 1:2 vs Caen (+1.9) | 0:1 vs Grenoble (-2.1) |
11 | Dunkerque | 38 | 46 | 43.6 | +2.4Outperforming | 18 | -8.9 | +11.3 | 0:1 vs Auxerre (+2.5) | 0:5 vs Bastia (-1.6) |
12 | Annecy | 38 | 46 | 45.6 | +0.4On expectation | 15 | -5.1 | +5.5 | 1:4 vs Guingamp (+2.4) | 0:1 vs Grenoble (-1.7) |
13 | Grenoble | 38 | 51 | 51.6 | -0.6On expectation | 10 | -1.0 | +0.4 | 0:1 vs St Etienne (+2.3) | 0:1 vs Pau FC (-1.8) |
14 | Troyes | 38 | 41 | 45.0 | -4.0Underperforming | 16 | -0.5 | -3.5 | 0:1 vs Bordeaux (+2.4) | 0:1 vs Valenciennes (-2.0) |
15 | Concarneau | 38 | 38 | 42.2 | -4.2Underperforming | 19 | -3.9 | -0.3 | 0:1 vs Guingamp (+2.3) | 1:2 vs Pau FC (-1.5) |
16 | AC Ajaccio | 38 | 46 | 50.3 | -4.3Underperforming | 13 | +7.3 | -11.7 | 2:0 vs St Etienne (+2.0) | 1:0 vs Valenciennes (-1.7) |
17 | Guingamp | 38 | 51 | 57.4 | -6.4Underperforming −− | 5 | -10.3 | +4.0 | 0:1 vs Caen (+2.0) | 1:4 vs Annecy (-2.2) |
18 | Valenciennes | 38 | 29 | 37.7 | -8.7Underperforming −− | 20 | -4.5 | -4.2 | 0:1 vs Troyes (+2.2) | 0:1 vs Concarneau (-1.5) |
19 | Bordeaux | 38 | 51 | 60.7 | -9.7Underperforming −− | 3 | +1.1 | -10.8 | 0:1 vs Caen (+1.8) | 0:1 vs Troyes (-2.2) |
20 | Quevilly Rouen | 38 | 38 | 52.3 | -14.3Underperforming −− | 8 | -9.9 | -4.4 | 2:1 vs St Etienne (+2.2) | 2:3 vs Concarneau (-1.8) |
