Expected goals
FC Luzern expected goals (xG) 2026/2027
Swiss Super League · after 9 matches · updated 1 Oct
FC Luzern's attacking and defensive expected goals in Swiss Super League 2026/2027, compared with the results they produced and with the rest of the competition.
FC Luzern xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | FC Sion | 2.31 |
| #2 | Young Boys | 2.28 |
| #3 | Grasshopper Club Zürich | 2.01 |
| #4 | FC Luzern | 1.95 |
| #5 | FC St. Gallen 1879 | 1.95 |
| #6 | FC Lugano | 1.70 |
| #7 | FC Vaduz | 1.66 |
| #8 | FC Thun | 1.53 |
| #9 | Servette FC | 1.41 |
| #10 | FC Zürich | 1.38 |
| #11 | Basel | 1.22 |
| #12 | FC Lausanne-Sport | 0.85 |
- League avg
- 1.69
- Total
- 17.54 9 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | FC Lugano | 1.26 |
| #2 | FC Lausanne-Sport | 1.37 |
| #3 | Basel | 1.39 |
| #4 | Young Boys | 1.41 |
| #5 | FC St. Gallen 1879 | 1.43 |
| #6 | FC Sion | 1.48 |
| #7 | Servette FC | 1.53 |
| #8 | FC Zürich | 1.93 |
| #9 | FC Vaduz | 2.00 |
| #10 | FC Luzern | 2.02 |
| #11 | Grasshopper Club Zürich | 2.18 |
| #12 | FC Thun | 2.23 |
- League avg
- 1.69
- Total
- 18.22 9 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Young Boys | +0.87 |
| #2 | FC Sion | +0.82 |
| #3 | FC St. Gallen 1879 | +0.51 |
| #4 | FC Lugano | +0.44 |
| #5 | FC Luzern | -0.08 |
| #6 | Servette FC | -0.12 |
| #7 | Basel | -0.17 |
| #8 | Grasshopper Club Zürich | -0.18 |
| #9 | FC Vaduz | -0.34 |
| #10 | FC Lausanne-Sport | -0.52 |
| #11 | FC Zürich | -0.55 |
| #12 | FC Thun | -0.70 |
- League avg
- 0.00
- Total
- -0.68 9 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | Young Boys | 1.90 |
| #2 | FC Sion | 1.90 |
| #3 | FC St. Gallen 1879 | 1.71 |
| #4 | FC Lugano | 1.71 |
| #5 | FC Luzern | 1.36 |
| #6 | Servette FC | 1.30 |
| #7 | Grasshopper Club Zürich | 1.29 |
| #8 | Basel | 1.26 |
| #9 | FC Vaduz | 1.18 |
| #10 | FC Zürich | 1.12 |
| #11 | FC Thun | 1.00 |
| #12 | FC Lausanne-Sport | 0.94 |
- League avg
- 1.39
- Total
- 12.22 vs 12 actual pts
Early-season figures: after 9 matches, per-match rates can move quickly.
What the xG says
FC Luzern's underlying numbers sit close to the Swiss Super League average. They rank #5 for xG difference at -0.08 per match, from about average shot volume at about average chance quality. Their 17 goals are 0.54 below 17.54 xG, while 12 points are 0.22 below 12.22 xPts. After only 9 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
FC Luzern are 0.54 goals below their xG after 9 matches. The gap was widest at -2.18, against FC Vaduz on Wed 02/09.
- Goals
- 17
- xG
- 17.54
- Gap
- -0.54
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 25/07 | FC Thun | 1 | 2.53 | -1.53 | -1.53 |
| Sun 02/08 | FC Sion | 0 | 0.51 | -0.51 | -2.04 |
| Sun 09/08 | FC St. Gallen 1879 | 2 | 1.51 | +0.49 | -1.55 |
| Sat 22/08 | FC Lausanne-Sport | 1 | 0.98 | +0.02 | -1.53 |
| Sat 29/08 | Servette FC | 1 | 1.23 | -0.23 | -1.76 |
| Wed 02/09 | FC Vaduz | 2 | 2.42 | -0.42 | -2.18 |
| Sat 05/09 | Young Boys | 3 | 2.19 | +0.81 | -1.37 |
| Sun 13/09 | Basel | 2 | 1.62 | +0.38 | -0.99 |
| Sat 19/09 | Grasshopper Club Zürich | 5 | 4.55 | +0.45 | -0.54 |
FC Luzern xG trend
Current form +0.36 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 4 of 9 matches. The worst was against FC Sion on Sun 02/08 (-2.32).
- npxG · last 6
- 2.03
- npxGA · last 6
- 1.67
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 25/07 | FC Thun | 2.53 | 1.89 | +0.64 | +0.64 |
| Sun 02/08 | FC Sion | 0.51 | 2.83 | -2.32 | -0.84 |
| Sun 09/08 | FC St. Gallen 1879 | 1.37 | 2.52 | -1.15 | -0.94 |
| Sat 22/08 | FC Lausanne-Sport | 1.36 | 0.43 | +0.93 | -0.47 |
| Sat 29/08 | Servette FC | 1.23 | 1.49 | -0.26 | -0.43 |
| Wed 02/09 | FC Vaduz | 2.47 | 1.10 | +1.37 | -0.13 |
| Sat 05/09 | Young Boys | 1.40 | 3.25 | -1.85 | -0.38 |
| Sun 13/09 | Basel | 1.61 | 1.93 | -0.32 | -0.37 |
| Sat 19/09 | Grasshopper Club Zürich | 4.08 | 1.79 | +2.29 | -0.07 |
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.84 npxG and 1.91 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- number 6 hardest of 12 in Swiss Super League
- 0.00 xG vs league average
- Over 9 league matches
- Last 5
- number 9 hardest of 12 in Swiss Super League
- −0.06 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
0.00 xG vs league average · over 9 matches · number 6 hardest of 12
- Grasshopper Club Zürich Home −0.32
- Basel Home −0.28
- Young Boys Away +0.42
- FC Vaduz Home −0.23
- Servette FC Away +0.10
- FC Lausanne-Sport Home −0.37
- FC St. Gallen 1879 Away +0.47
- FC Sion Away +0.34
- FC Thun Home −0.14
Last 5
−0.06 xG vs league average · over 5 matches · number 9 hardest of 12
- Grasshopper Club Zürich Home −0.32
- Basel Home −0.28
- Young Boys Away +0.42
- FC Vaduz Home −0.23
- Servette FC Away +0.10
FC Luzern shots and chance quality
Average volume, average quality. FC Luzern take 16.8 shots a match (league 15.3) at 0.11 npxG a shot (league 0.10), #4 in Swiss Super League for volume and #5 for quality. 68% of their shots come from inside the box (league 68%), and set pieces produce 29% of their npxG (league 27%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC St. Gallen 1879 | 20.9 |
| #2 | Young Boys | 19.1 |
| #3 | FC Lugano | 16.9 |
| #4 | FC Luzern | 16.8 |
| #5 | FC Sion | 16.6 |
| #6 | FC Thun | 15.7 |
| #7 | Grasshopper Club Zürich | 15.4 |
| #8 | Servette FC | 14.3 |
| #9 | FC Vaduz | 14.1 |
| #10 | FC Zürich | 12.6 |
| #11 | Basel | 11.8 |
| #12 | FC Lausanne-Sport | 9.1 |
- League avg
- 15.3
- Total
- 151 shots from 9 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | FC Sion | 0.13 |
| #2 | Grasshopper Club Zürich | 0.12 |
| #3 | FC Vaduz | 0.11 |
| #4 | Young Boys | 0.11 |
| #5 | FC Luzern | 0.11 |
| #6 | FC Zürich | 0.11 |
| #7 | FC Lugano | 0.10 |
| #8 | FC Thun | 0.10 |
| #9 | FC Lausanne-Sport | 0.09 |
| #10 | Basel | 0.09 |
| #11 | FC St. Gallen 1879 | 0.09 |
| #12 | Servette FC | 0.09 |
- League avg
- 0.10
- Total
- 16.56 npxG from 151 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Lugano | 11.8 |
| #2 | FC St. Gallen 1879 | 12.7 |
| #3 | FC Sion | 13.0 |
| #4 | FC Zürich | 13.9 |
| #5 | Young Boys | 14.0 |
| #6 | Servette FC | 14.3 |
| #7 | Grasshopper Club Zürich | 15.9 |
| #8 | FC Lausanne-Sport | 16.2 |
| #9 | FC Thun | 17.1 |
| #10 | Basel | 17.6 |
| #11 | FC Vaduz | 18.2 |
| #12 | FC Luzern | 18.6 |
- League avg
- 15.3
- Total
- 167 shots allowed from 9 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Basel | 0.08 |
| #2 | FC Lausanne-Sport | 0.08 |
| #3 | Young Boys | 0.10 |
| #4 | FC Sion | 0.10 |
| #5 | FC Lugano | 0.10 |
| #6 | FC Luzern | 0.10 |
| #7 | Servette FC | 0.10 |
| #8 | FC St. Gallen 1879 | 0.11 |
| #9 | FC Vaduz | 0.11 |
| #10 | FC Thun | 0.12 |
| #11 | Grasshopper Club Zürich | 0.13 |
| #12 | FC Zürich | 0.13 |
- League avg
- 0.10
- Total
- 17.23 npxGA from 167 shots
Shot profile
68% inside the box
League avg 68%
From 103 of 151 shots over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
69% allowed inside the box
League avg 68%
From 116 of 167 shots allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
71% open play · 29% set pieces
League avg 27% set pieces
From 4.9 of 16.6 npxG over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
72% open play · 28% set pieces
League avg 27% set pieces
From 4.9 of 17.1 npxG allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
FC Luzern home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 5 | 4 |
| xG / match | 2.42 | 1.36 |
| xGA / match | 1.43 | 2.77 |
| xGD / match | +0.99 | -1.41 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.96 | 0.60 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every FC Luzern match by xG
This season
- Matches
- 9
- xG / match
- 1.95
- xGA / match
- 2.02
- xGD / match
- -0.08
- Points
- 12 of 27
- Sat 19/09 Grasshopper Club Zürich H Best underlying xG 4.55 xGA 1.79 xGD +2.76 xPts 2.68
- Sun 13/09 Basel H xG 1.62 xGA 1.93 xGD -0.31 xPts 1.15
- Sat 05/09 Young Boys A xG 2.19 P xGA 3.36 xGD -1.17 xPts 0.75
- Wed 02/09 FC Vaduz H xG 2.42 xGA 1.10 xGD +1.32 xPts 2.29
- Sat 29/08 Servette FC A xG 1.23 xGA 1.64 xGD -0.41 xPts 1.04
- Sat 22/08 FC Lausanne-Sport H xG 0.98 xGA 0.41 xGD +0.57 xPts 1.90
- Sun 09/08 FC St. Gallen 1879 A xG 1.51 xGA 3.24 P xGD -1.73 xPts 0.46
- Sun 02/08 FC Sion A Weakest underlying xG 0.51 xGA 2.83 xGD -2.32 xPts 0.16
- Sat 25/07 FC Thun H xG 2.53 xGA 1.92 xGD +0.61 xPts 1.78
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 4.55. 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.
FC Luzern in Swiss Super League
Attack
- xG / match #4 of 12
- Shots / match #4 of 12
- Chance quality #5 of 12
- Home xG #3 of 12
- Away xG #11 of 12
Defence
- xGA / match #10 of 12
- Shots allowed #12 of 12
- Chance quality allowed #6 of 12
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.