Deserved to win and expected points
Both of these replay a game from its shots. Every unblocked shot gets another go, as a goal with its xG as the chance, and I work out how often each team comes out ahead.
It reads the chances, not the result: a team that turns 2.0 xG into five goals still scored them. It treats each shot as its own coin flip, which isn't quite how hockey works, so it predicts fewer ties than really happen.
Deserved to win
A game page opens with each team's chance of winning the game its shots made. Instead of simulating the game thousands of times, I do the math directly, so you get the same answer every time you load the page. The coin-flip assumption above means a game can look a bit more one-sided than it felt.
Empty-net shots are left out. A pulled goalie hands the leading team near-certain chances that say what the score was, not who played better. A tie is split 50/50, as a shootout nearly is.
The nitty-gritty
Every unblocked shot counts, overtime included: misses, saves and goals. A blocked shot has no location, so no xG. Each team's goals follow a Poisson-binomial distribution (a sum of weighted coin flips), and the chance of each final margin comes from the two teams'. That's exactly what simulating the game endlessly would give, without the sampling noise. The shootout itself isn't in the shot list.
Beside it are each team's xG from the same shots and a chart of the final margins the shots make, the real one darker. With empty nets out, that xG can differ a little from the on-ice tables, which count them under All. A game needs every shot's xG: one that doesn't have it gets no verdict rather than a guess.
Expected points
The Standings page sets each team's points beside its expected points (xPTS): what its shots were worth. A win is worth 2 points. A game tied after 60 minutes is worth 1.5 on average: a point each, plus one more for whoever wins overtime or the shootout, which I treat as a coin flip. Add that up over a team's games and you get xPTS.
Real points minus xPTS is everything the shots don't capture: finishing, goaltending, overtime and luck. Because the replays predict too few ties, the league's xPTS runs a little short of its real points, so the average team sits a bit above 0. Compare teams with each other, or with that average, which the Standings page shows for the season.
The nitty-gritty
Only regulation counts here. Each game is replayed from both teams' unblocked shots in the first three periods, giving P(win in regulation), P(tied after 60 minutes) and P(loss). So xPTS = 2 × P(win) + 1.5 × P(tie), summed over a team's games. Overtime shots are left out, since overtime is the coin flip, and so are empty-net shots.
In 2026-27's first 264 games (to November 8, 2026), 16% of the replays were tied after regulation, against 22% of real games that went to overtime. The Standings page shows both rates for the season you're looking at. A team's xPTS is blank until every one of its games has every shot's xG.