Udinese v Napoli — Prediction, Odds & Stats
Sunday 14 December 2025 · ITA-Serie A · 2526
Serie A
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
Udinese are conceding sharply fewer than expected — 4.7 goals saved beyond what the chances suggest.
Napoli are conceding fewer than expected — 2.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 | 0.80–1.58 | 0% | 0% | 0% | Away ✗ | |
| dc-xg-oos | 0.96–1.62 | 0-1 12% | 48% | 49% | Away ✗ |
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' |
|
Jakub Piotrowski | 0.02 | Open Play | Left Foot | Missed Shot | Jurgen Ekkelenkamp |
| 10' |
|
Noa Lang | 0.02 | From Corner | Right Foot | Missed Shot | — |
| 14' |
|
Giovanni Di Lorenzo | 0.05 | From Corner | — | Missed Shot | Noa Lang |
| 16' |
|
Christian Kabasele | 0.02 | Set Piece | — | Saved Shot | Nicolo Zaniolo |
| 22' |
|
Oumar Solet | 0.02 | Open Play | Right Foot | Missed Shot | Jurgen Ekkelenkamp |
| 25' |
|
Nicolò Bertola | 0.02 | Open Play | Right Foot | Blocked Shot | Keinan Davis |
| 29' |
|
Jurgen Ekkelenkamp | 0.06 | Open Play | Right Foot | Saved Shot | Jakub Piotrowski |
| 30' |
|
Nicolo Zaniolo | 0.03 | Open Play | Left Foot | Blocked Shot | Alessandro Zanoli |
| 31' |
|
Nicolo Zaniolo | 0.05 | Direct Freekick | Left Foot | Blocked Shot | — |
| 41' |
|
Jakub Piotrowski | 0.02 | Open Play | — | Missed Shot | Nicolo Zaniolo |
| 46' |
|
Jurgen Ekkelenkamp | 0.08 | Open Play | Left Foot | Blocked Shot | — |
| 48' |
|
Rasmus Højlund | 0.08 | Open Play | Right Foot | Missed Shot | — |
| 51' |
|
Nicolò Bertola | 0.02 | Open Play | Right Foot | Saved Shot | Jurgen Ekkelenkamp |
| 56' |
|
Jurgen Ekkelenkamp | 0.15 | Direct Freekick | Right Foot | Blocked Shot | — |
| 58' |
|
Jakub Piotrowski | 0.35 | Open Play | Right Foot | Saved Shot | Jurgen Ekkelenkamp |
| 58' |
|
Jurgen Ekkelenkamp | 0.05 | Open Play | Right Foot | Missed Shot | — |
| 58' |
|
Nicolo Zaniolo | 0.08 | Open Play | Left Foot | Blocked Shot | — |
| 62' |
|
Keinan Davis | 0.06 | Open Play | Left Foot | Blocked Shot | Nicolo Zaniolo |
| 67' |
|
Nicolo Zaniolo | 0.38 | Open Play | Left Foot | Missed Shot | Jurgen Ekkelenkamp |
| 72' |
|
Jurgen Ekkelenkamp | 0.02 | Open Play | Right Foot | Goal | Keinan Davis |
| 77' |
|
Scott McTominay | 0.06 | Open Play | Left Foot | Blocked Shot | Leonardo Spinazzola |
| 87' |
|
Rasmus Højlund | 0.62 | Open Play | Right Foot | Missed Shot | Lorenzo Lucca |
| 91' |
|
Oier Zarraga | 0.45 | Open Play | Right Foot | Missed Shot | — |
| 92' |
|
Lorenzo Lucca | 0.06 | Open Play | Right Foot | Shot On Post | Rasmus Højlund |
| 94' |
|
Matteo Politano | 0.03 | Open Play | Left Foot | Missed Shot | — |
Players
Udinese
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Nicolo Zaniolo FW | 90 | 0 | 0 | 4 | 3 | 0.54 | 0.10 | 0.63 |
| Jakub Piotrowski MC | 90 | 0 | 0 | 3 | 1 | 0.40 | 0.06 | 0.49 |
| Christian Kabasele DC | 90 | 0 | 0 | 1 | 0 | 0.02 | 0.00 | 0.02 |
| Oumar Solet DC | 90 | 0 | 0 | 1 | 0 | 0.02 | 0.00 | 0.09 |
| Thomas Thiesson Kristensen DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.06 |
| Alessandro Zanoli DMR | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.03 | 0.19 |
| Maduka Okoye GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Jesper Karlström MC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Keinan Davis FW | 85 | 0 | 1 | 1 | 2 | 0.06 | 0.04 | 0.19 |
| Nicolò Bertola DML | 85 | 0 | 0 | 2 | 0 | 0.03 | 0.00 | 0.05 |
| Jurgen Ekkelenkamp MC | 84 | 1 | 0 | 5 | 5 | 0.36 | 0.79 | 1.00 |
| Oier Zarraga Sub | 6 | 0 | 0 | 1 | 0 | 0.45 | 0.00 | 0.45 |
| Kingsley Ehizibue Sub | 5 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Adam Buksa Sub | 5 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Saba Goglichidze Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Iker Bravo Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
Napoli
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Rasmus Højlund FW | 90 | 0 | 0 | 2 | 1 | 0.70 | 0.06 | 0.76 |
| Scott McTominay MC | 90 | 0 | 0 | 1 | 0 | 0.06 | 0.00 | 0.14 |
| Giovanni Di Lorenzo DMR | 90 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.70 |
| Vanja Milinkovic-Savic GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.06 |
| David Neres FWR | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.12 |
| Amir Rrahmani DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.70 |
| Eljif Elmas MC | 84 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Leonardo Spinazzola DML | 83 | 0 | 0 | 0 | 1 | 0.00 | 0.06 | 0.06 |
| Alessandro Buongiorno DC | 76 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Noa Lang FWL | 62 | 0 | 0 | 1 | 1 | 0.02 | 0.05 | 0.08 |
| Sam Beukema DC | 62 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.08 |
| Matteo Politano Sub | 28 | 0 | 0 | 1 | 0 | 0.03 | 0.00 | 0.09 |
| Stanislav Lobotka Sub | 28 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.06 |
| Mathías Olivera Sub | 14 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.06 |
| Miguel Gutiérrez Sub | 7 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.62 |
| Lorenzo Lucca Sub | 6 | 0 | 0 | 1 | 1 | 0.06 | 0.62 | 0.69 |