xgEdge

Saturday, 19/09/2026 at 18:00

Full time
Match report · Swiss Super League

FC Luzern 5:1 Grasshopper Club Zürich

FC Luzern Home 4.55 xG · 23 shots
Grasshopper Club Zürich Away 1.79 xG · 21 shots
51 The scoreline reflected the chances

FC Luzern were the model's likeliest winner before kick-off at 48%. They won 5–1. The biggest difference was FC Luzern's attack: 4.55 xG against 1.93 projected (+2.62). Grasshopper Club Zürich produced 1.79 xG against 1.44 projected (+0.35).

Goals

  1. 5' Tyron Owusu FC Luzern · 0.23 xG chance 1–0
  2. 9' Oscar Kabwit FC Luzern · 0.36 xG chance 2–0
  3. 60' Daniel Mikołajewski (pen.) FC Luzern · 0.82 xG chance 3–0
  4. 73' Daniel Mikołajewski FC Luzern · 0.91 xG chance 4–0
  5. 76' Samuele Bengondo Grasshopper Club Zürich · 0.05 xG chance 4–1
  6. 86' Daniel Mikołajewski FC Luzern · 0.38 xG chance 5–1

The model against the result

priced before kick-off
FC Luzern
48% What happened
Draw
26%
Grasshopper Club Zürich
26%

Data coverage Both teams have the full 20-match model window available.

Projected vs produced

Expected goals
FC Luzern The model projected 1.93 Produced 4.55 Difference +2.62
Grasshopper Club Zürich The model projected 1.44 Produced 1.79 Difference +0.35

FC Luzern produced 2.62 xG more than projected

Projected before kick-off Produced on the night

The shots behind it

FC Luzern Grasshopper Club Zürich
Shots
23
21
On target
11
6
Inside the box
16
14
xG per shot
0.21
0.08
Open play xG
3.80
0.74
Set-piece xG
0.22
1.02
Penalties
1
0
Shot-level xG may differ from the published match total

The provider publishes the match total separately from its shot-by-shot values. Those values are rounded to two decimals and, leaving out penalties and own goals, add up to its non-penalty xG: 4.08 for FC Luzern and 1.79 for Grasshopper Club Zürich.

Shot map

Both teams shown attacking the same goal for comparison.

FC Luzern · Daniel Mikołajewski · 73' · Goal · 2 m · 0.91 xG FC Luzern · Daniel Mikołajewski · 60' · Goal · 12 m · 0.82 xG FC Luzern · Faveurdi Bongeli · 89' · No goal · 11 m · 0.63 xG FC Luzern · Daniel Mikołajewski · 86' · Goal · 9 m · 0.38 xG FC Luzern · Oscar Kabwit · 9' · Goal · 10 m · 0.36 xG FC Luzern · Tyron Owusu · 19' · No goal · 8 m · 0.29 xG Grasshopper Club Zürich · Bujar Pllana · 44' · No goal · 5 m · 0.27 xG FC Luzern · Tyron Owusu · 5' · Goal · 14 m · 0.23 xG Grasshopper Club Zürich · Samuel Krasniqi · 16' · No goal · 11 m · 0.23 xG FC Luzern · Leonardo Bertone · 19' · No goal · 4 m · 0.20 xG Grasshopper Club Zürich · Samuele Bengondo · 46' · No goal · 4 m · 0.20 xG FC Luzern · Tyron Owusu · 51' · No goal · 9 m · 0.18 xG FC Luzern · Oscar Kabwit · 51' · No goal · 7 m · 0.17 xG Grasshopper Club Zürich · Samuel Krasniqi · 70' · No goal · 3 m · 0.13 xG Grasshopper Club Zürich · Nikolas Muci · 16' · No goal · 8 m · 0.12 xG Grasshopper Club Zürich · Samuel Krasniqi · 24' · No goal · 12 m · 0.11 xG FC Luzern · Matteo Di Giusto · 20' · No goal · 16 m · 0.10 xG FC Luzern · Matteo Di Giusto · 13' · No goal · 13 m · 0.09 xG Grasshopper Club Zürich · Nikolas Muci · 46' · No goal · 7 m · 0.08 xG FC Luzern · Oscar Kabwit · 52' · No goal · 8 m · 0.08 xG FC Luzern · Nando Toggenburger · 90' · No goal · 21 m · 0.08 xG Grasshopper Club Zürich · Giotto Morandi · 44' · No goal · 14 m · 0.07 xG Grasshopper Club Zürich · Young-Jun Lee · 90' · No goal · 7 m · 0.07 xG FC Luzern · Daniel Mikołajewski · 42' · No goal · 12 m · 0.06 xG Grasshopper Club Zürich · Samuel Krasniqi · 67' · No goal · 5 m · 0.06 xG Grasshopper Club Zürich · Young-Jun Lee · 68' · No goal · 20 m · 0.06 xG Grasshopper Club Zürich · Samuel Krasniqi · 80' · No goal · 19 m · 0.06 xG Grasshopper Club Zürich · Nikolas Muci · 18' · No goal · 11 m · 0.05 xG FC Luzern · Matteo Di Giusto · 45' · No goal · 20 m · 0.05 xG FC Luzern · Oscar Kabwit · 66' · No goal · 20 m · 0.05 xG Grasshopper Club Zürich · Samuele Bengondo · 76' · Goal · 18 m · 0.05 xG Grasshopper Club Zürich · Manex Gibelalde Mújika · 28' · No goal · 12 m · 0.04 xG Grasshopper Club Zürich · Denis Sahin · 69' · No goal · 22 m · 0.04 xG Grasshopper Club Zürich · Young-Jun Lee · 86' · No goal · 21 m · 0.04 xG FC Luzern · Oscar Kabwit · 36' · No goal · 23 m · 0.03 xG FC Luzern · Mio Zimmermann · 37' · No goal · 22 m · 0.03 xG FC Luzern · Leonardo Bertone · 42' · No goal · 25 m · 0.03 xG FC Luzern · Oscar Kabwit · 45' · No goal · 9 m · 0.03 xG Grasshopper Club Zürich · Kenzo Goudmijn · 75' · No goal · 24 m · 0.03 xG FC Luzern · Leonardo Bertone · 41' · No goal · 27 m · 0.02 xG Grasshopper Club Zürich · Manex Gibelalde Mújika · 50' · No goal · 15 m · 0.02 xG FC Luzern · Tyron Owusu · 55' · No goal · 11 m · 0.02 xG Grasshopper Club Zürich · Denis Sahin · 88' · No goal · 25 m · 0.02 xG Grasshopper Club Zürich · Young-Jun Lee · 72' · No goal · 1 m · 0.01 xG

