How We Calculate NHL Power Rankings: The Elo System Behind Hockey Alchemy
2026-05-23 · methodology · Elo · power-rankings · predictions
A transparent look at the Elo rating system that powers our NHL power rankings, game predictions, and Stanley Cup odds. K=12, home ice = 50 points, 30% regression to the mean — and three different ways we account for margin of victory.
Most NHL power rankings are vibes. A panelist watches some games, reads some box scores, slots teams into a top-to-bottom list, and publishes it. Hockey Alchemy's power rankings are different: they're a direct read of an Elo rating system that updates after every NHL game. This post documents how the system works, why we made the choices we did, and what the numbers actually mean.
What Elo actually does
An Elo rating is a number that summarizes a team's strength. The math is built around two ideas:
- Expected result. Given two teams' ratings (and a home-ice adjustment), you compute the probability each team wins. Two equally-rated teams produce a 50/50 split. A 100-point gap produces about a 64/36 split. A 200-point gap is roughly 76/24.
- Surprise drives the update. After the game, both teams' ratings move by an amount proportional to how surprising the result was. A favorite winning at home barely moves the needle. An underdog winning on the road moves both ratings substantially.
The formula for expected result:
P(home wins) = 1 / (1 + 10^(-(home_elo - away_elo + 50) / 400))
After the game, the rating update is:
new_elo = old_elo + K * (actual_result - expected_result)
Where K=12 and actual_result is 1 (win) or 0 (loss). That's the whole engine. Everything else is calibration.
Why we chose these specific numbers
K = 12 (not 6)
FiveThirtyEight's NHL Elo uses K=6. We use K=12. The trade-off is responsiveness vs stability. K=6 produces smoother ratings; K=20 produces noisy ratings that overreact. K=12 sits in between — it lets a team move ~10-15 Elo points after a meaningful upset without chasing one-game noise. We picked it by backtesting prediction accuracy on 16 seasons of NHL games (2010-11 through 2025-26).
Home ice = 50 points
NHL home teams win about 54-55% of games in the regular season. Translated into Elo terms, 50 points is the right scale. This matches FiveThirtyEight's value.
Initial Elo = 1505
The salary-cap-era league average. Expansion teams (Vegas in 2017, Seattle in 2021) start at 1490 to reflect that expansion drafts produce below-average rosters on day one.
30% regression to the mean between seasons
Rosters turn over substantially in the offseason. The best team one season is rarely the best the next. We blend each team's end-of-season Elo with the league mean:
season_start_elo = end_elo * 0.70 + 1505 * 0.30
A 1600-rated team starts the next season at 1572.5. A 1400-rated team starts at 1431.5. The mean stays anchored to 1505.
Three variants — and why we run them all
NHL games have noisy outcomes. A team can play a clearly better game and lose because a goalie steals it. We run three Elo variants in parallel and compare their predictive accuracy.
1. Simple (the default)
Pure win/loss Elo. Every game contributes the same amount regardless of score. This is the variant we surface in the power rankings UI. Research by Tenkanen (2019) found that, for NHL specifically, margin-of-victory adjustments do not statistically improve predictive accuracy.
2. Margin of Victory (MOV)
Modeled after FiveThirtyEight's MOV multiplier — the Elo update is scaled by a function of goal differential. A 5-1 win counts more than a 2-1 OT win. Useful as a cross-check, but the gain in calibration is small.
3. xG Elo
Uses expected goals differential instead of the actual goal differential as the update signal. Stripped of finishing luck and goaltending heroics. Over a long enough horizon, xG Elo and simple Elo converge — the gap between them at any moment is a useful indicator of which teams are over- or under-performing their underlying play.
Power rankings vs Stanley Cup odds
Elo drives both surfaces. The power rankings page is a straight sort of current Elo ratings. The Stanley Cup odds are a 10,000-simulation Monte Carlo over the remaining bracket — for each playoff series, the model uses Elo ratings to compute a per-game win probability, then samples best-of-seven outcomes. Higher Elo, better odds.
What the numbers actually mean
The league average is 1505 by design. Teams typically range from about 1400 (bottom of the league) to about 1650 (top). A 100-point Elo gap corresponds to roughly a 64% win probability for the higher-rated team on neutral ice. Differences under ~30 Elo are within noise; differences of 100+ are large.
Elo doesn't know about injuries, trade-deadline acquisitions, coaching changes, or goaltender hot streaks. It treats wins and losses as binary, so a regulation win and an OT win count the same. And the playoffs are a small sample — even an accurate strength estimate can lose to the better team in a 7-game series.
For the full Elo glossary entry, see the analytics glossary. For the shot-quality side of our modeling, see how our expected goals model works.
Frequently Asked Questions
How does Hockey Alchemy calculate its NHL power rankings?
They are a direct read of an Elo rating system updated after every game, using K=12, a 50-point home-ice adjustment, and 30% regression to the mean between seasons. The default is pure win/loss Elo.
What does an NHL Elo rating mean?
The league average is 1505 by design. A 100-point gap corresponds to roughly a 64% win probability for the higher-rated team on neutral ice; differences under about 30 points are within noise.
More from The Lab
Talent vs Production: Why the Box Score Misleads
Two wingers score 20 goals; only one of them will do it again. The gap between what a player produced and the process underneath it is the most useful idea in hockey analytics - and it is the split our expected-goals and finishing models are built to make.
How Good Is Our WAR Model? We Ran Four Tests and Lost Two
We tested our WAR model against HockeyStats and Evolving Hockey on the four questions an honest player-value model has to answer, matched to each benchmark's published protocol. Summed to a team it loses both tests - it forecasts next season worse than simply reusing last season's standings. Measured per player it wins both, repeating at 0.77 against 0.62 and 0.46.
The Model That Earns Its Keep
Is our projection actually better than a simple average? We ran the honest test - forecasting one player's WAR next season, walk-forward across thirteen seasons - and beat the baseline that is supposed to be unbeatable. Then we ran it on goalies, where we lose.