Expected goals
Grasshopper Club Zürich expected goals (xG) 2026/2027
Swiss Super League · after 9 matches · updated 1 Oct
Grasshopper Club Zürich'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.
Grasshopper Club Zürich 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
- 18.07 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
- 19.66 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
- -1.59 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
- 11.60 vs 8 actual pts
Early-season figures: after 9 matches, per-match rates can move quickly.
What the xG says
Grasshopper Club Zürich's underlying numbers sit close to the Swiss Super League average. They rank #8 for xG difference at -0.18 per match, built on elite chance quality rather than about average shot volume. Their 13 goals are 5.07 below 18.07 xG, while 8 points are 3.60 below 11.60 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
Grasshopper Club Zürich are 5.07 goals below their xG after 9 matches. The gap was widest at -5.18, against FC Thun on Sat 12/09.
- Goals
- 13
- xG
- 18.07
- Gap
- -5.07
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 25/07 | FC Lausanne-Sport | 1 | 0.74 | +0.26 | +0.26 |
| Sun 02/08 | FC Lugano | 1 | 1.83 | -0.83 | -0.57 |
| Sat 08/08 | Servette FC | 1 | 0.97 | +0.03 | -0.54 |
| Sun 30/08 | FC Vaduz | 2 | 2.99 | -0.99 | -1.53 |
| Wed 02/09 | FC St. Gallen 1879 | 2 | 2.23 | -0.23 | -1.76 |
| Sat 05/09 | FC Zürich | 2 | 4.16 | -2.16 | -3.92 |
| Sat 12/09 | FC Thun | 1 | 2.26 | -1.26 | -5.18 |
| Tue 15/09 | FC Sion | 2 | 1.10 | +0.90 | -4.28 |
| Sat 19/09 | FC Luzern | 1 | 1.79 | -0.79 | -5.07 |
Goals vs xG ranking → Expected points ranking → Compare with every club in Europe →
Grasshopper Club Zürich xG trend
Current form -0.02 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 Tue 15/09 (-3.16).
- npxG · last 6
- 2.13
- npxGA · last 6
- 2.15
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 25/07 | FC Lausanne-Sport | 0.74 | 0.79 | -0.05 | -0.05 |
| Sun 02/08 | FC Lugano | 1.83 | 2.13 | -0.30 | -0.17 |
| Sat 08/08 | Servette FC | 0.97 | 2.17 | -1.20 | -0.52 |
| Sun 30/08 | FC Vaduz | 2.99 | 1.53 | +1.46 | -0.02 |
| Wed 02/09 | FC St. Gallen 1879 | 2.23 | 1.38 | +0.85 | +0.15 |
| Sat 05/09 | FC Zürich | 3.39 | 0.77 | +2.62 | +0.56 |
| Sat 12/09 | FC Thun | 2.08 | 1.67 | +0.41 | +0.54 |
| Tue 15/09 | FC Sion | 0.32 | 3.48 | -3.16 | +0.08 |
| Sat 19/09 | FC Luzern | 1.79 | 4.08 | -2.29 | -0.18 |
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.82 npxG and 2.00 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- number 4 hardest of 12 in Swiss Super League
- +0.02 xG vs league average
- Over 9 league matches
- Last 5
- tied number 3 hardest of 12 in Swiss Super League
- +0.07 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.02 xG vs league average · over 9 matches · number 4 hardest of 12
- FC Luzern Away −0.05
- FC Sion Home +0.34
- FC Thun Away −0.14
- FC Zürich Home −0.27
- FC St. Gallen 1879 Home +0.47
- FC Vaduz Away −0.23
- Servette FC Away +0.10
- FC Lugano Home +0.33
- FC Lausanne-Sport Away −0.37
Last 5
+0.07 xG vs league average · over 5 matches · tied number 3 hardest of 12
- FC Luzern Away −0.05
- FC Sion Home +0.34
- FC Thun Away −0.14
- FC Zürich Home −0.27
- FC St. Gallen 1879 Home +0.47
Grasshopper Club Zürich shots and chance quality
Average volume, high quality. Grasshopper Club Zürich take 15.4 shots a match (league 15.3) at 0.12 npxG a shot (league 0.10), #7 in Swiss Super League for volume and #2 for quality. 65% of their shots come from inside the box (league 68%), and set pieces produce 34% 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
- 139 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.34 npxG from 139 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
- 143 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
- 18.00 npxGA from 143 shots
Shot profile
65% inside the box
League avg 68%
From 90 of 139 shots over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
69% allowed inside the box
League avg 68%
From 98 of 143 shots allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
66% open play · 34% set pieces
League avg 27% set pieces
From 5.5 of 16.3 npxG over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
83% open play · 17% set pieces
League avg 27% set pieces
From 3.1 of 18.0 npxG allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
Grasshopper Club Zürich home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 4 | 5 |
| xG / match | 2.33 | 1.75 |
| xGA / match | 2.05 | 2.30 |
| xGD / match | +0.29 | -0.55 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.49 | 1.13 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every Grasshopper Club Zürich match by xG
This season
- Matches
- 9
- xG / match
- 2.01
- xGA / match
- 2.18
- xGD / match
- -0.18
- Points
- 8 of 27
- Sat 19/09 FC Luzern A Weakest underlying xG 1.79 xGA 4.55 xGD -2.76 xPts 0.24
- Tue 15/09 FC Sion H xG 1.10 P xGA 3.48 xGD -2.38 xPts 0.23
- Sat 12/09 FC Thun A xG 2.26 xGA 1.67 xGD +0.59 xPts 1.79
- Sat 05/09 FC Zürich H Best underlying xG 4.16 P xGA 0.77 xGD +3.39 xPts 2.89
- Wed 02/09 FC St. Gallen 1879 H xG 2.23 xGA 1.80 xGD +0.43 xPts 1.67
- Sun 30/08 FC Vaduz A xG 2.99 xGA 2.31 P xGD +0.68 xPts 1.81
- Sat 08/08 Servette FC A xG 0.97 xGA 2.15 xGD -1.18 xPts 0.57
- Sun 02/08 FC Lugano H xG 1.83 xGA 2.13 xGD -0.30 xPts 1.17
- Sat 25/07 FC Lausanne-Sport A xG 0.74 xGA 0.80 xGD -0.06 xPts 1.24
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.
Grasshopper Club Zürich in Swiss Super League
Attack
- xG / match #3 of 12
- Shots / match #7 of 12
- Chance quality #2 of 12
- Home xG #4 of 12
- Away xG #1 of 12
Defence
- xGA / match #11 of 12
- Shots allowed #7 of 12
- Chance quality allowed #11 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.