All shots

44 shots · 6.60 xG

Hover, focus or tap a shot to read it.

  • FC Luzern
  • Grasshopper Club Zürich
  • Filled = goal
  • Dot area = xG (the smallest chances drawn at a minimum size)

Recent form

Last 6 · xG per match
FC Luzern

1.66 xG created 1.95 xGA

  • D 1.51 created, 3.24 conceded against FC St. Gallen 1879
  • W 0.98 created, 0.41 conceded against FC Lausanne-Sport
  • D 1.23 created, 1.64 conceded against Servette FC
  • W 2.42 created, 1.10 conceded against FC Vaduz
  • D 2.19 created, 3.36 conceded against Young Boys
  • L 1.62 created, 1.93 conceded against Basel
Grasshopper Club Zürich

2.29 xG created 2.03 xGA

  • L 0.97 created, 2.15 conceded against Servette FC
  • L 2.99 created, 2.31 conceded against FC Vaduz
  • W 2.23 created, 1.80 conceded against FC St. Gallen 1879
  • D 4.16 created, 0.77 conceded against FC Zürich
  • W 2.26 created, 1.67 conceded against FC Thun
  • L 1.10 created, 3.48 conceded against FC Sion

xG created xG conceded (xGA) W / D / L: the match result

Head to head

FC Luzern: 4 won · 0 drawn · 0 lost

Pre-match model & market record

7 opportunities flagged2 won5 lost

  • Lost
  • Lost
  • Lost
  • Won
  • Won
  • Lost
  • Lost
View pre-match record
The outcomes the model flagged on FC Luzern against Grasshopper Club Zürich before kick-off, in the order they ranked, with the price, the edge and what became of each.
Selection Price Edge Result
Grasshopper Club Zürich to win 4.33 +14.4% Lost
Draw 4.33 +11.2% Lost
Grasshopper Club Zürich 2+ goals 2.50 +8.3% Lost
Grasshopper Club Zürich to score 1.30 +2.5% Won
Both teams to score 1.44 +1.6% Won
FC Luzern at most 1 goal 2.50 +1.3% Lost
Under 2.5 goals 3.10 +0.8% Lost

Pre-match model vs market

Outcome Model Market Difference Fair odds
FC Luzern 47.9% 56.5% −8.6 pp 2.09
Draw 25.7% 21.7% +3.9 pp 3.90
Grasshopper Club Zürich 26.4% 21.7% +4.7 pp 3.79

Other markets

Outcome Model Market Difference Fair odds
FC Luzern to score 87.6% 88.1% −0.5 pp 1.14
FC Luzern not to score 12.4% 11.9% +0.5 pp 8.05
Grasshopper Club Zürich to score 78.9% 72.3% +6.5 pp 1.27
Grasshopper Club Zürich not to score 21.1% 27.7% −6.5 pp 4.73
Both teams to score 70.4% 64.5% +5.9 pp 1.42
Both teams not to score 29.6% 35.5% −5.9 pp 3.38
FC Luzern 2+ goals 59.5% 62.5% −3.0 pp 1.68
FC Luzern at most 1 goal 40.5% 37.5% +3.0 pp 2.47
Grasshopper Club Zürich 2+ goals 43.3% 37.5% +5.8 pp 2.31
Grasshopper Club Zürich at most 1 goal 56.7% 62.5% −5.8 pp 1.76
Over 1.5 goals 88.3% 86.4% +1.9 pp 1.13
Under 1.5 goals 11.7% 13.6% −1.9 pp 8.56
Over 2.5 goals 67.5% 69.4% −1.9 pp 1.48
Under 2.5 goals 32.5% 30.6% +1.9 pp 3.08

Prices and probabilities are the ones stored before kick-off; nothing here is recalculated. Edge is the model's probability times the price, minus one, so a flagged outcome that lost is the ordinary case rather than a contradiction.

Model details

Show
Fit window
the last 20 matches, recency weighted (a match 107 days old counts half)
FC Luzern sample
20 matches
Grasshopper Club Zürich sample
20 matches
Computed
9 hours before kick-off
Prices taken
9 hours before kick-off

Limitations

The model reads expected goals and nothing else. It does not know the lineups, who is injured or suspended, what either side has to play for, the weather, or how congested the schedule around this match is.