Cagliari v Roma — Prediction, Odds & Stats
Sunday 7 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
Cagliari are finishing sharply below their chances — 5.0 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding fewer than expected — 4.0 goals saved beyond what the chances suggest.
Roma are finishing above their chances — 2.6 goals more than expected across 10 matches, which usually cools off.
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.64–1.51 | 0% | 0% | 0% | Away ✗ | |
| dc-xg-oos | 1.00–1.55 | 0-1 12% | 47% | 50% | 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 |
|---|---|---|---|---|---|---|---|
| 5' |
|
Ndary Adopo | 0.08 | Open Play | Right Foot | Blocked Shot | Adam Obert |
| 10' |
|
Tommaso Baldanzi | 0.11 | Open Play | Left Foot | Blocked Shot | Matìas Soulè Malvano |
| 11' |
|
Gennaro Borrelli | 0.04 | Open Play | Left Foot | Missed Shot | Alessandro Deiola |
| 15' |
|
Marco Palestra | 0.01 | Open Play | Left Foot | Saved Shot | Ndary Adopo |
| 22' |
|
Michael Folorunsho | 0.31 | Open Play | — | Saved Shot | Marco Palestra |
| 22' |
|
Sebastiano Esposito | 0.04 | Direct Freekick | Right Foot | Blocked Shot | — |
| 26' |
|
Sebastiano Esposito | 0.04 | Open Play | Right Foot | Saved Shot | Marco Palestra |
| 27' |
|
Sebastiano Esposito | 0.09 | Open Play | Left Foot | Missed Shot | Adam Obert |
| 28' |
|
Mehmet Zeki Çelik | 0.11 | Open Play | Right Foot | Blocked Shot | Matìas Soulè Malvano |
| 29' |
|
Lorenzo Pellegrini | 0.05 | From Corner | Right Foot | Blocked Shot | Matìas Soulè Malvano |
| 29' |
|
Matìas Soulè Malvano | 0.04 | From Corner | Left Foot | Saved Shot | Konstantinos Tsimikas |
| 41' |
|
Lorenzo Pellegrini | 0.07 | Open Play | Left Foot | Blocked Shot | — |
| 47' |
|
Lorenzo Pellegrini | 0.09 | Open Play | Right Foot | Saved Shot | Tommaso Baldanzi |
| 53' |
|
Sebastiano Esposito | 0.09 | Direct Freekick | Right Foot | Saved Shot | — |
| 58' |
|
Adam Obert | 0.36 | Open Play | Left Foot | Saved Shot | Sebastiano Esposito |
| 64' |
|
Alessandro Deiola | 0.03 | Open Play | Right Foot | Saved Shot | Sebastiano Esposito |
| 67' |
|
Gabriele Zappa | 0.05 | Open Play | Right Foot | Blocked Shot | — |
| 67' |
|
Michael Folorunsho | 0.07 | Open Play | Left Foot | Saved Shot | Sebastiano Esposito |
| 67' |
|
Sebastiano Esposito | 0.02 | Open Play | Right Foot | Missed Shot | Gennaro Borrelli |
| 75' |
|
Marco Palestra | 0.06 | Open Play | Left Foot | Missed Shot | Sebastiano Luperto |
| 81' |
|
Gianluca Gaetano | 0.11 | From Corner | Right Foot | Goal | Sebastiano Esposito |
Players
Cagliari
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Michael Folorunsho MC | 90 | 0 | 0 | 2 | 0 | 0.38 | 0.00 | 0.48 |
| Sebastiano Esposito FW | 90 | 0 | 1 | 5 | 4 | 0.29 | 0.57 | 0.68 |
| Ndary Adopo MC | 90 | 0 | 0 | 1 | 1 | 0.08 | 0.01 | 0.74 |
| Marco Palestra DMR | 90 | 0 | 0 | 2 | 2 | 0.07 | 0.35 | 0.63 |
| Alessandro Deiola MC | 90 | 0 | 0 | 1 | 1 | 0.03 | 0.04 | 0.51 |
| Sebastiano Luperto DC | 90 | 0 | 0 | 0 | 1 | 0.00 | 0.06 | 0.06 |
| Elia Caprile GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.09 |
| Juan Rodríguez DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Adam Obert DML | 78 | 0 | 0 | 1 | 2 | 0.36 | 0.17 | 0.70 |
| Gabriele Zappa DC | 70 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.84 |
| Gennaro Borrelli FW | 70 | 0 | 0 | 1 | 1 | 0.04 | 0.02 | 0.52 |
| Gianluca Gaetano Sub | 20 | 1 | 0 | 1 | 0 | 0.11 | 0.00 | 0.06 |
| Matteo Prati Sub | 20 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Riyad Idrissi Sub | 12 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Semih Kiliçsoy Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Alessandro Di Pardo Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
Roma
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Mile Svilar GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.11 |
| Mario Hermoso DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.11 |
| Kouadio Kone MC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.11 |
| Evan Ndicka DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.11 |
| Gianluca Mancini DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Konstantinos Tsimikas DML | 75 | 0 | 0 | 0 | 1 | 0.00 | 0.04 | 0.11 |
| Bryan Cristante MC | 64 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.11 |
| Lorenzo Pellegrini AMC | 63 | 0 | 0 | 3 | 0 | 0.20 | 0.00 | 0.26 |
| Matìas Soulè Malvano AMC | 63 | 0 | 0 | 1 | 3 | 0.04 | 0.26 | 0.21 |
| Tommaso Baldanzi FW | 54 | 0 | 0 | 1 | 1 | 0.11 | 0.09 | 0.30 |
| Mehmet Zeki Çelik DMR | 53 | 0 | 0 | 1 | 0 | 0.11 | 0.00 | 0.11 |
| Devyne Rensch Sub | 36 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Paulo Dybala Sub | 27 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Evan Ferguson Sub | 27 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Neil El Aynaoui Sub | 26 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Daniele Ghilardi Sub | 15 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |