Skip to content

Guide

How to read OddPuck

What the figures on this site are, where they come from, and how the model was tested against the betting market.

Where the figures come from

OddPuck is a personal research site, not a betting service. It shows what its models expect and how those expectations have scored, and it never recommends a bet.

Model figures are computed overnight from five NHL seasons of play-by-play, 2021-22 to 2025-26, and stored, so a page shows the latest results rather than working anything out while you wait, and nothing here changes during a game. Most are recomputed every night; the two research studies change only when a study is run again, and cap hits when new contracts are entered. The one exception is the draft game, which scores the roster you build in your browser as you build it — a contest score, not a projection.

Projections are graded by walk-forward backtest: each forecast is made only from games played before the date it forecasts, then checked against what players went on to do.

Three terms to know first

xG
Expected goals: the model’s chance that each shot attempt scores, added up.
xG-Elo
A team rating built on xG margin, not results. Every club starts from 1500 and is pulled back toward it between seasons; “rated #” is a club’s rank on it.
Win chance
A team’s chance of winning a game, as the model projects it from xG-Elo before puck drop. Win chance is the model’s projection, not a betting recommendation. Its accuracy is modest, and wherever the site shows a win chance, it shows the model’s measured accuracy with it.

Abbreviations in the tables

Table headers mark these with a dotted underline; hovering over one shows the same definition.

GP
Games played
Att
Unblocked attempts — open-play shots that reached the net or missed it. Not the box score's shots on goal.
xGA
Expected goals against — what the model gave the attempts this goalie faced
GAx
Goals above expected — goals scored minus expected goals
GAx / att
Goals above expected per unblocked attempt: how far each attempt beat the model, whatever the volume
GSAx
Goals saved above expected — expected goals against minus goals actually conceded
GSAx / 100
Goals saved above expected per 100 unblocked attempts faced
SOG
Shots on goal
PPP
Power-play points — points recorded while this skater's side had the man advantage
P/GP
Points per game played
P/60
Points per sixty minutes of ice time
TOI
Time on ice, minutes and seconds
SV%
Save percentage — total saves over total shots faced
GAA
Goals against average
SA
Shots against
SV
Saves
GA
Goals against
GS
Games started
SO
Shutouts
Pts
Points — goals plus assists
Sample
Real games the recency-weighted rate rests on
Team games
The club's scheduled games in the window. Totals assume the player plays every one: injuries, scratches and trades are not modelled.

How the market benchmark was measured

The shots-on-goal projections — a full distribution of shots on goal for each skater with a posted line — were tested against the betting market on a season the model was never fitted to.

They were measured against the Pinnacle closing line, which they do not beat — shots-on-goal ROI −0.0709 [−0.0932, −0.0467] per unit over 7,171 bets in a 2025-26 backtest of 512 games, and the model's disagreement with the market carries no signal a paired test can separate from betting the other side instead. That is the measured result, reported rather than buried.

A held-out season. The model was fitted on the four seasons before 2025-26, and 2025-26 was used only to score it, so the season it was tested on could not shape it.

Closing lines only. Each bet is priced at the line the book closed with, not an earlier one. The close is the market’s best-informed price, and beating an early line can mean nothing more than being early.

A paired test. The model’s side of each bet is compared with the other side of the same bet, on the same games at the same prices, and it is that difference that is tested, resampled game by game. Two results set side by side cannot say whether one beat the other, because they share every game.

A related study, of how well the closing line itself is priced, needs no model at all: How well priced is the closing line?