Motion-blurred skater in a New Jersey Devils sweater
Breakdown · NJD at CGY

Devils run the Flames off the ice on the underlying numbers

The verdict · earned

The Devils earned it — the game and the expected-goals battle both.

NJD 2 · CGY 1
◆ By the ModelJul 12, 1:50 AMxG: xgboost-0.758Edited for clarityDrafted from NHL play-by-play by Backcheck's model, worded for clarity by an AI editor that may not change a number. Nobody at Backcheck was at the rink. How this works

The Devils' 2-1 overtime victory understated their dominance. They controlled 62% of expected goals at 5-on-5 (3.04–1.88), a margin that suggested a blowout rather than a one-goal win.

New Jersey simply generated better looks. They averaged 0.056 expected goals per shot; Calgary managed 0.041. That quality gap materialized in the rush, where the Devils converted 2 goals on 24 chances.

The Flames folded on the underlying metrics. They recorded just 38% of xG while ceding 41% of shot attempts. Only their goaltending prevented an even larger margin: D. Cooley posted a 0.938 save percentage, outplaying his xG model by 1.04 goals.

New Jersey underperformed slightly themselves—finishing with 2 goals on an xG of 3.04, leaving 1.04 in the tank—but J. Markstrom was nearly flawless, stopping 21 of 22 shots (0.955 SV%, +0.88). The net advantage was decisive: when Calgary attacked, they got low-danger looks; when New Jersey did, they found soft areas.

S. Nemec's overtime snap from the slot at 01:18 was the visual confirmation of what the xG model had been saying all night.

The breakdown in twelve frames

Swipe it

Every number is from this page
Final · OT · Jan 19
NJD
2
CGY
1

Devils run the Flames off the ice on the underlying numbers

Chances 3.0 – 1.9Did they deserve it? →
Did they deserve it?

The Devils earned this one.

Expected goals · chance value
NJD
3.04
CGY
1.88
62% of the chances38%

The board read NJD 2, CGY 1. The chances read NJD 3.0, CGY 1.9.

Our xG model · NHL play-by-play · all situations
Luck check
NJD
−1.0
goals above expected
NJD3.04 expected · 2 scored
Expected
Scored
CGY1.88 expected · 1 scored
Expected
Scored

Both sides finished close to what their chances were worth. This one was earned on the ice.

PDO = sh% + sv% · drifts to 1.000 over a season
Every goal, in order
  1. P2 07:51NJDD. Mercer1–0
  2. P2 09:44CGYN. Kadri1–1
  3. OT 01:18NJDS. Nemec2–1
NHL play-by-play · chance value from our xG model
Where the shots came from
NJD
40 shots
2
Final
73 shots
CGY
33 shots
1
NJD attackCGY attack
NJD CGY Goal
40
shots · 2 in
33
shots · 1 in
Every unblocked shot · press play to replay it
Chances by danger
NJDCGY
1 / 3
0.78 xG
High danger
1 / 1
0.22 xG
1 / 18
1.83 xG
Medium
0 / 9
1.01 xG
0 / 33
0.43 xG
Low
0 / 36
0.64 xG

High-danger looks: NJD 1 of 3, CGY 1 of 1.

Danger tiers by our xG model · high ≥ 20% chance
In the net
B+
D. Cooley
+1.0
CGY · 30/32
B+
J. Markstrom
+0.9
NJD · 21/22
The numbers, checked
BACKCHECK

Devils run the Flames off the ice on the underlying numbers

A model, not a newsroom. Every number on these frames comes from the NHL's play-by-play and our own models. Nothing was watched, guessed or heard from anyone.

Read the full breakdown
backcheckreport.com
01 / 08 · Final
Every goal, in order

How it happened

