What standings do the model's game odds add up to?
Before the 2026-27 season the model logged a win probability for every regular-season game. Added up, they give each club a points total and a chance at the playoffs. They stay as logged on September 23, 2026 and are graded against the final standings when the season ends.
The model’s projection is more bunched than either outside projection: its clubs’ totals have a spread of 6.1 points, against 10.8 for Evolving Hockey and 7.9 for MoneyPuck. Its order of the clubs has a rank correlation of 0.83 with Evolving Hockey’s and 0.83 with MoneyPuck’s, where 1 would be the same order, and the two outside projections agree with each other at 0.92.
In 2025-26 the same method missed each club’s final points by 10.3 on average, and a flat guess, every club at the previous season’s league average, missed by 10.1. None of the three projections, this one or either outside one, was measurably better than the flat guess.
So read the projection as an order of the clubs with wide error around it, not as a forecast of anyone’s points.
2025-26 · every club · points
Average miss against a flat guess, 2025-26
Each dot is how many points a club a projection missed by, minus the flat guess’s miss, and each line its 95% interval. Left of zero is better than the flat guess; a line that crosses zero cannot be told from it.
OddPuck+0.2 [−1.3, +1.6]
Evolving Hockey−0.1 [−3.3, +3.0]
MoneyPuck+0.8 [−2.2, +3.7]
What the flat guess is — one season grades each club once, so the intervals are wide
The 2026-27 projection
Every club’s 84 games, each one’s logged win probability added up. The ± is one standard deviation of the games’ own luck and leaves out any error in the ratings: last season the same method missed by 10.3 points a club on average.
| # | Club | Division | Points | ± | Playoffs | 2025-26 | |
|---|---|---|---|---|---|---|---|
| 1 | Carolina Hurricanes | Metropolitan | 105.5 | 8.2 | 91% | 1550 | 113 |
| 2 | Ottawa Senators | Atlantic | 104.8 | 8.3 | 90% | 1547 | 99 |
| 3 | Colorado Avalanche | Central | 104.2 | 8.3 | 91% | 1543 | 121 |
| 4 | Vegas Golden Knights | Pacific | 102.4 | 8.3 | 88% | 1535 | 95 |
| 5 | Tampa Bay Lightning | Atlantic | 98.7 | 8.4 | 71% | 1522 | 106 |
| 6 | Philadelphia Flyers | Metropolitan | 98.5 | 8.4 | 71% | 1522 | 98 |
| 7 | Edmonton Oilers | Pacific | 98.5 | 8.4 | 77% | 1519 | 93 |
| 8 | Minnesota Wild | Central | 96.8 | 8.5 | 68% | 1513 | 104 |
| 9 | Dallas Stars | Central | 96.2 | 8.5 | 65% | 1511 | 112 |
| 10 | New Jersey Devils | Metropolitan | 95.8 | 8.5 | 59% | 1511 | 87 |
| 11 | Los Angeles Kings | Pacific | 95.3 | 8.5 | 63% | 1506 | 90 |
| 12 | Anaheim Ducks | Pacific | 95.3 | 8.5 | 63% | 1506 | 92 |
| 13 | Buffalo Sabres | Atlantic | 95.1 | 8.5 | 56% | 1508 | 109 |
| 14 | Utah Mammoth | Central | 94.3 | 8.5 | 56% | 1503 | 92 |
| 15 | Columbus Blue Jackets | Metropolitan | 94.2 | 8.5 | 51% | 1505 | 92 |
| 16 | Montréal Canadiens | Atlantic | 93.9 | 8.5 | 50% | 1503 | 106 |
| 17 | Detroit Red Wings | Atlantic | 93.4 | 8.5 | 47% | 1501 | 92 |
| 18 | St. Louis Blues | Central | 93.3 | 8.5 | 52% | 1499 | 86 |
| 19 | Pittsburgh Penguins | Metropolitan | 92.8 | 8.5 | 44% | 1499 | 98 |
| 20 | Florida Panthers | Atlantic | 92.7 | 8.5 | 44% | 1498 | 84 |
| 21 | Washington Capitals | Metropolitan | 92.2 | 8.5 | 42% | 1496 | 95 |
| 22 | Winnipeg Jets | Central | 91.5 | 8.5 | 44% | 1492 | 82 |
| 23 | Boston Bruins | Atlantic | 90.1 | 8.5 | 33% | 1488 | 100 |
| 24 | Nashville Predators | Central | 89.0 | 8.6 | 32% | 1482 | 86 |
| 25 | San Jose Sharks | Pacific | 88.4 | 8.6 | 31% | 1479 | 86 |
| 26 | New York Islanders | Metropolitan | 88.3 | 8.6 | 26% | 1481 | 91 |
| 27 | Seattle Kraken | Pacific | 86.1 | 8.6 | 22% | 1469 | 79 |
| 28 | New York Rangers | Metropolitan | 85.8 | 8.6 | 17% | 1470 | 77 |
| 29 | Chicago Blackhawks | Central | 84.8 | 8.6 | 17% | 1465 | 72 |
| 30 | Calgary Flames | Pacific | 84.7 | 8.6 | 18% | 1464 | 77 |
| 31 | Vancouver Canucks | Pacific | 82.3 | 8.6 | 12% | 1454 | 58 |
| 32 | Toronto Maple Leafs | Atlantic | 82.1 | 8.6 | 8% | 1455 | 78 |
Beside two outside projections
Two outside projections of the 2026-27 season are published: Evolving Hockey’s (published 2026-09-28) and MoneyPuck’s (published 2026-09-27 16:57 ET). Their tables are linked, not copied; the figures below are computed from them.
| Projection | Spread | Order vs OddPuck |
|---|---|---|
| OddPuck | 6.1 | The reference |
| Evolving Hockey | 10.8 | 0.83 |
| MoneyPuck | 7.9 | 0.83 |
- Both rank Florida Panthers, Washington Capitals, New York Rangers and Toronto Maple Leafs at least 5 places higher than the model does.
- Both rank Philadelphia Flyers, Los Angeles Kings and Anaheim Ducks at least 5 places lower than the model does.
Where their totals part from the model’s, they tend to part toward each club’s 2025-26 goals measured against its expected goals: a club whose goals ran ahead of its expected goals tends to sit higher in theirs than in the model’s. The correlation is 0.48 for Evolving Hockey and 0.49 for MoneyPuck, against −0.12 for the model’s own totals. The method note says why the model leaves that out.
How the same method did in 2025-26
The projection as it would have stood before 2025-26, rebuilt by the same code with nothing from that season in it, graded against the final standings beside the outside projections’ own 2025-26 tables (Evolving Hockey, MoneyPuck) and two simple baselines.
| Projection | Average miss | Against flat | Spread check |
|---|---|---|---|
| OddPuck | 10.3 | +0.2 [−1.3, +1.6] | 0.76 [−0.06, +1.53] |
| Evolving Hockey | 10.0 | −0.1 [−3.3, +3.0] | 0.61 [+0.22, +0.96] |
| MoneyPuck | 10.9 | +0.8 [−2.2, +3.7] | 0.48 [+0.04, +0.89] |
| Flat: every club at the previous season’s league average | 10.1 | The reference | Not a projection |
| The previous season’s points, pulled 30% toward the average | 12.3 | Not measured | Not a projection |
“Against flat” is a projection’s average miss minus the flat guess’s. The spread check is how far actual points moved per point of projected difference: 1 is about right, below 1 too spread out. One season grades each club once, so the 95% intervals are wide: a point or two between projections sits well inside them, and an interval that spans 0 against flat, or 1 on the spread check, cannot tell the two apart. On the spread check the model was not measurably off either way, Evolving Hockey was measurably too spread out, and MoneyPuck was measurably too spread out.
How the figures were made — code version a39e30200bb2
Each game’s win probability comes from the xG-Elo rating on the club pages. Every game moves the two clubs’ ratings by how far its expected-goal margin beat what their ratings expected, with home ice counted, and between seasons every rating is pulled 30% of the way back to 1500. The probabilities were written on September 23, 2026 to a record that refuses edits, and this page adds up those logged values rather than the current ones, which move as games are played.
A game went past regulation 22.2% of the time over the previous 5 seasons, and overtime and shootouts are treated as a coin flip. So a club with win probability p takes 2p + r/2 points from a game on average, where r is that rate, and its opponent takes the rest. The playoff chance is the share of 40,000 simulated seasons of the same games in which the club finished in the top three of its division or took one of its conference’s two wild cards, with ties broken at random; the league’s own tiebreakers are not modelled.
The ratings leave out goals measured against expected goals because that part does not carry over. Across 126 pairs of consecutive seasons, a club’s expected-goal differential correlated 0.73 with its next season’s, while its scoring and its goaltending measured against expected goals correlated 0.08 and 0.12.
Every interval comes from resampling the 32 clubs 20,000 times, with the two sides of each difference computed on the same clubs in every draw. In the 2025-26 rebuild Utah Mammoth started at 1500, because its identifier in the league’s data changed.
Every figure on this page comes from one run at this code version with its random draws fixed, so running it again at the same version gives the same numbers.