The model makes Inter the title favourite, first in 52.4% of 20,000 simulated seasons, ahead of AS Roma on 33.2% and Como on 5.3%. On expected points that is Inter 81.9, AS Roma 78.9, Como 69.5. Four clubs finish in the top four more often than not: Inter 96.0%, AS Roma 91.6%, Como 57.0%, Juventus 51.1%.

At the other end, Venezia carries the highest relegation risk at 55.1%, then Genoa on 43.3% and Monza on 40.4%. The bottom club averages 33.9 points to Inter's 81.9.

Here's the deal. This simulation isn't about nailing down one outcome. It's about showing you the spread of possibilities, giving you a feel for how much wriggle room each club has. It's a handy tool to see which teams are in a tight race and which ones have a bit more breathing space. But remember, it doesn't factor in the chaos of an actual season: injuries, suspensions, or that one fixture everyone's talking about. It's data-led, sure, but it's not clairvoyant. Use it to gauge the landscape, but keep your eyes on the real-world noise too. It's a guide, not a gospel.

What has changed since August

The pre-season projection was run before a ball was kicked. 50 matches later, these are the clubs the model has most changed its mind about. Movement is in expected finishing position, which is measured against the rest of the division, so it reflects a changed view rather than simply games being played.

Rising

Falling

Compare with the full pre-season table, exactly as the model had it in August.

Every club, every finishing position

Club1234567891011121314151617181920xPts
Inter52.3927.2211.295.062.360.860.530.220.060.010.0181.9
AS Roma33.1933.9316.338.194.432.330.970.410.150.040.030.0178.9
Como5.3212.4620.4918.7215.4511.567.384.182.221.180.500.320.140.050.010.010.0169.5
Juventus3.6010.4617.7219.2916.5512.868.865.132.821.320.720.340.160.080.040.030.0268.3
AC Milan3.609.1016.1818.6517.0113.379.496.093.241.630.860.460.190.070.020.030.010.0167.7
Napoli1.093.538.5911.7715.5516.2314.7510.627.304.782.661.530.800.450.160.110.050.0363.0
Lazio0.572.045.088.9412.2115.2416.4314.1110.126.473.862.321.410.600.340.160.060.030.0161.0
Atalanta0.190.903.075.979.0512.3215.4215.9012.629.226.053.792.341.350.860.450.280.150.040.0158.2
Frosinone0.030.140.441.232.675.057.5411.3813.7113.3512.129.397.565.533.762.721.620.890.600.2651.4
Bologna0.010.080.290.781.503.225.948.6511.8712.9712.4711.399.016.845.123.792.711.801.060.5049.2
Sassuolo0.080.280.661.482.724.868.1010.1412.3412.1511.729.667.726.214.273.182.371.350.6948.6
Cagliari0.030.100.270.661.762.835.168.6410.8212.7312.5611.5810.077.935.514.442.561.660.7246.8
Udinese0.020.130.400.881.853.315.668.6610.7712.0311.7410.919.127.505.744.443.192.311.3446.5
Torino0.010.080.180.491.231.983.504.876.658.6510.0310.7011.5011.1910.569.668.7238.9
Fiorentina0.010.030.060.140.390.881.563.064.646.287.859.6310.4711.2311.8111.0311.259.7038.3
Parma0.010.010.010.100.220.581.162.093.404.796.658.6410.1811.5212.2613.3013.3111.7836.8
Monza0.010.010.060.230.601.211.863.134.856.247.939.6911.5212.2913.0013.6013.7836.5
Lecce0.030.050.130.361.071.692.904.596.278.4610.1011.5512.4713.4814.2612.6036.7
Genoa0.010.010.070.150.460.941.842.944.156.217.759.4610.8911.8413.8113.8515.6335.9
Venezia0.010.010.050.080.280.531.061.963.124.355.677.458.9711.3413.8117.0424.2933.9

Each cell is the percentage of 20,000 simulated seasons in which that club finished in that position, so every row adds up to 100%. A blank cell is under 0.005%, not impossible. The xPts column is the club's average points total across those seasons. Club names link to that club's full model profile.

View the same grid as a shaded heatmap, which is easier to scan than the table above.

How it's built

The table above is where the division actually stands after 50 matches, finished off 20,000 times over. Points already won are treated as certain, and only the 330 fixtures left to play are simulated, from each club's attacking and defending strength: a blend of shots-adjusted Elo, last season's goal rates and how the club has actually played this season, the last of those counting for more the longer the season runs. Scorelines are drawn from the same negative-binomial and Dixon-Coles model the live BetSignals signals use. It knows nothing about upcoming fixture difficulty, injuries or suspensions.

_Generated from the BetSignals season simulation, 20,000 runs._