Expected goals
Olympique Lyonnais expected goals (xG) 2026/2027
Ligue 1 · after 5 matches · updated 1 Oct
Olympique Lyonnais's attacking and defensive expected goals in Ligue 1 2026/2027, compared with the results they produced and with the rest of the competition.
Olympique Lyonnais xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | Paris Saint-Germain | 2.28 |
| #2 | RC Lens | 2.27 |
| #3 | Toulouse | 2.19 |
| #4 | Stade Brestois | 1.94 |
| #5 | Paris FC | 1.87 |
| #6 | Olympique Lyonnais | 1.79 |
| #7 | Stade Rennais | 1.76 |
| #8 | Le Mans | 1.70 |
| #9 | Angers | 1.61 |
| #10 | Olympique de Marseille | 1.56 |
| #11 | Auxerre | 1.41 |
| #12 | Troyes | 1.40 |
| #13 | Le Havre | 1.39 |
| #14 | Lille | 1.39 |
| #15 | AS Monaco | 1.28 |
| #16 | RC Strasbourg | 1.24 |
| #17 | Lorient | 1.19 |
| #18 | Nice | 1.08 |
- League avg
- 1.63
- Total
- 8.93 5 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | Paris FC | 0.65 |
| #2 | Paris Saint-Germain | 1.14 |
| #3 | Olympique Lyonnais | 1.17 |
| #4 | Stade Brestois | 1.19 |
| #5 | AS Monaco | 1.31 |
| #6 | Lorient | 1.39 |
| #7 | Angers | 1.41 |
| #8 | Le Havre | 1.61 |
| #9 | Toulouse | 1.64 |
| =10 | Lille | 1.75 |
| =10 | Nice | 1.75 |
| #12 | Le Mans | 1.91 |
| #13 | RC Lens | 1.92 |
| =14 | RC Strasbourg | 1.96 |
| =14 | Troyes | 1.96 |
| #16 | Auxerre | 2.05 |
| #17 | Stade Rennais | 2.27 |
| #18 | Olympique de Marseille | 2.28 |
- League avg
- 1.63
- Total
- 5.84 5 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Paris FC | +1.22 |
| #2 | Paris Saint-Germain | +1.14 |
| #3 | Stade Brestois | +0.75 |
| #4 | Olympique Lyonnais | +0.62 |
| #5 | Toulouse | +0.55 |
| #6 | RC Lens | +0.35 |
| #7 | Angers | +0.20 |
| #8 | AS Monaco | -0.02 |
| =9 | Le Mans | -0.21 |
| =9 | Lorient | -0.21 |
| #11 | Le Havre | -0.22 |
| #12 | Lille | -0.36 |
| #13 | Stade Rennais | -0.51 |
| #14 | Troyes | -0.56 |
| #15 | Auxerre | -0.63 |
| #16 | Nice | -0.67 |
| #17 | Olympique de Marseille | -0.72 |
| #18 | RC Strasbourg | -0.72 |
- League avg
- 0.00
- Total
- +3.09 5 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | Paris FC | 2.17 |
| #2 | Paris Saint-Germain | 2.06 |
| #3 | Olympique Lyonnais | 1.81 |
| #4 | Stade Brestois | 1.78 |
| #5 | Toulouse | 1.74 |
| #6 | RC Lens | 1.49 |
| #7 | Angers | 1.49 |
| #8 | AS Monaco | 1.42 |
| #9 | Le Mans | 1.27 |
| #10 | Lille | 1.23 |
| #11 | Lorient | 1.21 |
| #12 | Le Havre | 1.20 |
| #13 | Auxerre | 1.18 |
| #14 | Olympique de Marseille | 1.09 |
| #15 | Stade Rennais | 1.08 |
| #16 | Troyes | 0.96 |
| #17 | Nice | 0.94 |
| #18 | RC Strasbourg | 0.84 |
- League avg
- 1.39
- Total
- 9.04 vs 11 actual pts
Early-season figures: after 5 matches, per-match rates can move quickly.
What the xG says
Olympique Lyonnais's underlying numbers are among the best in Ligue 1. They rank #4 for xG difference at +0.62 per match, built on elite chance quality rather than about average shot volume. Their 10 goals are 1.07 above 8.93 xG, while 11 points are 1.96 above 9.04 xPts. After only 5 matches, those gaps should still be read cautiously.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
Olympique Lyonnais are 1.07 goals above their xG after 5 matches. The gap was widest at +1.30, against Toulouse on Sat 22/08.
- Goals
- 10
- xG
- 8.93
- Gap
- +1.07
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 22/08 | Toulouse | 2 | 0.70 | +1.30 | +1.30 |
| Sat 29/08 | Le Havre | 1 | 1.75 | -0.75 | +0.55 |
| Fri 04/09 | Auxerre | 3 | 2.85 | +0.15 | +0.70 |
| Sat 12/09 | Paris FC | 0 | 0.50 | -0.50 | +0.20 |
| Sat 19/09 | Stade Rennais | 4 | 3.13 | +0.87 | +1.07 |
Olympique Lyonnais xG trend
Current form +0.65 npxGD per match
All 5 matches with xG so far — the window fills at 6.
Out-created the opponent in 4 of 5 matches. The only negative was against Toulouse on Sat 22/08 (-1.96).
- npxG · last 5
- 1.80
- npxGA · last 5
- 1.15
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 22/08 | Toulouse | 0.65 | 2.61 | -1.96 | -1.96 |
| Sat 29/08 | Le Havre | 1.72 | 0.67 | +1.05 | -0.45 |
| Fri 04/09 | Auxerre | 2.97 | 0.69 | +2.28 | +0.46 |
| Sat 12/09 | Paris FC | 0.49 | 0.38 | +0.11 | +0.37 |
| Sat 19/09 | Stade Rennais | 3.16 | 1.40 | +1.76 | +0.65 |
Each bar is one match's non-penalty xG minus the non-penalty xG against; the line is that difference averaged over the season up to each match, and it finishes on the dashed season average — 1.80 npxG and 1.15 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- tied number 12 hardest of 18 in Ligue 1
- −0.05 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
−0.05 xG vs league average · over 5 matches · tied number 12 hardest of 18
- Stade Rennais Home −0.02
- Paris FC Away +0.09
- Auxerre Home −0.26
- Le Havre Home −0.13
- Toulouse Away +0.04
Olympique Lyonnais shots and chance quality
Average volume, high quality. Olympique Lyonnais take 13.4 shots a match (league 13.9) at 0.13 npxG a shot (league 0.11), #9 in Ligue 1 for volume and #2 for quality. 69% of their shots come from inside the box (league 65%), and set pieces produce 11% of their npxG (league 18%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | Paris Saint-Germain | 21.2 |
| #2 | Stade Brestois | 19.2 |
| #3 | Stade Rennais | 16.2 |
| #4 | Le Havre | 15.6 |
| #5 | Angers | 15.0 |
| =6 | RC Lens | 14.8 |
| =6 | Toulouse | 14.8 |
| =6 | Troyes | 14.8 |
| #9 | Olympique Lyonnais | 13.4 |
| =10 | Olympique de Marseille | 13.2 |
| =10 | Paris FC | 13.2 |
| #12 | Lille | 12.8 |
| #13 | Auxerre | 12.0 |
| #14 | Nice | 11.8 |
| #15 | RC Strasbourg | 11.6 |
| =16 | Le Mans | 10.4 |
| =16 | Lorient | 10.4 |
| #18 | AS Monaco | 10.2 |
- League avg
- 13.9
- Total
- 67 shots from 5 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | Le Mans | 0.15 |
| #2 | Olympique Lyonnais | 0.13 |
| #3 | Toulouse | 0.13 |
| #4 | AS Monaco | 0.12 |
| #5 | Paris FC | 0.11 |
| #6 | RC Lens | 0.11 |
| #7 | RC Strasbourg | 0.11 |
| #8 | Angers | 0.11 |
| #9 | Paris Saint-Germain | 0.11 |
| #10 | Lorient | 0.11 |
| #11 | Lille | 0.11 |
| #12 | Olympique de Marseille | 0.10 |
| #13 | Stade Rennais | 0.09 |
| #14 | Nice | 0.09 |
| #15 | Stade Brestois | 0.09 |
| #16 | Auxerre | 0.09 |
| #17 | Le Havre | 0.08 |
| #18 | Troyes | 0.07 |
- League avg
- 0.11
- Total
- 8.99 npxG from 67 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | Paris FC | 9.6 |
| #2 | Paris Saint-Germain | 10.0 |
| =3 | Olympique Lyonnais | 11.2 |
| =3 | RC Lens | 11.2 |
| #5 | Stade Brestois | 11.6 |
| #6 | Nice | 13.0 |
| #7 | Lorient | 13.2 |
| #8 | Auxerre | 13.6 |
| #9 | Troyes | 13.8 |
| #10 | Le Havre | 14.4 |
| =11 | AS Monaco | 15.2 |
| =11 | Toulouse | 15.2 |
| #13 | Stade Rennais | 15.6 |
| #14 | Lille | 16.0 |
| #15 | Le Mans | 16.2 |
| #16 | Angers | 16.4 |
| #17 | Olympique de Marseille | 17.0 |
| #18 | RC Strasbourg | 17.4 |
- League avg
- 13.9
- Total
- 56 shots allowed from 5 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Paris FC | 0.07 |
| #2 | Angers | 0.08 |
| #3 | Lorient | 0.08 |
| #4 | AS Monaco | 0.08 |
| #5 | Stade Brestois | 0.09 |
| #6 | Le Havre | 0.09 |
| #7 | RC Strasbourg | 0.09 |
| #8 | Le Mans | 0.09 |
| #9 | Olympique Lyonnais | 0.10 |
| #10 | Toulouse | 0.10 |
| #11 | Lille | 0.11 |
| #12 | Paris Saint-Germain | 0.11 |
| #13 | Nice | 0.12 |
| #14 | Olympique de Marseille | 0.12 |
| #15 | Auxerre | 0.13 |
| #16 | Stade Rennais | 0.13 |
| #17 | Troyes | 0.15 |
| #18 | RC Lens | 0.16 |
- League avg
- 0.11
- Total
- 5.75 npxGA from 56 shots
Shot profile
69% inside the box
League avg 65%
From 46 of 67 shots over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
64% allowed inside the box
League avg 65%
From 36 of 56 shots allowed over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
89% open play · 11% set pieces
League avg 18% set pieces
From 0.9 of 8.9 npxG over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
73% open play · 27% set pieces
League avg 18% set pieces
From 1.5 of 5.8 npxG allowed over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
Olympique Lyonnais home and away xG
| Measure | Home | Away only 2 matches with xG |
|---|---|---|
| Matches | 3 | 2 |
| xG / match | 2.58 | 0.60 |
| xGA / match | 0.92 | 1.54 |
| xGD / match | +1.65 | -0.93 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 2.45 | 0.85 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every Olympique Lyonnais match by xG
This season
- Matches
- 5
- xG / match
- 1.79
- xGA / match
- 1.17
- xGD / match
- +0.62
- Points
- 11 of 15
- Sat 19/09 Stade Rennais H xG 3.13 xGA 1.37 xGD +1.76 xPts 2.43
- Sat 12/09 Paris FC A xG 0.50 xGA 0.30 xGD +0.20 xPts 1.48
- Fri 04/09 Auxerre H Best underlying xG 2.85 xGA 0.71 xGD +2.14 xPts 2.68
- Sat 29/08 Le Havre H xG 1.75 xGA 0.69 xGD +1.06 xPts 2.23
- Sat 22/08 Toulouse A Against the chances xG 0.70 xGA 2.77 xGD -2.07 xPts 0.22
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.13. Best and weakest underlying mark the highest and lowest xGD once 5 matches have xG. Against the chances marks a win with xGD of −1.00 or lower, or a loss with +1.00 or higher. P marks a side with at least 0.50 xG from penalties.
Olympique Lyonnais in Ligue 1
Attack
- xG / match #6 of 18
- Shots / match #9 of 18
- Chance quality #2 of 18
- Home xG #2 of 18
- Away xG #18 of 18
Defence
- xGA / match #3 of 18
- Shots allowed =3 of 18
- Chance quality allowed #9 of 18
About the data
- xG data
- Provided by TheStatsAPI, and stored as published.
- Derived metrics
- xGD, per-match rates, rankings and rolling averages are calculated from the match data.
- Model metrics
- xPts is produced by our probability model.