Methodology
How the Blueprint model works
At a glance Even strength xG & defense Special teams & shooting Replacement Real results 3-year talent Goalies Contracts The cards

The model at a glance

Every NHL skater is measured in Wins Above Replacement (WAR): how many wins he adds compared with the kind of player a team could call up or sign cheaply. WAR is the sum of six parts, each measured in goals and then converted to wins.

EV OffenseDriving quality chances at even strength
EV DefenseLimiting chances against at even strength
Power PlayDriving chances on the man advantage
Penalty KillLimiting chances while shorthanded
PenaltiesPenalties drawn minus penalties taken
ShootingGoals scored above what his shots were expected to produce

Goals become wins using a goals-per-win value calculated for each season (roughly five to six goals per win, depending on how much scoring there was league-wide). Goaltenders aren't part of this model; evaluating them is a different problem.

Even strength: separating a player from the people around him

The hardest part of evaluating a player is untangling him from his linemates, his opponents and his deployment. A third-liner who plays with elite centres looks good on the stat sheet; a shutdown defenseman who starts every shift in his own end against the other team's top line looks worse than he is.

To handle this, EV Offense and EV Defense come from a regularized adjusted plus-minus (RAPM) regression. Every even-strength shift in the league goes into one model: 5-on-5, 4-on-4 and 3-on-3, including overtime. The model credits or charges each player for the expected goals created while he was on the ice, after accounting for:

Each season starts from the player's estimate the season before, then updates based on what he did this year. That keeps a player's rating from swinging wildly on a small sample while still letting a real improvement or decline show up. How strongly the model leans on that starting point is tuned on held-out data, not set by hand.

Chances are measured with our own expected goals (xG) model: a machine-learning model built from 1.6 million unblocked NHL shot attempts that estimates the chance each shot becomes a goal. It looks at distance, angle, shot type, the shooter's handedness (off-wing shots), the play before the shot, rebounds and how far the angle changed, rush chances, the exact skaters on the ice (including empty nets), how long both teams' players have been on their shift, and the game situation.

Hockey changes, so each past season is scored by a model trained on the seasons around it, and this season's games by a model trained on the three most recent. Every shot is scored by a model that never saw it in training: across every shot since 2010-11 that comes to an AUC of 0.78, where 0.5 is a coin flip and 1.0 is perfect.

Where expected goals fall short, especially on defense

xG tells you what happened while a player was on the ice, not how well he defended.

EV Defense measures how many expected goals the other team generated while a player was on the ice, adjusted for everyone around him. That's useful, but it isn't the same thing as defending well, and anyone who has played the position knows the difference.

The act of defending is a series of small things: the gap you keep on the rush, the stick you get into a passing lane, winning the race to a dumped puck, the retrieval and first pass that ends the shift before a shot ever happens. xG only sees the end result, the shots that did or didn't get taken, and several things muddy that picture:

This is exactly why our Player Reports don't stop at xG. For individual players we track the defending itself on video: takeaways, retrievals, puck losses, zone entries against, and breakouts. Then a former player writes up what it means.

Special teams, penalties and shooting

Power play and penalty kill

The same regression approach is applied to power-play and penalty-kill shifts, measuring how much each player drives chances for (PP) or limits chances against (PK) on the unit. On the player cards, a power-play or penalty-kill percentile is only shown for players with a real role on that unit (roughly a minute or more per game). A few end-of-penalty shifts shouldn't earn anyone a 96th-percentile penalty-kill ranking.

Penalties

Penalties drawn minus penalties taken, valued by what a power play is worth in goals. Drawing penalties is a real, repeatable skill; it's one of the reasons Connor McDavid rates the way he does.

Shooting

Goals scored minus the expected goals from that player's own shots. In a single season this is exactly what happened: if a player finished at a high rate, he gets full credit for it. Over several seasons we treat it more carefully, because finishing above expected repeats far less from year to year than driving play does (see 3-year talent).

What "replacement level" means

Zero WAR is a replacement-level player, the kind of depth player any team can find cheaply. We define that from real depth charts: forwards who rank below 13th on their own team in even-strength ice time, and defensemen below 7th. A player's WAR is how much better he is than that group.

Checked against real team results

This is one of the things that makes our model different. A model can look sensible player by player and still get the overall weights wrong, for example by giving defense too much or too little influence on total WAR. So we check it against reality: for every team-season, we add up what our model says each component was worth and compare it with what the team actually did.

If the model's even-strength offense is right, a team whose players add up to +20 goals of offense should actually have generated about +20 goals of offense. Where the model and reality disagreed, we rescaled that component so the two line up:

The result is a model where every component contributes to WAR in proportion to what actually wins games, not what looks good in a regression.

One season vs. three: the talent rating

Every card has two sides: the season (exactly what a player did this year) and the 3-year rating (our best estimate of how good he actually is). The 3-year rating blends a player's last three seasons, and then accounts for how much evidence there is:

The single-season numbers are never adjusted this way. If a player scored on 25% of his shots, his season card says so.

Goalies

Goalies are rated on goals saved above expected (GSAx): for every unblocked shot a goalie faced, our expected goals model says how likely an average goalie was to let it in. Add those up, subtract the goals he actually allowed, and you have how many goals he saved beyond an average goalie.

Checked against the public record, our goalie GSAx matches MoneyPuck's closely (0.90 correlation over 888 goalie-seasons since 2010-11), and each goalie's goals allowed line up with MoneyPuck's almost exactly (0.999), confirming every shot is credited to the right goalie.

Contract value

Market value is what NHL teams actually pay for a player's level of WAR, learned from real contracts:

The difference between market value and actual cap hit is the player's contract surplus, which is what the A+ to F contract grade is based on.

Contract outlook. For every remaining season of a deal, we project the player's WAR from how thousands of NHL careers have aged since 2010-11, separately for forwards, defensemen and goalies. That includes the real chance of injury, decline or leaving the league. Each season is valued on that year's salary cap. Tested on past seasons, the projection beats assuming a player simply stays at his current level, at every horizon from one to five years out.

What's on the player cards

Player Reports

The WAR model on this site is built on NHL play-by-play and shift data, so it isn't used to grade amateur players. Custom Player Reports use an evaluation built for the player's own level: shot and zone maps, advanced analytics and percentiles against teammates, the defensive detail described above, and a written summary. They combine video review (using tools such as InStat and FloHockey) with the eye of someone who has played the game at a high level.

Credit to TopDownHockey (Patrick Bacon) for the scraper used to collect NHL play-by-play and shift data. Data from the NHL's public play-by-play and shift feeds and MoneyPuck. Contract data from public sources. Questions or corrections are always welcome.