Saturday, 19/09/2026 at 18:00
Full timeFC Luzern 5:1 Grasshopper Club Zürich
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
- 5' Tyron Owusu FC Luzern · 0.23 xG chance 1–0
- 9' Oscar Kabwit FC Luzern · 0.36 xG chance 2–0
- 60' Daniel Mikołajewski (pen.) FC Luzern · 0.82 xG chance 3–0
- 73' Daniel Mikołajewski FC Luzern · 0.91 xG chance 4–0
- 76' Samuele Bengondo Grasshopper Club Zürich · 0.05 xG chance 4–1
- 86' Daniel Mikołajewski FC Luzern · 0.38 xG chance 5–1
The model against the result
- 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
FC Luzern produced 2.62 xG more than projected
Projected before kick-off Produced on the night
The shots behind it
- 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.
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
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
2.29 xG created 2.03 xGA
xG created xG conceded (xGA) W / D / L: the match result
Head to head
Pre-match model & market record
7 opportunities flagged2 won5 lost
- Lost
- Lost
- Lost
- Won
- Won
- Lost
- Lost
View pre-match record Hide pre-match record
| 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 Hide
- 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.