NHL play-by-play
1stshots 7–3no goals
    2ndshots 14–10
    1. 07:51NJDD. Mercer(D. Hamilton, J. Siegenthaler)1–0
    2. 09:44CGYN. Kadri(K. Bahl, M. Gridin)1–1
    3rdshots 9–9no goals
      OTshots 2–0
      1. 01:18NJDS. Nemec(J. Hughes, J. Bratt)2–1

      score reads NJD–CGY

      Source · NHL play-by-play (api-web.nhle.com)
      Process vs result

      The numbers

      XGBoost xG · NHL play-by-play
      3.04
      NJD chances
      Goals their shots were worth
      −1.0
      Finishing
      Goals below what those chances were worth
      1.015
      NJD puck luck
      About 1.000 — a normal night for bounces
      54.0%
      Shot attempts
      Over half — they had the puck more
      Split by club

      Who controlled the game

      3.04Expected goals1.88
      NJD 62% of the chance quality
      32Shots on goal22
      3High-danger chances1
      54All attempts (Corsi)46
      Adjusted for score: NJD 54% · CGY 46%
      Faceoffs · CGY won38%off29%neu40%def
      Source · NHL play-by-play · XGBoost xG
      How the game was won

      The danger ladder

      shotsgoalsexpected
      High dangerslot & crease
      NJD1 / 3 · 0.78 xG
      CGY1 / 1 · 0.22 xG
      Medium dangermid-range
      NJD1 / 18 · 1.83 xG
      CGY0 / 9 · 1.01 xG
      Low dangerperimeter & point
      NJD0 / 33 · 0.43 xG
      CGY0 / 36 · 0.64 xG

      CGY went 0-for-9 from medium danger on 1.01 expected goals — 1.0 left on the table.

      Source · Backcheck xG model · NHL play-by-play
      The luck layer

      Finishing vs expected

      expectedactual
      NJD
      2 G · 3.04 xG · -1.0
      CGY
      1 G · 1.88 xG · -0.9
      01234

      NJD finished -1.0 against expected, CGY -0.9.

      Source · Backcheck xG model
      Shot types · rush and rebound chancesopen +
      What they shot — and what went in

      Shot diet

      goalsshots
      NJD
      WRIST0/24
      BACKHAND0/5
      SLAP0/1
      TIP IN1/4
      SNAP1/6
      DEFLECTED0/0
      OTHER0/14
      CGY
      WRIST0/21
      BACKHAND0/2
      SLAP1/6
      TIP IN0/2
      SNAP0/0
      DEFLECTED0/2
      OTHER0/13
      NJD
      CGY
      Off the rush
      2 G on 24
      1.92 xG
      1 G on 24
      1.66 xG
      Off rebounds
      0 G on 5
      0.70 xG
      0 G on 0
      0.00 xG

      Wrist shots carried the volume: NJD went 0-for-24, CGY 0-for-21. NJD scored 2 of theirs off the rush.

      Source · Backcheck xG model · NHL shot types
      New to these numbers?

      Two things happened in this game: who created the better chances, and who put the puck in the net. They are not the same thing, and this page separates them on purpose.

      The one to watch is expected goals— the best single read on who deserved to win. When it disagrees with the scoreboard, that disagreement is usually the story. Nothing here is a projection; every figure is computed from this game's play-by-play. Full glossary →

      xG
      Expected goals. Every shot scored by how often that exact look goes in. 2.5 xG means the chances were worth about two and a half goals.
      HD
      High-danger chances — shots from the slot and the crease, where shots actually become goals.
      Corsi
      Every shot attempt, including the ones that missed or got blocked. A rough read on who had the puck.
      Adj.
      Score-adjusted. Teams that trail shoot more and teams that lead sit back, so this corrects the attempt count for the scoreboard.
      GSAx
      Goals saved above expected. A positive number means the goalie stopped more than an average goalie would have on those shots.
      PDO
      Shooting % plus save % — a luck gauge. It sits near 1.000 over a season, so a game far from it usually means the bounces decided it.
      Shot by shot

      In the net

      Graded on goals saved above expected
      J. Markstrom
      NJD · 21/22 · .955
      +0.9
      saved above expected
      B+
      the night
      By dangerG/attxGsaved
      High danger1/10.2-0.8
      Medium0/91.0+1.0
      Low0/360.6+0.6

      A+ ≥ +2.5 saved above expected · A ≥ +1.5 · B+ ≥ +0.75 · B ≥ +0.25 · C ≥ −0.25 · D ≥ −0.75 · F below −1.5

      D. Cooley
      CGY · 30/32 · .938
      +1.0
      saved above expected
      B+
      the night
      By dangerG/attxGsaved
      High danger1/30.8-0.2
      Medium1/181.8+0.8
      Low0/330.4+0.4

      A+ ≥ +2.5 saved above expected · A ≥ +1.5 · B+ ≥ +0.75 · B ≥ +0.25 · C ≥ −0.25 · D ≥ −0.75 · F below −1.5

      73 shots · press play to watch the game back

      Where the shots came from

      NHL play-by-play coordinates
      NJD
      40 shots
      2
      Final
      73 shots
      CGY
      33 shots
      1
      NJD attackCGY attack
      NJD CGY Goal

      Each club shoots toward its own end — NJD left, CGY right — the way you would watch it. A dot's size is how dangerous the look was, from distance and angle; it is a proxy for shot quality, not the xG model the article is written from. Hover a dot for the shooter and the clock.

      Ranked from the box score

      Three stars

      Points first
      Three stars · computed, not voted
      K. Bahl
      #7 · D · CGY
      0 G · 1 A · 0 SOG · 23:28 on ice
      S. Nemec
      #17 · D · NJD
      1 G · 0 A · 2 SOG · 23:14 on ice
      D. Hamilton
      #7 · D · NJD
      0 G · 1 A · 1 SOG · 21:34 on ice · +1
      Ranked from the box score — points first · Backcheck
      What the model said beforehand

      Before the game

      Written Mon, Jan 19
      Open the pre-game read
      Written from the numbers

      The read

      Edited for clarity
      ◆ By the ModelJul 12, 1:37 AMEdited for clarityDrafted from NHL play-by-play by Backcheck's model, worded for clarity by an AI editor that may not change a number. Nobody at Backcheck was at the rink. How this works

      New Jersey and Calgary project to 2.6 and 2.5 goals respectively, with the Devils at 50% win probability. This is about as close to an even matchup as you'll find.

      The Devils own the underlying play. They're generating 50.0% of expected goals at 5v5 to Calgary's 47.0%, and they lead in possession metrics too, holding 51.0% Corsi to the Flames' 49.0%. Yet Jersey sits -14 on goal differential over their last 10 games—a sign that their underlying dominance hasn't translated to results. That's the coin flip: the better team on paper has underperformed.

      Both squads are running cold. New Jersey's PDO sits at 0.971, Calgary's at 0.985. When you're shooting and save-percentage-suppressed like this, regression toward the mean becomes the dominant variable. Both should get healthier.

      The Devil side leans on Timo Meier and Jack Hughes. Meier is clicking at 1.08 expected goals per 60 minutes with 13 goals and 15 assists; his 3 high-danger chances and 6.7% shooting rate suggest he's generating elite looks and finishing them. Hughes has 18 goals and 17 assists at 11.5% shooting but only 1 high-danger goal despite 0.88 xG/60—he's creating at a high rate but converting at an above-average rate from a mix of opportunities. Both are threats.

      Calgary counters with Blake Coleman and Matt Coronato. Coleman posts 0.89 xG/60 with 16 goals, 12 assists, and 2 high-danger goals at a 11.4% shooting rate—comparable production to Meier, though slightly lower volume. Coronato has been quieter offensively with 10 goals, 16 assists, 0.80 xG/60, and 6.6% shooting, but represents the kind of depth Calgary has leaned on.

      One wrinkle: J. Markstrom is on a back-to-back. Calgary could opt for a backup start, or Markstrom takes the net tired. Either way, New Jersey should hunt shooting volume early.

      The underlying math says New Jersey should win this more often than not—their shot-generation edge is real. But PDO regression cuts both ways. If Calgary gets even slightly healthier while New Jersey stays cold, the tables flip. Fifty-fifty feels right.

      What the model said beforehand

      The model's lean

      NJD 50%
      50%
      NJD
      Model favorite
      50%
      50%
      NJD50CGY

      NJD by 0 points of win probability — effectively a coin flip. Projected score NJD 2.6–2.5 CGY; 18% chance it's tied after 60.

      Source · Backcheck Poisson projection · season scoring rates
      Season rates · 5v5

      Tale of the tape

      NHL stats API · our xG
      NJD← edge
      edge →CGY
      50.0%47.0%
      51.0%49.0%
      2.452.36
      2.502.66
      1.661.76
      2.232.15
      0.9710.985

      NJD holds 4 of 6 process categories — and the luck row (0.971 vs 0.985) says CGY has been getting the bounces, which tends not to last.

      Source · NHL stats API + our xG · 5v5
      Form · Last 10
      NJD
      4-6-0
      -14 GD · 1d rest
      CGY
      5-5-0
      -3 GD · 2d rest
      0.971
      NJD PDO
      Luck gauge · drifts to 1.000
      0.985
      CGY PDO
      Luck gauge · drifts to 1.000
      What decides it

      Keys to the game

      Where the edges live
      • The Devils own the underlying play — 50.0% 5v5 xG vs 47.0%.
      Regression watch
      • The Flames' PDO is 0.985 — running cold, due for positive regression.
      • The Devils' PDO is 0.971 — running cold, due for positive regression.
      Things to watch
      • The Devils own the underlying play — 50.0% 5v5 xG vs 47.0%.
      • J. Markstrom is on a back-to-back — watch for a backup start or a tired starter.
      • The Devils are underwater at -14 goal differential over their last 10.
      • The Flames' PDO is 0.985 — running cold, due for positive regression.
      Last game's lineup · confirmed at warm-up

      Lineups

      NHL box score
      NJD
      Expected in goal
      J. Markstrom
      back-to-back.886 last start
      Backup Jacob Markstrom · -11.9 GSAx this season
      Back-to-back: the backup often gets this one. Treat the starter as unconfirmed.

      No completed game on file for this club yet.

      CGY
      Expected in goal
      D. Wolf
      2 days rest.933 last start
      Backup Dustin Wolf · -1.8 GSAx this season

      No completed game on file for this club yet.

      Lineups are the players who dressed in each club's last game, with their minutes; clubs confirm tonight's at warm-up. Every player this preview names was in that lineup.

      Computed danger · scouting

      Players to watch

      NHL stats API · our xG
      NJD
      Timo Meier13G 15A
      1.08 xG/60 · 3 HD · 6.7% sh
      Jack Hughes18G 17A
      0.88 xG/60 · 1 HD · 11.5% sh
      CGY
      Blake Coleman16G 12A
      0.89 xG/60 · 2 HD · 11.4% sh
      Matt Coronato10G 16A
      0.80 xG/60 · 0 HD · 6.6% sh
      Keep going

      Where to next