The model makes PSV Eindhoven the title favourite, first in 65.5% of 1,000,000 simulated seasons, ahead of Ajax on 10.3% and Feyenoord on 8.8%. On expected points that is PSV Eindhoven 70.7, Ajax 59.4, Feyenoord 58.5. Three clubs finish in the top four more often than not: PSV Eindhoven 94.7%, Ajax 59.8%, Feyenoord 55.4%.

At the other end, PEC Zwolle carries the highest relegation risk at 62.0%, then Willem II on 59.9% and Sparta Rotterdam on 46.5%. The bottom club averages 31.6 points to PSV Eindhoven's 70.7.

This simulation is your chance to see the range of outcomes for each club based on pre-season strengths, a way to gauge the potential highs and lows without getting bogged down in the noise of week-to-week form. It's a snapshot, not a crystal ball. You get to see which clubs have a narrow band of possible finishes and which ones are all over the place. It doesn't account for injuries, fixture lists, or the chaos that is an actual season, so don't treat it as gospel. Use it to inform your thinking, to spot value where others might see noise. It's a tool, not a tipster. Make your own calls, but do it with the cold, hard edge of data backing you up.

Every club, every finishing position

Club123456789101112131415161718xPts
PSV Eindhoven65.5217.487.654.002.231.310.780.460.260.160.080.040.020.0170.7
Ajax10.3119.9916.5212.9710.278.066.224.833.612.651.841.220.740.410.220.100.040.0159.4
Feyenoord8.7817.8015.8213.0110.578.576.835.454.203.162.231.520.970.570.300.140.060.0258.5
Twente4.6611.2912.5912.2711.319.978.747.426.174.943.792.731.831.120.640.330.150.0555.5
AZ Alkmaar2.456.958.969.8310.099.969.568.848.036.925.764.473.292.211.370.790.370.1452.7
NEC Nijmegen2.406.768.649.589.899.889.448.898.047.105.914.673.482.381.480.860.440.1752.4
Groningen2.056.158.219.4110.0210.049.829.198.357.316.114.793.452.331.430.800.390.1452.2
GO Ahead Eagles1.233.985.797.178.148.849.279.329.178.637.776.565.153.732.511.550.840.3449.9
Utrecht1.003.435.296.837.888.819.359.669.509.008.086.845.313.802.541.540.800.3149.6
ADO Den Haag0.692.493.975.306.437.448.308.929.399.459.088.196.795.263.742.461.450.6547.8
Telstar0.642.353.805.066.247.248.198.889.379.529.198.386.995.443.912.621.510.6747.6
Heerenveen0.180.781.502.323.254.255.336.527.798.9710.0510.5710.309.137.415.673.862.1343.4
Excelsior0.070.370.781.311.972.793.744.886.167.639.2810.6411.4911.109.908.106.063.7241.0
Cambuur0.010.080.200.370.620.991.492.163.054.235.707.689.8911.9313.2813.7213.1611.4436.1
Fortuna Sittard0.010.050.110.240.430.721.091.662.403.494.946.789.0411.4813.5714.8015.1314.0535.0
Sparta Rotterdam0.030.090.180.340.570.901.422.153.154.536.418.6911.3213.6815.3216.0315.1734.4
Willem II0.010.030.080.160.270.480.781.221.932.944.406.489.0912.2315.7519.7124.4432.0
PEC Zwolle0.010.040.080.150.270.460.711.141.782.724.106.098.6911.8015.4519.9926.5331.6

Each cell is the percentage of 1,000,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

Every one of the 306 fixtures is played out from each club's attacking and defending strength, a blend of shots-adjusted Elo and last season's goal rates, then adjusted for this summer's transfers on both sides of the ball: a departed 16-goal scorer weakens a club's attack, while an incoming ball-winner (tackles won, interceptions, blocks) strengthens its defence. Scorelines are drawn from the same negative-binomial and Dixon-Coles model the live BetSignals signals use. Strengths are frozen at pre-season, so this is a start-of-season expectation, not a mid-season read.

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