Bayer Leverkusen v Mainz 05 — Prediction, Odds & Stats
Saturday 28 February 2026 · GER-Bundesliga · 2526
Bundesliga
xG Prediction generated
AI prediction
ai-blend-oos No snapshot has been taken for this fixture yet; this is the stored price.Probabilities, not certainties. How they are made: the methodology.
Was this pick made in advance?
-oos is out of sample: it was fitted only on matches
played before this one, so its pick is a genuine forecast rather than hindsight.
Anything without that suffix was fitted on all available data.What the chances say
Bayer Leverkusen are finishing below their chances — 3.0 goals fewer than expected across 10 matches, despite creating the openings.
Mainz 05 are finishing sharply below their chances — 5.4 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding fewer than expected — 3.3 goals saved beyond what the chances suggest.
Finishing swings far more than chance creation, so a gap this size usually narrows. Over ten matches it is suggestive, not settled — a genuinely elite finisher beats expected goals for years.
What the model said
| Model | Home / Draw / Away | Expected goals | Likeliest score | O2.5 | BTTS | Outcome |
|---|---|---|---|---|---|---|
| ai-blend-oos | 2.04–0.96 | 0% | 0% | 0% | Home ✗ | |
| dc-xg-oos | 2.32–1.24 | 2-1 10% | 69% | 64% | Home ✗ |
A model whose name ends -oos was produced by the walk-forward backtest:
it was fitted only on matches played before this one, so the pick is genuinely out of sample.
Reading the xG timeline
Expected goals by minute
Reading the shot map
Shot map
Every shot
| Min | Team | Player | xG | Situation | Body part | Result | Assisted by |
|---|---|---|---|---|---|---|---|
| 0' |
|
Phillip Tietz | 0.04 | Open Play | Left Foot | Missed Shot | Sheraldo Becker |
| 3' |
|
Jonas Hofmann | 0.01 | Open Play | Right Foot | Saved Shot | Patrik Schick |
| 4' |
|
Sheraldo Becker | 0.06 | Open Play | Left Foot | Saved Shot | Phillip Tietz |
| 7' |
|
Patrik Schick | 0.08 | Open Play | Left Foot | Blocked Shot | Álex Grimaldo |
| 17' |
|
Paul Nebel | 0.06 | Open Play | Right Foot | Saved Shot | Phillip Tietz |
| 17' |
|
Phillip Tietz | 0.05 | Open Play | Right Foot | Blocked Shot | — |
| 36' |
|
Patrik Schick | 0.10 | Open Play | — | Saved Shot | Álex Grimaldo |
| 38' |
|
Stefan Posch | 0.05 | Set Piece | — | Missed Shot | Jae-Sung Lee |
| 62' |
|
Patrik Schick | 0.13 | Open Play | Left Foot | Saved Shot | Martin Terrier |
| 66' |
|
Sheraldo Becker | 0.26 | Open Play | Right Foot | Goal | Paul Nebel |
| 72' |
|
Phillip Tietz | 0.40 | From Corner | Left Foot | Saved Shot | Kaishu Sano |
| 78' |
|
Ibrahim Maza | 0.04 | From Corner | Right Foot | Blocked Shot | Martin Terrier |
| 86' |
|
Axel Tape | 0.02 | From Corner | Right Foot | Blocked Shot | Álex Grimaldo |
| 86' |
|
Jarell Quansah | 0.04 | From Corner | — | Missed Shot | Álex Grimaldo |
| 87' |
|
Jarell Quansah | 0.64 | Open Play | Left Foot | Goal | Christian Kofane |
| 90' |
|
Danny da Costa | 0.06 | Open Play | Right Foot | Missed Shot | Silas Wamangituka |
| 94' |
|
Martin Terrier | 0.70 | Open Play | Right Foot | Saved Shot | Patrik Schick |
| 94' |
|
Patrik Schick | 0.10 | Open Play | Left Foot | Missed Shot | Jarell Quansah |
| 95' |
|
Ibrahim Maza | 0.13 | Open Play | Right Foot | Blocked Shot | Jarell Quansah |
| 96' |
|
Edmond Tapsoba | 0.03 | From Corner | — | Missed Shot | Álex Grimaldo |
Players
Bayer Leverkusen
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Jarell Quansah DC | 90 | 1 | 0 | 2 | 2 | 0.68 | 0.23 | 0.88 |
| Patrik Schick FW | 90 | 0 | 0 | 4 | 2 | 0.41 | 0.71 | 1.76 |
| Edmond Tapsoba DC | 90 | 0 | 0 | 1 | 0 | 0.03 | 0.00 | 0.30 |
| Álex Grimaldo DML | 90 | 0 | 0 | 0 | 5 | 0.00 | 0.27 | 0.41 |
| Janis Blaswich GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.08 |
| Robert Andrich DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.08 |
| Exequiel Palacios MC | 89 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.31 |
| Ezequiél Fernández MC | 79 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.32 |
| Jonas Hofmann AMC | 66 | 0 | 0 | 1 | 0 | 0.01 | 0.00 | 0.11 |
| Ernest Poku AMC | 66 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.18 |
| Arthur DMR | 53 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Axel Tape Sub | 37 | 0 | 0 | 1 | 0 | 0.02 | 0.00 | 0.00 |
| Martin Terrier Sub | 24 | 0 | 0 | 1 | 2 | 0.70 | 0.17 | 0.83 |
| Ibrahim Maza Sub | 24 | 0 | 0 | 2 | 0 | 0.17 | 0.00 | 0.25 |
| Christian Kofane Sub | 11 | 0 | 1 | 0 | 1 | 0.00 | 0.64 | 0.64 |
| Aleix García Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.74 |
Mainz 05
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Phillip Tietz FW | 90 | 0 | 0 | 3 | 2 | 0.49 | 0.12 | 0.21 |
| Paul Nebel MC | 90 | 0 | 1 | 1 | 1 | 0.06 | 0.26 | 0.36 |
| Stefan Posch DC | 90 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.06 |
| Jae-Sung Lee MC | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.05 | 0.00 |
| Philipp Mwene DML | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.04 |
| Dominik Kohr DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.06 |
| Kaishu Sano MC | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.40 | 0.12 |
| Kacper Potulski DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Daniel Batz GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.26 |
| Silvan Widmer DMR | 88 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.10 |
| Sheraldo Becker FW | 76 | 1 | 0 | 2 | 1 | 0.32 | 0.04 | 0.36 |
| Silas Wamangituka Sub | 14 | 0 | 0 | 0 | 1 | 0.00 | 0.06 | 0.06 |
| Danny da Costa Sub | 2 | 0 | 0 | 1 | 0 | 0.06 | 0.00 | 0.06 |
| Lennard Maloney Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |