KHL: 2026/27 season forecast
10,000 simulations · 591 matches to play · updated 13 October 2026
The model played the remaining 591 matches 10,000 times. Magnitogorsk have the best chance to win the regular season: 32%, Lokomotiv Yaroslavl 25%.
Race for first place
| Date | Magnitogorsk | Lokomotiv Yaroslavl | CSKA Moscow | Spartak Moscow | Dinamo Minsk | Avangard Omsk |
|---|---|---|---|---|---|---|
| 7 September | 8% | 16% | 7% | 2% | 15% | 14% |
| 14 September | 10% | 24% | 2% | 16% | 7% | 5% |
| 21 September | 19% | 14% | 4% | 20% | 5% | 2% |
| 28 September | 26% | 10% | 11% | 10% | 2% | 1% |
| 5 October | 31% | 12% | 20% | 3% | 2% | <1% |
| 12 October | 31% | 24% | 24% | 3% | 1% | <1% |
| 13 October | 32% | 25% | 24% | 3% | 1% | <1% |
Chances of every team
Sorted by projected points. ▲▼ — change in percentage points over the last week. “Run-in” — how hard the remaining games are, 1 = the hardest.
| # | Team | Pts | Proj. | Run-in | 1st | Playoffs |
|---|---|---|---|---|---|---|
| 1 | Magnitogorsk | 25 (16) | 99 | 22 | 32%▲1 | >99% |
| 2 | Lokomotiv Yaroslavl | 22 (14) | 98 | 20 | 25%▲13 | >99%▲1 |
| 3 | CSKA Moscow | 22 (14) | 97 | 18 | 24%▲4 | >99% |
| 4 | Nizhny Novgorod | 19 (14) | 88 | 21 | 6%▼6 | 99% |
| 5 | Spartak Moscow | 16 (14) | 83 | 15 | 3% | 96% |
| 6 | Niznekamsk | 18 (15) | 79 | 8 | 2%▼2 | 89%▼1 |
| 7 | Khabarovsk | 17 (14) | 79 | 16 | 1%▲1 | 90%▲17 |
| 8 | Barys Astana | 16 (14) | 79 | 13 | 2%▼1 | 86%▲2 |
| 9 | Cherepovets | 20 (15) | 78 | 3 | 1%▲1 | 93%▲28 |
| 10 | Shanghai | 17 (12) | 77 | 17 | 1% | 89%▲9 |
| 11 | Dinamo Minsk | 17 (15) | 77 | 12 | 1%▼1 | 90% |
| 12 | Yekaterinburg | 14 (13) | 77 | 4 | 1% | 83%▲13 |
| 13 | Salavat Ufa | 17 (15) | 76 | 19 | 1%▼2 | 83%▼4 |
| 14 | SKA St. Petersburg | 17 (14) | 72 | 1 | <1%▼5 | 80%▼15 |
| 15 | Bars Kazan | 15 (15) | 71 | 2 | <1%▼2 | 70%▼18 |
| 16 | Vladivostok | 13 (14) | 69 | 14 | <1% | 65%▲12 |
| 17 | Avangard Omsk | 12 (13) | 65 | 6 | <1% | 50%▼15 |
| 18 | Tractor Chelyabinsk | 10 (13) | 62 | 5 | <1%▼1 | 43%▼23 |
| 19 | Novosibirsk | 13 (15) | 62 | 7 | <1% | 41%▲16 |
| 20 | Dynamo Moscow | 14 (16) | 62 | 10 | — | 50%▼14 |
| 21 | Lada | 6 (15) | 39 | 11 | — | 3%▼7 |
| 22 | Sochi | 6 (14) | 37 | 9 | — | 2% |
Chance of every place
Show the 22 × 22 table
| Team | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Magnitogorsk | 32 | 22 | 14 | 10 | 6 | 5 | 3 | 2 | 2 | 1 | 1 | 1 | ||||||||||
| Lokomotiv Yaroslavl | 25 | 22 | 15 | 11 | 8 | 5 | 4 | 3 | 2 | 1 | 1 | 1 | 1 | |||||||||
| CSKA Moscow | 24 | 20 | 15 | 11 | 8 | 6 | 4 | 3 | 2 | 2 | 1 | 1 | 1 | 1 | ||||||||
| Nizhny Novgorod | 6 | 9 | 12 | 11 | 10 | 10 | 8 | 7 | 6 | 4 | 4 | 3 | 3 | 2 | 2 | 1 | 1 | |||||
| Spartak Moscow | 3 | 5 | 8 | 9 | 9 | 9 | 8 | 8 | 7 | 6 | 6 | 5 | 4 | 4 | 3 | 2 | 2 | 1 | 1 | |||
| Niznekamsk | 2 | 3 | 5 | 6 | 7 | 7 | 8 | 7 | 7 | 7 | 7 | 6 | 6 | 5 | 5 | 4 | 3 | 3 | 2 | 1 | ||
| Khabarovsk | 1 | 2 | 4 | 5 | 6 | 8 | 8 | 8 | 7 | 8 | 7 | 7 | 6 | 6 | 4 | 4 | 3 | 2 | 2 | 1 | ||
| Barys Astana | 2 | 3 | 4 | 6 | 7 | 7 | 7 | 7 | 7 | 6 | 6 | 6 | 6 | 5 | 5 | 4 | 4 | 3 | 3 | 2 | ||
| Cherepovets | 1 | 2 | 4 | 5 | 6 | 6 | 7 | 8 | 8 | 8 | 7 | 7 | 6 | 6 | 5 | 5 | 3 | 3 | 2 | 1 | ||
| Shanghai | 1 | 3 | 4 | 4 | 5 | 6 | 7 | 7 | 6 | 7 | 6 | 6 | 6 | 6 | 6 | 5 | 5 | 4 | 3 | 2 | 1 | |
| Dinamo Minsk | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 6 | 7 | 7 | 6 | 7 | 7 | 6 | 6 | 5 | 5 | 4 | 3 | 2 | 1 | |
| Yekaterinburg | 1 | 2 | 3 | 5 | 6 | 6 | 6 | 6 | 6 | 7 | 7 | 6 | 7 | 6 | 6 | 5 | 5 | 4 | 3 | 2 | 1 | |
| Salavat Ufa | 1 | 2 | 3 | 4 | 6 | 6 | 6 | 7 | 7 | 7 | 7 | 6 | 6 | 6 | 5 | 5 | 5 | 4 | 3 | 2 | 1 | |
| SKA St. Petersburg | 1 | 2 | 3 | 3 | 4 | 4 | 5 | 5 | 5 | 6 | 7 | 7 | 7 | 7 | 7 | 8 | 7 | 6 | 4 | 1 | ||
| Bars Kazan | 1 | 1 | 2 | 3 | 3 | 4 | 4 | 5 | 6 | 7 | 7 | 7 | 7 | 8 | 8 | 8 | 7 | 6 | 5 | 2 | ||
| Vladivostok | 1 | 2 | 3 | 3 | 4 | 4 | 5 | 5 | 6 | 6 | 6 | 7 | 8 | 8 | 8 | 8 | 7 | 6 | 2 | |||
| Avangard Omsk | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 5 | 6 | 6 | 8 | 8 | 10 | 11 | 10 | 11 | 4 | 1 | |||
| Tractor Chelyabinsk | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 4 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 6 | 2 | |||
| Novosibirsk | 1 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 5 | 6 | 8 | 8 | 9 | 12 | 13 | 14 | 6 | 1 | ||||
| Dynamo Moscow | 1 | 1 | 1 | 1 | 2 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 11 | 12 | 13 | 13 | 6 | 1 | ||||
| Lada | 1 | 1 | 1 | 2 | 5 | 11 | 38 | 40 | ||||||||||||||
| Sochi | 1 | 1 | 1 | 4 | 9 | 31 | 53 |
Percent; empty cells are under 1%.
How it is calculated
Each team gets an attack and a defence rating from this season’s matches (football: expected goals and actual goals, the opponents’ strength taken into account). Last season is only the starting point, worth eight games: after a few rounds this season decides.
Every remaining fixture is then played out with Poisson-distributed goals, 10,000 times, and each simulated season ends in a table by points, goal difference and goals scored. Ratings are only estimates and form changes, so every simulation also moves each team's strength by a random amount.
A league match within four days after a European game costs a team a little (on 2021–2026 data such sides took 0.08 points per match fewer than in their other games). Head-to-head tie-breakers, points deductions and domestic cups are not modelled. The forecast is recalculated as soon as new results come in.