Hoffenheim v FC Heidenheim — Prediction, Odds & Stats
Saturday 25 October 2025 · 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
Hoffenheim are finishing below their chances — 2.9 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding sharply more than the chances against them merit — 5.0 goals above expected, which tends to correct.
FC Heidenheim have scored 19 from 17.3 expected and conceded 19 from 18.3 — both ends in line with the chances, so the recent record is a fair reflection.
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.69–1.17 | 0% | 0% | 0% | Home ✓ | |
| dc-xg-oos | 1.77–1.12 | 1-1 11% | 55% | 56% | 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 |
|---|---|---|---|---|---|---|---|
| 12' |
|
Tim Lemperle | 0.04 | Open Play | Right Foot | Saved Shot | Vladimir Coufal |
| 17' |
|
Fisnik Asllani | 0.02 | Open Play | Right Foot | Goal | Andrej Kramaric |
| 40' |
|
Andrej Kramaric | 0.07 | Direct Freekick | Right Foot | Missed Shot | — |
| 41' |
|
Arijon Ibrahimovic | 0.07 | Open Play | Left Foot | Saved Shot | Omar Traoré |
| 43' |
|
Albian Hajdari | 0.03 | From Corner | — | Missed Shot | Andrej Kramaric |
| 43' |
|
Tim Lemperle | 0.16 | From Corner | — | Missed Shot | Albian Hajdari |
| 46' |
|
Tim Lemperle | 0.81 | Open Play | Right Foot | Goal | Bazoumana Touré |
| 47' |
|
Fisnik Asllani | 0.11 | Open Play | Right Foot | Blocked Shot | — |
| 49' |
|
Albian Hajdari | 0.08 | Set Piece | Right Foot | Blocked Shot | Tim Lemperle |
| 49' |
|
Albian Hajdari | 0.07 | Set Piece | Left Foot | Blocked Shot | — |
| 50' |
|
Wouter Burger | 0.29 | Open Play | Left Foot | Saved Shot | Fisnik Asllani |
| 53' |
|
Patrick Mainka | 0.04 | Set Piece | — | Missed Shot | Jonas Föhrenbach |
| 59' |
|
Mathias Honsak | 0.02 | From Corner | Right Foot | Missed Shot | — |
| 61' |
|
Fisnik Asllani | 0.10 | Open Play | Right Foot | Saved Shot | Andrej Kramaric |
| 62' |
|
Andrej Kramaric | 0.45 | Open Play | Right Foot | Goal | Bazoumana Touré |
| 66' |
|
Marnon Busch | 0.27 | Open Play | Right Foot | Missed Shot | Stefan Schimmer |
| 69' |
|
Arijon Ibrahimovic | 0.10 | Open Play | Right Foot | Missed Shot | Mathias Honsak |
| 70' |
|
Jan Schöppner | 0.06 | Open Play | Right Foot | Blocked Shot | Mathias Honsak |
| 71' |
|
Jonas Föhrenbach | 0.04 | From Corner | — | Blocked Shot | Arijon Ibrahimovic |
| 71' |
|
Stefan Schimmer | 0.08 | From Corner | Left Foot | Blocked Shot | Arijon Ibrahimovic |
| 72' |
|
Grischa Prömel | 0.13 | Open Play | Right Foot | Blocked Shot | — |
| 74' |
|
Stefan Schimmer | 0.09 | Open Play | Right Foot | Goal | Jonas Föhrenbach |
| 86' |
|
Mathias Honsak | 0.03 | Open Play | Left Foot | Saved Shot | Marvin Pieringer |
| 87' |
|
Julian Niehues | 0.04 | Open Play | Right Foot | Blocked Shot | — |
| 87' |
|
Stefan Schimmer | 0.06 | Open Play | Left Foot | Shot On Post | Jonas Föhrenbach |
| 92' |
|
Muhammed Damar | 0.09 | Open Play | Right Foot | Saved Shot | Grischa Prömel |
Players
Hoffenheim
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Albian Hajdari DC | 90 | 0 | 0 | 3 | 1 | 0.17 | 0.16 | 0.45 |
| Bernardo DL | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Leon Avdullahu DMC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 1.64 |
| Oliver Baumann GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.45 |
| Robin Hranác DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 1.26 |
| Vladimir Coufal DR | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.04 | 0.13 |
| Andrej Kramaric AMC | 85 | 1 | 1 | 2 | 3 | 0.52 | 0.15 | 1.51 |
| Tim Lemperle AMR | 78 | 1 | 0 | 3 | 1 | 1.01 | 0.08 | 0.85 |
| Fisnik Asllani FW | 78 | 1 | 0 | 3 | 1 | 0.23 | 0.29 | 1.46 |
| Wouter Burger DMC | 69 | 0 | 0 | 1 | 0 | 0.29 | 0.00 | 0.87 |
| Bazoumana Touré AML | 69 | 0 | 2 | 0 | 2 | 0.00 | 1.26 | 1.35 |
| Grischa Prömel Sub | 21 | 0 | 0 | 1 | 1 | 0.13 | 0.09 | 0.22 |
| Alexander Prass Sub | 21 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.13 |
| Muhammed Damar Sub | 12 | 0 | 0 | 1 | 0 | 0.09 | 0.00 | 0.09 |
| Max Moerstedt Sub | 12 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Ozan Kabak Sub | 5 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
FC Heidenheim
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Arijon Ibrahimovic AMC | 90 | 0 | 0 | 2 | 2 | 0.17 | 0.12 | 0.17 |
| Jan Schöppner MC | 90 | 0 | 0 | 1 | 0 | 0.06 | 0.00 | 0.17 |
| Patrick Mainka DC | 90 | 0 | 0 | 1 | 0 | 0.04 | 0.00 | 0.09 |
| Jonas Föhrenbach DML | 90 | 0 | 1 | 1 | 3 | 0.04 | 0.20 | 0.42 |
| Tim Siersleben DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.07 |
| Diant Ramaj GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Omar Traoré DMR | 80 | 0 | 0 | 0 | 1 | 0.00 | 0.07 | 0.07 |
| Adrian Beck AMC | 69 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Budu Zivzivadze FW | 48 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Benedikt Gimber DC | 48 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Niklas Dorsch MC | 48 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Stefan Schimmer Sub | 42 | 1 | 0 | 3 | 1 | 0.24 | 0.27 | 0.42 |
| Julian Niehues Sub | 42 | 0 | 0 | 1 | 0 | 0.04 | 0.00 | 0.04 |
| Mathias Honsak Sub | 42 | 0 | 0 | 2 | 2 | 0.04 | 0.16 | 0.19 |
| Marnon Busch Sub | 21 | 0 | 0 | 1 | 0 | 0.27 | 0.00 | 0.27 |
| Marvin Pieringer Sub | 10 | 0 | 0 | 0 | 1 | 0.00 | 0.03 | 0.03 |