Borussia Dortmund v Wolfsburg — Prediction, Odds & Stats
Saturday 3 May 2025 · GER-Bundesliga · 2425
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
Borussia Dortmund are finishing below their chances — 2.3 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding fewer than expected — 2.7 goals saved beyond what the chances suggest.
Wolfsburg are finishing sharply below their chances — 6.8 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding fewer than expected — 2.2 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 | 1.84–1.32 | 0% | 0% | 0% | 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 |
|---|---|---|---|---|---|---|---|
| 2' |
|
Serhou Guirassy | 0.43 | Open Play | Right Foot | Goal | Julian Brandt |
| 7' |
|
Konstantinos Koulierakis | 0.01 | Open Play | Left Foot | Missed Shot | Kilian Fischer |
| 8' |
|
Konstantinos Koulierakis | 0.02 | Open Play | Left Foot | Missed Shot | — |
| 9' |
|
Patrick Wimmer | 0.08 | Open Play | Left Foot | Missed Shot | — |
| 11' |
|
Lukas Nmecha | 0.02 | Open Play | Right Foot | Saved Shot | Kilian Fischer |
| 29' |
|
Pascal Groß | 0.04 | Open Play | — | Blocked Shot | — |
| 39' |
|
Tiago Tomás | 0.03 | Open Play | Right Foot | Blocked Shot | Patrick Wimmer |
| 47' |
|
Andreas Skov Olsen | 0.26 | Open Play | Right Foot | Missed Shot | Tiago Tomás |
| 53' |
|
Serhou Guirassy | 0.10 | Open Play | Right Foot | Missed Shot | Julian Ryerson |
| 55' |
|
Daniel Svensson | 0.13 | Open Play | Right Foot | Missed Shot | Julian Ryerson |
| 58' |
|
Serhou Guirassy | 0.54 | Open Play | Right Foot | Goal | Pascal Groß |
| 60' |
|
Julian Brandt | 0.10 | Open Play | Right Foot | Missed Shot | Pascal Groß |
| 62' |
|
Joakim Maehle | 0.51 | Open Play | — | Missed Shot | Bence Dárdai |
| 68' |
|
Felix Nmecha | 0.04 | Open Play | Right Foot | Blocked Shot | Julian Ryerson |
| 68' |
|
Karim Adeyemi | 0.52 | Open Play | Left Foot | Goal | Ramy Bensebaini |
| 71' |
|
Konstantinos Koulierakis | 0.02 | From Corner | — | Missed Shot | Lovro Majer |
| 72' |
|
Karim Adeyemi | 0.40 | Open Play | Left Foot | Goal | Julian Brandt |
| 74' |
|
Mohammed Amoura | 0.04 | Open Play | Right Foot | Missed Shot | Andreas Skov Olsen |
| 76' |
|
Jonas Wind | 0.08 | Open Play | Right Foot | Missed Shot | Andreas Skov Olsen |
| 82' |
|
Julien Duranville | 0.10 | Open Play | Right Foot | Saved Shot | Karim Adeyemi |
| 87' |
|
Julien Duranville | 0.15 | Open Play | Left Foot | Blocked Shot | Emre Can |
| 90' |
|
Jonas Wind | 0.29 | Open Play | Right Foot | Saved Shot | Lovro Majer |
Players
Borussia Dortmund
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Daniel Svensson DML | 90 | 0 | 0 | 1 | 0 | 0.13 | 0.00 | 0.66 |
| Ramy Bensebaini DC | 90 | 0 | 1 | 0 | 1 | 0.00 | 0.52 | 1.55 |
| Niklas Süle DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.76 |
| Waldemar Anton DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.73 |
| Julian Ryerson DMR | 90 | 0 | 0 | 0 | 3 | 0.00 | 0.28 | 0.92 |
| Gregor Kobel GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.60 |
| Serhou Guirassy FW | 85 | 2 | 0 | 3 | 0 | 1.07 | 0.00 | 1.46 |
| Pascal Groß MC | 85 | 0 | 1 | 1 | 2 | 0.04 | 0.64 | 0.83 |
| Julian Brandt AMC | 79 | 0 | 2 | 1 | 2 | 0.10 | 0.82 | 1.69 |
| Felix Nmecha MC | 79 | 0 | 0 | 1 | 0 | 0.04 | 0.00 | 1.09 |
| Jamie Bynoe-Gittens AMC | 70 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.43 |
| Karim Adeyemi Sub | 20 | 2 | 0 | 2 | 1 | 0.91 | 0.10 | 1.01 |
| Julien Duranville Sub | 11 | 0 | 0 | 2 | 0 | 0.25 | 0.00 | 0.25 |
| Emre Can Sub | 11 | 0 | 0 | 0 | 1 | 0.00 | 0.15 | 0.25 |
| Marcel Sabitzer Sub | 5 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.10 |
| Carney Chukwuemeka Sub | 5 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.10 |
Wolfsburg
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Joakim Maehle DML | 90 | 0 | 0 | 1 | 0 | 0.51 | 0.00 | 0.53 |
| Andreas Skov Olsen DMR | 90 | 0 | 0 | 1 | 2 | 0.26 | 0.12 | 0.70 |
| Konstantinos Koulierakis DC | 90 | 0 | 0 | 3 | 0 | 0.05 | 0.00 | 0.07 |
| Aster Vranckx MC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.04 |
| Bence Dárdai MC | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.51 | 0.51 |
| Kamil Grabara GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Kilian Fischer DC | 79 | 0 | 0 | 0 | 2 | 0.00 | 0.03 | 0.10 |
| Denis Vavro DC | 79 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.04 |
| Patrick Wimmer MC | 73 | 0 | 0 | 1 | 1 | 0.08 | 0.03 | 0.89 |
| Tiago Tomás FW | 73 | 0 | 0 | 1 | 1 | 0.03 | 0.26 | 0.30 |
| Lukas Nmecha FW | 73 | 0 | 0 | 1 | 0 | 0.02 | 0.00 | 0.02 |
| Jonas Wind Sub | 17 | 0 | 0 | 2 | 0 | 0.38 | 0.00 | 0.38 |
| Mohammed Amoura Sub | 17 | 0 | 0 | 1 | 0 | 0.04 | 0.00 | 0.04 |
| Lovro Majer Sub | 17 | 0 | 0 | 0 | 2 | 0.00 | 0.32 | 0.38 |
| David Odogu Sub | 11 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.29 |
| Mads Roerslev Sub | 11 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.29 |