The models · 8 min read

NHL Projection Model

How Fairline's NHL model works: a Poisson goal-rate framework with goalie Marcels, special teams, home ice and rest adjustments, and the markets it prices.

Updated Jul 2026 · Part of the models series

Why Poisson?

Hockey scoring fits the Poisson distribution well. Goals are relatively rare events (teams average around 3.05 per game), they arrive roughly independently throughout the game, and the variance-to-mean ratio of NHL goal totals sits close to 1.0, which is exactly what Poisson assumes. That lets the model compute each team's expected scoring rate (lambda) and generate a full 11x11 score matrix with one clean probability for every possible scoreline.

Hockey has a structural quirk: 5-on-5 play, power plays, and the goaltender all contribute to scoring in different ways. The model handles this by building each team's lambda multiplicatively: a 5v5 expected-goals base rate (the most predictive team-level metric in hockey), scaled by the opposing goaltender's quality, with special-teams goals added on top. Flat situational adjustments for home ice, back-to-back fatigue, and travel are applied after that. The starting goaltender is the single highest-leverage variable, capable of swinging win probability by 3-5 percentage points on its own, so the model invests heavily in goalie projection.

Core Formula

Lambda = Attack_Strength x Opp_Defense_Weakness x League_Avg
         x Goalie_Mult + Special_Teams_Net + Situational_Adj

Each team's lambda represents their expected goals for the game. The two lambdas are fed into the Poisson PMF to produce a scoreline probability matrix, then regulation ties are split using a 54% home OT win rate to derive full-game win probabilities.

How the Factors Combine

The model is multiplicative, not a weighted average of factor scores. Each team's 5v5 attack and defense strength (its xGF/60 and xGA/60 measured against the league average) multiply against the opponent's and the league scoring rate, and the opposing goalie's quality then scales that base rate up or down. Special-teams net goals and flat situational adjustments (home ice, rest, travel) are added on top. 5v5 expected goals sets the base because it is the most stable and predictive even-strength signal in hockey; goaltending enters as a direct multiplier because it is the single highest-leverage variable that changes nightly.

Team strength itself is a genuine weighted blend of season-long form and a recent-games window, so a hot or cold stretch moves the number without letting a small sample take over.

Live configurationrendered from the running system, always current
ParameterValue
Season-long form70% weight
Recent form30% weight

Goalie Projection (Hockey Marcels)

Goalie save percentage is notoriously noisy, requiring thousands of shots to stabilize. The model uses a "Hockey Marcels" projection system that blends multiple seasons of data with declining weights, then regresses toward the league average by adding 1525 phantom shots at league-average SV%. On game day, the Marcel baseline is blended with the goalie's recent starts to capture current form.

Live configurationrendered from the running system, always current
ParameterValue
Current season100% weight
Prior season60% weight
Two seasons ago50% weight
Three seasons ago30% weight
Regression shots1525
Game-day: recent starts35%
Game-day: baseline65%

Home Ice & Situational

Home ice and schedule context enter the projection as goal-rate adjustments. The home team receives a modest lambda increase, while a team playing the second game of a back-to-back receives a scoring penalty. Colorado and Vegas add the venue-specific goal adjustments shown below when their matchup conditions apply.

Live configurationrendered from the running system, always current
ParameterValue
Home ice goals+0.175
Colorado altitude+0.05 extra goals
Vegas bonus+0.03 extra goals
B2B goals penalty-0.175

Special Teams Baselines

Special-teams goals use each team's power-play and penalty-kill conversion rates with its expected opportunities. MoneyPuck xG remains a sustainability diagnostic in the data layer, but it does not change the lambda calculation.

Live configurationrendered from the running system, always current
ParameterValue
League PP%21%
League PK%79%

League Baselines

These league-wide averages enter the model math. A team's attack strength is its 5v5 xG/60 divided by the league average. A ratio above 1.0 means it generates more scoring chances than typical.

Live configurationrendered from the running system, always current
ParameterValue
Goals per game3.05
5v5 xG/602.485
SV%.9

Internal observation gate

NHL model-versus-price observations are paused pending a redesign validation window (decision made 2026-07). Fair odds and the market board remain available as neutral references. The section below describes the internal tracking policy that would apply after validation.

Internal observation policy

Fairline records an internal observation whenever the model's fair odds differ from the sportsbook's price by a flat 3%, the same threshold for every market. Each row carries a one-unit research weight for calibration and closing-line tracking. These observations are not surfaced as bets.

Command-line reference. The standalone model runner also includes a quarter-Kelly staking calculator with per-market EV thresholds (below). These are an offline reference and do not drive any user-facing surface. The internal measurement record uses the flat 3% threshold and one-unit research weight described above.

Live configurationrendered from the running system, always current
ParameterValue
Moneyline3.0%
Puck Line3.5%
Total2.5%
Team Total2.5%
Player Prop4.0%

Markets Explained

The NHL model produces fair odds for the four markets below. Hockey's low-scoring profile makes totals the most efficient market and puck line the most volatile, since a single empty-netter in the final minute can flip a puck line bet.

Moneyline

BOS -140 / TOR +120

Straight pick on who wins the game in regulation, overtime, or shootout. The starting goalie is the single highest-leverage input, and a save-percentage swing of 0.010 can shift a moneyline by 10-15 cents. Avoid betting any game where the starting goalie is still listed as TBD.

Puck Line (-1.5)

BOS -1.5 +155 / TOR +1.5 -175

A 1.5-goal spread in a sport that averages ~6 goals per game, effectively asking whether the favorite wins by multiple goals. Empty-net situations (down a goal in the final minute, pulling the goalie) make the puck line swingy. The model requires a larger edge here (highest threshold of any NHL market).

Game Total (Over/Under)

O 6.0 -115 / U 6.0 -105

Combined regulation + OT goals. The model's strongest edges here come from goalie-vs-goalie matchups the market has underreacted to. A true backup starting against a low-SV% team moves the total noticeably. Half-lines (5.5, 6.5) are preferred over 6.0 to eliminate pushes.

Team Totals

BOS O 3.5 -110 / BOS U 3.5 -110

A single team's goal total. Useful for plays that isolate one side's offense (hot power play vs. suppressed PK opponent) without needing a view on the opposing team. Also used when the model has a confident read on one team's scoring while the opposing pace signal is ambiguous.

Model Track Record

A published full-season backtest for NHL is still in progress. Hockey's lower-sample signal (82 games vs 162) combined with the central, high-variance role of goaltending makes walk-forward backtesting a substantial project. Until those numbers are published, the History page is the honest audit trail. It shows every graded bet from live pipeline runs with CLV and P&L attached, and performance there is the real, live track record.

When to Trust This Model (and When Not To)

NHL's reliability depends almost entirely on goalie and rest information being accurate at the time of the projection.

Trust it most
  • Games with confirmed starting goalies (morning skate reports)
  • Mid-season matchups where both teams have 30+ games of data
  • Non-B2B scenarios with normal rest (1-2 days off)
  • Games between teams whose special-teams units are stabilized
Trust it least
  • Goalie TBD at pipeline run time (a surprise backup swings the number)
  • First week of the season (no current-year sample)
  • Trade deadline week, when rosters change faster than the model re-rates
  • Teams mid-coaching-change, where system shifts can take 5-10 games to show up
  • Playoff games (the model is regular-season calibrated)

The parameter values on this page are rendered from the running system and refresh periodically; when a weight or threshold changes, this page reflects it automatically.