xgEdge

Expected goals

Milan expected goals (xG) 2026/2027

Serie A · after 5 matches · updated 1 Oct

Milan's attacking and defensive expected goals in Serie A 2026/2027, compared with the results they produced and with the rest of the competition.

Milan xG and xGA per match

Every match ↓
Attack
1.58 xG per match
#7/20
Attack (xG per match) across Serie A, best first
Rank Club xG per match
#1 Inter 2.90
#2 Roma 2.56
#3 Como 1.89
#4 Monza 1.79
#5 Sassuolo 1.73
#6 Fiorentina 1.72
#7 Milan 1.58
#8 Juventus 1.55
#9 Lazio 1.55
#10 Frosinone 1.51
#11 Venezia 1.49
#12 Napoli 1.44
#13 Udinese 1.40
#14 Bologna 1.18
#15 Cagliari 1.09
#16 Lecce 1.06
#17 Torino 1.03
#18 Genoa 0.89
#19 Atalanta 0.81
#20 Parma 0.68
League avg
1.49
Total
7.91 5 matches
Defence
1.18 xGA per match
#5/20
Defence (xGA per match) across Serie A, best first
Rank Club xGA per match
#1 Juventus 0.48
#2 Bologna 0.95
#3 Monza 1.06
#4 Roma 1.11
#5 Milan 1.18
#6 Lazio 1.24
=7 Genoa 1.33
=7 Sassuolo 1.33
#9 Fiorentina 1.33
#10 Inter 1.34
#11 Napoli 1.40
#12 Como 1.53
#13 Parma 1.58
#14 Torino 1.69
#15 Cagliari 1.76
#16 Udinese 1.84
#17 Atalanta 1.87
#18 Frosinone 2.10
#19 Venezia 2.35
#20 Lecce 2.38
League avg
1.49
Total
5.90 5 matches
xG difference
+0.40 xGD per match
#6/20
xG difference (xGD per match) across Serie A, best first
Rank Club xGD per match
#1 Inter +1.55
#2 Roma +1.45
#3 Juventus +1.07
#4 Monza +0.73
#5 Sassuolo +0.41
#6 Milan +0.40
#7 Fiorentina +0.39
#8 Como +0.36
#9 Lazio +0.30
#10 Bologna +0.24
#11 Napoli +0.03
=12 Genoa -0.44
=12 Udinese -0.44
#14 Frosinone -0.59
#15 Torino -0.66
#16 Cagliari -0.66
#17 Venezia -0.87
#18 Parma -0.90
#19 Atalanta -1.06
#20 Lecce -1.32
League avg
0.00
Total
+2.01 5 matches
Expected points Model — Model output — computed from each match's xG, not a result. How xPts works →
1.63 xPts per match
#6/20
Expected points (xPts per match) across Serie A, best first
Rank Club xPts per match
#1 Roma 2.23
#2 Juventus 2.23
#3 Inter 2.21
#4 Monza 1.89
#5 Fiorentina 1.69
#6 Milan 1.63
#7 Sassuolo 1.63
#8 Lazio 1.62
#9 Como 1.60
#10 Bologna 1.55
#11 Napoli 1.50
#12 Udinese 1.13
#13 Cagliari 1.11
#14 Genoa 1.00
#15 Frosinone 0.98
#16 Venezia 0.93
#17 Torino 0.88
#18 Parma 0.70
#19 Atalanta 0.67
#20 Lecce 0.60
League avg
1.39
Total
8.16 vs 11 actual pts

Early-season figures: after 5 matches, per-match rates can move quickly.

What the xG says

Milan's underlying numbers are among the best in Serie A. They rank #6 for xG difference at +0.40 per match, built on high chance quality rather than low shot volume. Their 10 goals are 2.09 above 7.91 xG, while 11 points are 2.84 above 8.16 xPts. After only 5 matches, those gaps should still be read cautiously.

Actual vs expected

Measure Actual Expected Difference Reading
Goals vs xG Includes 0.96 xG from penalties
10 7.91 +2.09 scored 2.09 more than xG within normal variance
4 5.90 -1.90 conceded 1.90 fewer than xGA within normal variance

