xPTS Gap
Actual points vs what xG simulations say they deserve
Most Cursed
- 1
Metz-28.8 - 2
Nantes-28.2 - 3
Nice-14.1 - 4
Stade Brestois 29-11.4 - 5
Auxerre-10.6
Most Blessed
- 1
Rennes+21.3 - 2
Lens+20.1 - 3
Lyon+15.6 - 4Paris Saint Germain+12.8
- 5
Marseille+7.9
Data last updated May 1, 2026, 7:00 PM UTC
Ligue 1 is the most tactically compact of the top 5 leagues, which makes the margins between luck and skill even tighter. The CURSD Luck Score (CLS) tracks all 18 teams using the same 7-signal model as the other football leagues: xPTS delta from Poisson match simulation (25%), finishing luck above or below expected conversion (18%), defensive luck, shot volume dominance, discipline (cards variance), injury burden, and opponent scheduling strength. In a league where PSG's resource advantage compresses the table, the CLS reveals which mid-table teams are actually performing at European level and which relegation candidates are just running hot.
| RK | Team | Pos | LAS | Record | CLS | Trend | Highlight | Share |
|---|---|---|---|---|---|---|---|---|
| ☠ Cursed | ||||||||
| 1 | ![]() Metz Ligue 1 · 17 pts | 18 | 18 | 3W 8D 23L | -66 | ☠ Cursed 14.6 points below expected. Close games going the wrong way. | ||
| 2 | ![]() Nantes Ligue 1 · 23 pts | 17 | 16▲1 | 5W 8D 20L | -48 | ☠ Cursed Scored 7 fewer than xG (29 from 36.42 xG). 14.3 pts below expected. | ||
| 3 | ![]() Nice Ligue 1 · 32 pts | 16 | 13▲3 | 7W 11D 16L | -43 | ☠ Cursed Scored 7 fewer than xG (37 from 43.57 xG). 7.2 pts below expected. | ||
| ↓ Unlucky | ||||||||
| 4 | ![]() Auxerre Ligue 1 · 34 pts | 15 | 15 | 8W 10D 16L | -18 | ↓ Unlucky 5.3 points below expected. Close games going the wrong way. | ||
| 5 | ![]() Lille Ligue 1 · 61 pts | 3 | 2▲1 | 18W 7D 9L | -18 | ↓ Unlucky 3.7 points above expected. | ||
| 6 | ![]() Le Havre Ligue 1 · 35 pts | 14 | 14 | 7W 14D 13L | -15 | ↓ Unlucky Scored 6 fewer than xG (32 from 38.42 xG). 5.3 pts below expected. | ||
| — Neutral | ||||||||
| 7 | ![]() Stade Brestois 29 Ligue 1 · 39 pts | 12 | 12 | 10W 9D 15L | -14 | — Neutral 5.8 points below expected. Close games going the wrong way. | ||
| 8 | RED RED Star FC 93 Ligue 1 · 0 pts | 20 | 20 | undefinedW 0D 1L | -13 | — Neutral 1.0 points below expected. Close games going the wrong way. | ||
| 9 | ![]() Monaco Ligue 1 · 54 pts | 7 | 5▲2 | 16W 6D 12L | -9 | — Neutral 3.7 points above expected. | ||
| 10 | ![]() Toulouse Ligue 1 · 44 pts | 10 | 9▲1 | 12W 8D 13L | -5 | — Neutral 1.7 points below expected. Close games going the wrong way. | ||
| 11 | ![]() Paris FC Ligue 1 · 44 pts | 11 | 10▲1 | 11W 11D 12L | +4 | — Neutral 2.3 points above expected. | ||
| 12 | ![]() Lorient Ligue 1 · 45 pts | 9 | 11▼2 | 11W 12D 11L | +11 | — Neutral 0.8 points below expected. Close games going the wrong way. | ||
| 13 | ![]() Marseille Ligue 1 · 59 pts | 5 | 4▲1 | 18W 5D 11L | +14 | — Neutral 4.1 points above expected. | ||
| ↑ Lucky | ||||||||
| 14 | ROD Rodez Ligue 1 · 3 pts | 19 | 19 | 1W 0D 0L | +22 | ↑ Lucky 2.0 points above expected. | ||
| 15 | ![]() Strasbourg Ligue 1 · 53 pts | 8 | 8 | 15W 8D 11L | +23 | ↑ Lucky Scored 4 more than xG. Clinical finishing earning 3.1 extra pts. | ||
| 16 | ![]() Angers Ligue 1 · 36 pts | 13 | 17▼4 | 9W 9D 16L | +28 | ↑ Lucky 2.9 points above expected. | ||
| 17 | PAR Paris Saint Germain Ligue 1 · 76 pts | 1 | 1 | 24W 4D 6L | +31 | ↑ Lucky 6.7 points above expected. | ||
| 18 | ![]() Lyon Ligue 1 · 60 pts | 4 | 6▼2 | 18W 6D 10L | +32 | ↑ Lucky 8.2 points above expected. | ||
| 19 | ![]() Lens Ligue 1 · 70 pts | 2 | 3▼1 | 22W 4D 8L | +36 | ↑ Lucky 10.3 points above expected. | ||
| ✦ Blessed | ||||||||
| 20 | ![]() Rennes Ligue 1 · 59 pts | 6 | 7▼1 | 17W 8D 9L | +47 | ✦ Blessed Scored 5 more than xG. Clinical finishing earning 11.0 extra pts. | ||
How each team's CLS has changed throughout the season
Above zero = lucky. Below zero = unlucky. Scale: -100 (cursed) to +100 (blessed).
The CLS combines several signals. Pick one to see which Ligue 1 teams are getting robbed (or blessed) on that signal individually.
Actual points vs what xG simulations say they deserve
Metz-28.8
Nantes-28.2
Nice-14.1
Stade Brestois 29-11.4
Auxerre-10.6
Rennes+21.3
Lens+20.1
Lyon+15.6
Marseille+7.9