How We Calculate
Every number on The BlueLine is derived from mathematical models — no AI predictions, no gut feelings. Here's exactly how each stat works.
Prefer long-form stories? Read the guides.
Magic Number (M#)
The magic number is your countdown to clinching. Any combination of points your team earns + points the 9th-place team fails to earn that adds up to this number guarantees a playoff spot.
M# = Max Possible Points of 9th Place + 1 − Team Points
If the 9th-place team has 80 pts with 5 games left (max 90 pts), and your team has 85 pts, M# = 90 + 1 − 85 = 6. You need 6 total "good events" — e.g. you win 2 games (+4 pts) and 9th place loses 2 in regulation (−4 possible pts) = 4 + 2 = 6. Clinched!
Elimination Number (E#)
The elimination number is your safety margin. It tells you how far the 8th-place team would need to outscore you before you are mathematically out of the playoffs. When it reaches 0, it is impossible for your team to finish in a playoff spot.
E# = Team Max Possible Points + 1 − 8th Place Current Points
If your team has 70 pts with 8 games left (max 86 pts) and 8th place has 82 pts, E# = 86 + 1 − 82 = 5. That means the 8th-place team needs to outscore your remaining results by only 5 more points to eliminate you. The higher this number, the safer you are.
Pythagorean Win Expectation
Borrowed from baseball analytics, this formula predicts a team's "true" winning percentage based on goals scored and allowed, filtering out luck. A team that outscores opponents should win more often — this tells us how often.
Pythag Win% = GF² / (GF² + GA²)
A team with 220 goals for and 190 goals against: 220² / (220² + 190²) = 48400 / 84500 = 0.573. This team "should" win 57.3% of their games based on goal differential alone.
Composite Team Strength Score
Rather than relying solely on goal differential, our model combines 7 components into a single team strength score. This captures dimensions that goals alone miss — like shot dominance (Corsi), goaltending quality (starter-weighted save %), and special teams (PP%/PK%). Each component is weighted by its predictive power for playoff success. The composite score feeds into the Monte Carlo simulations as a drop-in replacement for the Pythagorean expectation.
Composite = 25% × 5v5 GF% + 20% × Save% + 15% × Corsi% + 10% × Corsi (raw) + 10% × PP% + 10% × PK% + 10% × Reg Win%
A team with 54% goals-for share, 91.5% save%, 52% Corsi, 22% PP, 82% PK, and 58% regulation win rate scores well across most dimensions — producing a composite around 0.58 (above league average of 0.50). If Corsi data is unavailable, those weights redistribute to the other 5 components.
Recency Weighting
Season-long averages treat October the same as March. Our model weights recent games exponentially more using a decay factor of 0.97 per game. A team that was mediocre in October but dominant since January projects like a good team — not an average one.
weight_i = 0.97 ^ (total_games − game_index)
In a team's 60th game, their first game has weight 0.97^59 ≈ 0.16, while their most recent game has weight 1.0. The last 20 games are weighted roughly 2× more than the first 20.
Home/Away & Back-to-Back Adjustments
NHL teams win at home more often and perform worse on back-to-back nights. Our model adjusts each simulated game: +4% boost for the home team, −4% penalty for a team on the second night of a back-to-back.
Home adj = strength × 1.04 | B2B adj = strength × 0.96
A team with 55% base strength playing at home has an adjusted 57.2%. If they're also on a back-to-back, those stack: 55% × 1.04 × 0.96 = 54.9% — the B2B almost cancels the home ice.
Regression to the Mean
The further into the future a game is, the less certain we are about team strength. Our model blends each team's rating toward league average (.500) as games stretch further into the remaining schedule. This prevents over-confident projections for teams on hot or cold streaks.
adjusted = strength × (0.95 ^ games_ahead) + 0.500 × (1 − 0.95 ^ games_ahead)
A team at .600 strength has their first future game at .600, but by game 20 into the future: .600 × 0.36 + .500 × 0.64 = .536. The model hedges because 20 games of hockey is inherently uncertain.
Log5 Matchup Probabilities
When simulating each game, we don't just use one team's strength — we model the matchup between both teams. The Log5 formula (from Bill James) calculates the probability that team A beats team B given both teams' win rates.
P(A beats B) = (pA − pA×pB) / (pA + pB − 2×pA×pB)
A .600 team vs a .450 team: (.600 − .270) / (.600 + .450 − .540) = .330 / .510 = 64.7%. This is more accurate than just using .600 because the opponent's strength matters.
Monte Carlo Simulation
We run 100,000 simulated seasons to estimate playoff probability. In each simulation, every remaining game is decided using the team's recency-weighted Pythagorean rating, adjusted for home/away, back-to-backs, regression to mean, and opponent strength (Log5). About 25% of losses are simulated as OT losses (1 point) based on NHL averages.
Playoff% = (Times team finished top 8 / 100,000) × 100
If a team finishes top 8 in 72,000 out of 100,000 simulations, their playoff probability is 72%. The expected points and projected rank are averages across all simulations.
Regulation Win Rate
In the playoffs there is NO 3-on-3 overtime and NO shootout — yet most models use full-season records that include both. Our regulation win rate strips shootout results entirely and only counts games decided in regulation or 5v5 OT. This is the base rating for all playoff series simulations. It's the most honest measure of how a team performs in the format that actually matters in April.
Reg Win% = Regulation Wins / (Regulation Wins + Regulation Losses) [SO excluded]
A team at 41-22-16 has 16 OT losses — many are shootout losses. Their regulation win rate might be 62% vs their overall 57%. That 5-point gap reveals how much their record is inflated by a format that doesn't exist in playoffs.
OT/SO Dependency Score
Measures what percentage of a team's points come from overtime or shootout results (both wins and loser points). Higher dependency means more points from formats that don't exist in the playoffs. This is a warning signal for playoff readiness.
OT Dep = (OT/SO win points + OT/SO loss points) / total points
A team with 28% of their points from OT/SO results (red zone) has padded their standing with points from 3v3 and shootouts — skills that are irrelevant in the playoffs. A team at 12% (green) earns their points in regulation.
PDO & Regression Flags
PDO is a team’s 5v5 shooting percentage plus their 5v5 save percentage. League average PDO is always very close to 100 (or 1.000). Teams with PDO significantly above 100 are "running hot" — they’re shooting and saving at unsustainable rates. Teams below 100 are likely due for positive regression. Our model uses PDO to adjust the regression-to-mean factor: teams with extreme PDO regress faster toward .500 in future game simulations.
PDO = Shooting% + Save% (at 5v5) | Regression factor × (1 + |PDO − 100| × 0.1)
A team with PDO of 103.5 is running hot. Their regression factor in simulations is multiplied by 1 + |103.5 − 100| × 0.1 = 1.35 — meaning they regress 35% faster toward league average in projected games. Conversely, a team with PDO of 97.2 gets flagged as "due for positive regression."
Playoff Series Model
Our playoff model is fundamentally different from the regular season model. We simulate best-of-7 series using regulation-based team ratings (not full-record Pythagorean) with the NHL 2-2-1-1-1 home-ice pattern. This is The BlueLine's key competitive differentiator — most sites just extend their regular season model into the playoffs, ignoring that shootouts and 3-on-3 OT don't exist.
Per-game: Log5(home_adj(reg_win_rate_A), reg_win_rate_B) | Series: 10,000 best-of-7 simulations
A team with 64% regulation win rate (home ice) vs 58%: Log5 gives ~62% per-game edge, but the 2-2-1-1-1 pattern means home ice advantage spans 4 of 7 potential games. After 10,000 series simulations, they win the series ~67% of the time.
Strength of Schedule (SOS)
Measures the difficulty of a team's remaining games by looking at the average quality of upcoming opponents. We compare the average opponent points percentage to the league-wide average.
SOS = Avg Opponent Points% − League Avg Points%
If your remaining opponents average a .550 points percentage and the league average is .500, your SOS is +0.050 (harder than average). A negative SOS means an easier remaining schedule.
Game Importance
Games are flagged based on how much they matter to the playoff race. A "4-Point Game" is one where both teams are within 6 points of each other in the standings and neither is eliminated. "Bubble" games involve at least one team on the playoff bubble.
Critical if: |pts gap| ≤ 6, at least one team still racing, and both teams sit in the playoff picture (same side: both top 11 in one conference; cross-conference: each top 13 in its own conference)
An 8th-place team with 82 points playing a 10th-place team with 78 points is flagged as a "4-Point Game" because the gap is only 4 points and both are fighting for playoff spots.
Playoff Status
Each team is classified into one of four statuses based on their mathematical position in the standings.
Clinched: M# = 0 | Eliminated: E# = 0 or max pts < 8th place | Bubble: within 4 pts of 8th place (ranks 7-10) | Alive: everyone else
A team in 9th place with 80 points, where 8th place has 83 points, has a bubble distance of 3 — within the 4-point threshold, so they're labeled "Bubble".
Trend & Streaks
Trends are based on the team's last 10 games record. Streaks show the current consecutive win or loss run.
Hot: 7+ wins in L10 | Up: 5-6 wins | Flat: mixed | Down: 5-6 losses | Cold: 7+ losses
A team that went 8-1-1 in their last 10 gets the "Hot" (🔥) trend. A team on a 4-game winning streak shows "W4".
Draft Lottery
For eliminated teams, we show projected draft position based on current standings among non-playoff teams. Lottery odds follow the official NHL format where the worst team has an 18.5% chance at the #1 pick.
Position = rank among non-playoff teams (worst record = 1st)
The team with the worst record among eliminated/non-playoff teams is projected at the 1st pick with 18.5% lottery odds. The 2nd-worst has 13.5%, and so on.
Limitations & Caveats
While we strive for accuracy, every model has limitations. Understanding these helps you interpret the numbers with the right context.
- Injuries, trades, and rest days are not modeled. A team missing its starting goaltender for two weeks will still be projected based on season-long goal data. Real-world roster changes can significantly shift outcomes.
- Data is cached, not real-time. Standings and scores refresh every 60 seconds from the NHL's public API. During active games, there may be a brief delay before a goal or final score is reflected.
- Pythagorean expectation assumes past performance predicts the future. A team that has dramatically outperformed or underperformed their goal differential (due to luck, clutch play, or goaltending) may see projections diverge from their actual results.
- Monte Carlo uses a simplified game model. Each game is modeled as a single probability event. It does not account for home-ice advantage, back-to-back scheduling fatigue, divisional rivalry intensity, or coaching changes.
- Tiebreakers are approximated. The NHL uses a multi-step tiebreaker process (regulation wins, ROW, head-to-head, goal differential). Our simulations use regulation wins as the primary tiebreaker but do not model the full tiebreaker chain.
Despite these limitations, Monte Carlo simulation remains one of the most reliable methods for estimating playoff probability. The more games that have been played, the more accurate the projections become.
All calculations update every 60 seconds using live NHL API data.
Monte Carlo simulations are cached for 5 minutes for performance.