Select a row to chart it across the season.

Goals minus xG, match by match

Milan are 2.09 goals above their xG after 5 matches.

Goals
10
xG
7.91
Gap
+2.09
Sun 23/08 Fri 28/08 Sun 06/09 Sat 12/09 Sun 20/09 -1 0 +1 +2 +3 -0.15 -0.36 +0.53 +1.28 +2.09 -0.15 -0.21 +0.89 +0.75 +0.81 Running gap goals − xG Each match goals − xG
Milan: Goals vs xG, the gap after every match with xG
Date Opponent Goals xG Match gap Running gap
Sun 23/08 Torino 2 2.15 -0.15 -0.15
Fri 28/08 Venezia 2 2.21 -0.21 -0.36
Sun 06/09 Juventus 1 0.11 +0.89 +0.53
Sat 12/09 Lazio 2 1.25 +0.75 +1.28
Sun 20/09 Lecce 3 2.19 +0.81 +2.09

Goals vs xG ranking → Expected points ranking →

Milan xG trend

Current form +0.26 npxGD per match

All 5 matches with xG so far — the window fills at 6.

Out-created the opponent in 3 of 5 matches. The worst was against Juventus on Sun 06/09 (-1.52).

npxG · last 5
1.39
npxGA · last 5
1.13
-2 -1 0 +1 +2 +0.60 Sun 23/08 +1.41 Fri 28/08 -1.52 Sun 06/09 -0.96 Sat 12/09 +1.76 Sun 20/09 +0.26 season avg
Milan: non-penalty xG, xGA and their difference in each match, with the season's average so far
Date Opponent npxG npxGA npxGD Avg so far
Sun 23/08 Torino 1.61 1.01 +0.60 +0.60
Fri 28/08 Venezia 2.23 0.82 +1.41 +1.01
Sun 06/09 Juventus 0.09 1.61 -1.52 +0.16
Sat 12/09 Lazio 1.09 2.05 -0.96 -0.12
Sun 20/09 Lecce 1.93 0.17 +1.76 +0.26

Each bar is one match's non-penalty xG minus the non-penalty xG against; the line is that difference averaged over the season up to each match, and it finishes on the dashed season average — 1.39 npxG and 1.13 npxGA per match. Current form is the same difference over the last 6 matches with xG.

Form ranking →

Strength of schedule

Season so far
tied number 14 hardest of 20 in Serie A
−0.12 xG vs league average
Over 5 league matches
Opponents behind the figures

Season so far

−0.12 xG vs league average · over 5 matches · tied number 14 hardest of 20

  1. Lecce Home −0.58
  2. Lazio Away −0.02
  3. Juventus Away +0.58
  4. Venezia Home −0.32
  5. Torino Away −0.25

League schedule strength → How this is calculated →

Milan shots and chance quality

Low volume, high quality. Milan take 12.8 shots a match (league 14.6) at 0.11 npxG a shot (league 0.10), =13 in Serie A for volume and #6 for quality. 78% of their shots come from inside the box (league 66%), and set pieces produce 23% of their npxG (league 24%).

Attack

Shot volume
12.8 shots per match
=13/20
Shot volume (shots per match) across Serie A, best first
Rank Club shots per match
#1 Como 23.4
#2 Inter 23.2
#3 Roma 20.6
#4 Juventus 17.6
#5 Sassuolo 17.2
=6 Fiorentina 16.8
=6 Frosinone 16.8
#8 Monza 14.4
#9 Udinese 14.2
#10 Venezia 14.0
#11 Napoli 13.8
#12 Bologna 13.4
=13 Lazio 12.8
=13 Milan 12.8
=15 Atalanta 11.8
=15 Genoa 11.8
#17 Cagliari 10.8
#18 Torino 9.4
#19 Lecce 8.4
#20 Parma 8.2
League avg
14.6
Total
64 shots from 5 matches
Chance quality
0.11 npxG per shot
#6/20
Chance quality (npxG per shot) across Serie A, best first
Rank Club npxG per shot
#1 Roma 0.13
#2 Inter 0.12
#3 Monza 0.11
#4 Napoli 0.11
#5 Lecce 0.11
#6 Milan 0.11
#7 Lazio 0.11
#8 Venezia 0.10
#9 Fiorentina 0.10
#10 Torino 0.09
#11 Sassuolo 0.09
#12 Bologna 0.09
#13 Juventus 0.09
#14 Udinese 0.09
#15 Frosinone 0.09
#16 Como 0.08
#17 Parma 0.08
#18 Cagliari 0.08
#19 Genoa 0.06
#20 Atalanta 0.06
League avg
0.10
Total
6.95 npxG from 64 shots

