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
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.
| Parameter | Value | |
|---|---|---|
| Season-long form | 70% weight | Full-season 5v5 xG rates; the stable anchor |
| Recent form | 30% weight | Last 17 games (captures streaks and mid-season shifts) |
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.
| Parameter | Value | |
|---|---|---|
| Current season | 100% weight | Full season data at face value |
| Prior season | 60% weight | Most recent historical context |
| Two seasons ago | 50% weight | Useful for injury-return seasons |
| Three seasons ago | 30% weight | Small but stabilizing contribution |
| Regression shots | 1525 | Phantom shots at league-avg SV% to pull extremes toward mean |
| Game-day: recent starts | 35% | Last 12 starts (captures hot/cold streaks) |
| Game-day: baseline | 65% | Multi-year Marcel projection; the stable anchor |
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.
| Parameter | Value | |
|---|---|---|
| Home ice goals | +0.175 | Added to the home team's lambda |
| Colorado altitude | +0.05 extra goals | Thin air at 5,280 ft; visitors tire faster |
| Vegas bonus | +0.03 extra goals | Sustained strong home record vs non-Pacific teams |
| B2B goals penalty | -0.175 | Fatigue reduces expected scoring |
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.
| Parameter | Value | |
|---|---|---|
| League PP% | 21% | Average power play conversion rate |
| League PK% | 79% | Average penalty kill success rate |
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.
| Parameter | Value | |
|---|---|---|
| Goals per game | 3.05 | Updated weekly; anchors all lambda calculations |
| 5v5 xG/60 | 2.485 | Expected goals per 60 min of even-strength play |
| SV% | .9 | League-average save percentage |
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.
| Parameter | Value | |
|---|---|---|
| Moneyline | 3.0% | |
| Puck Line | 3.5% | |
| Total | 2.5% | |
| Team Total | 2.5% | |
| Player Prop | 4.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 +120Straight 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 -175A 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 -105Combined 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 -110A 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.
- 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
- 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.