Defence

Shots allowed
9.0 shots per match
#2/20
Shots allowed (shots per match) across Serie A, best first
Rank Club shots per match
#1 Juventus 7.8
#2 Milan 9.0
#3 Roma 9.2
#4 Inter 11.4
=5 Bologna 11.8
=5 Fiorentina 11.8
=5 Monza 11.8
#8 Lazio 13.0
#9 Venezia 14.4
#10 Como 15.0
#11 Torino 15.4
=12 Genoa 15.8
=12 Sassuolo 15.8
=14 Lecce 16.6
=14 Napoli 16.6
#16 Udinese 17.2
#17 Parma 18.4
#18 Atalanta 19.2
#19 Cagliari 20.4
#20 Frosinone 20.8
League avg
14.6
Total
45 shots allowed from 5 matches
Chance quality allowed
0.13 npxGA per shot
#18/20
Chance quality allowed (npxGA per shot) across Serie A, best first
Rank Club npxGA per shot
#1 Juventus 0.06
#2 Sassuolo 0.07
#3 Napoli 0.07
#4 Genoa 0.08
#5 Cagliari 0.08
#6 Bologna 0.08
#7 Lazio 0.08
#8 Frosinone 0.09
#9 Torino 0.09
#10 Como 0.09
#11 Monza 0.09
#12 Parma 0.09
#13 Atalanta 0.09
#14 Udinese 0.11
#15 Roma 0.11
#16 Inter 0.11
#17 Fiorentina 0.11
#18 Milan 0.13
#19 Lecce 0.14
#20 Venezia 0.15
League avg
0.10
Total
5.66 npxGA from 45 shots

Shot profile

Shot location

78% inside the box

League avg 66%

From 50 of 64 shots over 5 matches

Early-season figure: after 5 matches, the share can move quickly.

Shots allowed, location

69% allowed inside the box

League avg 66%

From 31 of 45 shots allowed over 5 matches

Early-season figure: after 5 matches, the share can move quickly.

Where the npxG comes from

77% open play · 23% set pieces

League avg 24% set pieces

From 1.6 of 6.9 npxG over 5 matches

Early-season figure: after 5 matches, the share can move quickly.

Where the npxG allowed comes from

81% open play · 19% set pieces

League avg 24% set pieces

From 1.1 of 5.8 npxG allowed over 5 matches

Early-season figure: after 5 matches, the share can move quickly.

Milan home and away xG

Milan per-match figures at home and away
Measure Home only 2 matches with xG Away
Matches 2 3
xG / match 2.20 1.17
xGA / match 0.51 1.63
xGD / match +1.70 -0.46
xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → 2.57 1.01

Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.

Every Milan match by xG

Window
Season Last 10 Last 5
Venue

Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.00. Best and weakest underlying mark the highest and lowest xGD once 5 matches have xG. Against the chances marks a win with xGD of −1.00 or lower, or a loss with +1.00 or higher. P marks a side with at least 0.50 xG from penalties.

Every result, all competitions →

Milan in Serie A

Attack

Defence

About the data

xG data
Provided by TheStatsAPI, and stored as published.
Derived metrics
xGD, per-match rates, rankings and rolling averages are calculated from the match data.
Model metrics
xPts is produced by our probability model.

Learn how our xG analytics work →

How the model works →