Motion-blurred skater in a Anaheim Ducks sweater
Breakdown · ANA at CGY

Ducks steal one from the Flames against the run of play

The verdict · stolen

The Ducks stole one. They lost the expected-goals battle 2.63–3.80 and won anyway.

ANA 4 · CGY 3
◆ By the ModelJul 12, 2:39 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

Anaheim won a game it had no business winning. The Flames dominated possession and chance creation—controlling 59% of expected goals at 5v5 and 62% of shot attempts—yet lost 4-3 in overtime anyway.

This is what stolen wins look like. The Ducks generated 2.63 xG and scored 4 goals. The Flames created 3.80 xG and scored 3. For Anaheim to win despite being outshot and outchanced that badly, goaltending had to be the swing, and it was: L. Dostal saved 32 of 35 shots for a 0.914 save percentage that was 0.80 goals better than expected, while D. Wolf stopped 17 of 21 for a 0.810 mark that cost Calgary 1.37 goals relative to his workload.

The underlying story was Calgary's dominance colliding with Anaheim's execution. The Flames had 6 high-danger chances to Anaheim's 4. They crashed the net effectively, creating 4 rebound chances and converting 1—scrappy, directional hockey that should have paid dividends. It didn't, because the Ducks were lethal elsewhere. Anaheim converted 4 goals on 28 rush chances, a rate that suggests Calgary was vulnerable in transition.

The turning point came at 02:54 of overtime when B. Sennecke buried a wrist shot from the high slot, ending a game the Flames should have won outright in regulation.

The breakdown in twelve frames

Swipe it

Every number is from this page
Final · OT · Jan 25
ANA
4
CGY
3

Ducks steal one from the Flames against the run of play

Chances 2.6 – 3.8Did they deserve it? →
Did they deserve it?

The Flames deserved better.

Expected goals · chance value
ANA
2.63
CGY
3.80
41% of the chances59%

The board read ANA 4, CGY 3. The chances read ANA 2.6, CGY 3.8.

Our xG model · NHL play-by-play · all situations
Luck check
ANA
+1.4
goals above expected
ANA2.63 expected · 4 scored
Expected
Scored
CGY3.80 expected · 3 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. P1 06:17CGYJ. Huberdeau0–1
  2. P1 07:56CGYH. Brzustewicz0–2
  3. P2 03:22ANAB. Sennecke1–2
  4. P2 12:41ANAB. Sennecke2–2
  5. P3 04:50CGYM. CoronatoPP2–3
  6. P3 13:08ANAC. Kreider3–3
  7. OT 02:54ANAB. Sennecke4–3
NHL play-by-play · chance value from our xG model
Where the shots came from
ANA
41 shots
4
Final
91 shots
CGY
50 shots
3
ANA attackCGY attack
ANA CGY Goal
41
shots · 4 in
50
shots · 3 in
Every unblocked shot · press play to replay it
Chances by danger
ANACGY
1 / 4
1.02 xG
High danger
2 / 6
1.66 xG
2 / 10
0.99 xG
Medium
0 / 13
1.43 xG
1 / 45
0.61 xG
Low
1 / 49
0.71 xG

High-danger looks: ANA 1 of 4, CGY 2 of 6.

Danger tiers by our xG model · high ≥ 20% chance
In the net
B+
L. Dostal
+0.8
ANA · 32/35
D-
D. Wolf
−1.4
CGY · 17/21
The numbers, checked
BACKCHECK

Ducks steal one from the Flames against the run of play

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 3–17
  1. 06:17CGYJ. Huberdeau(M. Backlund, M. Coronato)0–1
  2. 07:56CGYH. Brzustewicz(A. Klapka, J. Farabee)0–2
2ndshots 8–10
  1. 03:22ANAB. Sennecke(A. Killorn, M. Granlund)1–2
  2. 12:41ANAB. Sennecke(M. Granlund, A. Killorn)2–2
3rdshots 6–7
  1. 04:50CGYM. Coronatopower play(M. Gridin, N. Kadri)2–3
  2. 13:08ANAC. Kreider(R. Poehling, C. Gauthier)3–3
OTshots 4–1
  1. 02:54ANAB. Sennecke(J. LaCombe)4–3

score reads ANA–CGY

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

The numbers

XGBoost xG · NHL play-by-play
2.63
ANA chances
Goals their shots were worth
+1.4
Finishing
Goals above what those chances were worth
1.024
ANA puck luck
Above 1.000 — the bounces went their way
46.5%
Shot attempts
Under half — they were outshot
Split by club

Who controlled the game

2.63Expected goals3.80
CGY 59% of the chance quality
21Shots on goal35
4High-danger chances6
59All attempts (Corsi)68
Adjusted for score: ANA 50% · CGY 50%
Faceoffs · CGY won68%off58%neu47%def
Source · NHL play-by-play · XGBoost xG
How the game was won

The danger ladder

shotsgoalsexpected
High dangerslot & crease
ANA1 / 4 · 1.02 xG
CGY2 / 6 · 1.66 xG
Medium dangermid-range
ANA2 / 10 · 0.99 xG
CGY0 / 13 · 1.43 xG
Low dangerperimeter & point
ANA1 / 45 · 0.61 xG
CGY1 / 49 · 0.71 xG

CGY went 0-for-13 from medium danger on 1.43 expected goals — 1.4 left on the table.

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

Finishing vs expected

expectedactual
ANA
4 G · 2.63 xG · +1.4
CGY
3 G · 3.80 xG · -0.8
012345

ANA finished +1.4 against expected, CGY -0.8.

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

Shot diet

goalsshots
ANA
WRIST2/22
TIP IN0/9
SNAP2/3
SLAP0/4
BACKHAND0/3
DEFLECTED0/0
OTHER0/18
CGY
WRIST3/29
TIP IN0/7
SNAP0/6
SLAP0/2
BACKHAND0/2
DEFLECTED0/4
OTHER0/18
ANA
CGY
Off the rush
4 G on 28
2.26 xG
1 G on 27
2.07 xG
Off rebounds
0 G on 1
0.08 xG
1 G on 4
0.53 xG

Wrist shots carried the volume: ANA went 2-for-22, CGY 3-for-29. ANA scored 4 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
L. Dostal
ANA · 32/35 · .914
+0.8
saved above expected
B+
the night
By dangerG/attxGsaved
High danger2/61.7-0.3
Medium0/131.4+1.4
Low1/490.7-0.3

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. Wolf
CGY · 17/21 · .810
-1.4
saved above expected
D-
the night
By dangerG/attxGsaved
High danger1/41.0+0.0
Medium2/101.0-1.0
Low1/450.6-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

91 shots · press play to watch the game back

Where the shots came from

NHL play-by-play coordinates
ANA
41 shots
4
Final
91 shots
CGY
50 shots
3
ANA attackCGY attack
ANA CGY Goal

Each club shoots toward its own end — ANA 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
B. Sennecke
#45 · R · ANA
3 G · 0 A · 3 SOG · 19:32 on ice · +2
A. Killorn
#17 · L · ANA
0 G · 2 A · 3 SOG · 18:21 on ice · +1
M. Granlund
#64 · C · ANA
0 G · 2 A · 1 SOG · 18:18 on ice · +1
Ranked from the box score — points first · Backcheck
What the model said beforehand

Before the game

Written Sun, Jan 25
Open the pre-game read
Written from the numbers

The read

Edited for clarity
◆ By the ModelJul 12, 2:39 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

The model projects this as close as it gets: Anaheim 2.7, Calgary 2.6, with the Ducks at 52% win probability. You're flipping a coin.

Recent form diverges sharply. Anaheim is 6-4-0 over their last ten, while Calgary sits at -13 goal differential in the same stretch—genuinely underwater. Strip away results, though, and the underlying play narrows the gap.

At 5v5, Anaheim owns a 52.0% expected goals share versus Calgary's 47.0%—the clearest edge they have. That territorial advantage shows in Corsi too: 52.0% to 49.0%, meaning the Ducks control where the puck spends its time. Expect Anaheim to dictate play.

Regression, however, complicates the forecast. Both teams are running cold on PDO. Anaheim sits at 0.981, Calgary at 0.985. Both should tick upward, which means Calgary—despite their brutal last ten—has earned positive variance coming back their way. The Flames have been worse than their underlying numbers suggest; normalizing that gap would tighten the match considerably.

Goaltending adds uncertainty. D. Cooley is on a back-to-back, as is L. Dostal. Either could draw a backup, or both might start fatigued. This dimension remains symmetrical.

On the roster, Beckett Sennecke drives Anaheim's offense at 1.03 xG/60 with 20 goals and 19 assists, converting at 13.5%. Cutter Gauthier escalates that with 25 goals at 0.99 xG/60—a 12.9% shooting clip suggests he's been even hotter, though from slightly lower volume.

Calgary counters with Blake Coleman at 0.89 xG/60, 16 goals and 12 assists at 11.4%, and Matt Coronato at 0.80 xG/60, 10 goals, 6.6% shooting. Coronato is generating chances but hasn't finished at Coleman's rate.

The mechanics favor Anaheim. Their possession edge and expected-goals advantage matter when margins are this thin. But Calgary's results are so poor relative to their underlying metrics that regression back to the mean becomes a real force. One team normalizes upward; the other reverts to reality. With Anaheim playing better now and Calgary due for positive variance, you're back at that coin.

What the model said beforehand

The model's lean

ANA 52%
52%
ANA
Model favorite
52%
48%
ANA50CGY

ANA by 4 points of win probability — effectively a coin flip. Projected score ANA 2.7–2.6 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
ANA← edge
edge →CGY
52.0%47.0%
52.0%49.0%
2.802.36
2.592.66
2.091.76
2.322.15
0.9810.985

ANA holds 5 of 6 process categories — and the luck row (0.981 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
ANA
6-4-0
-2 GD · 1d rest
CGY
3-6-1
-13 GD · 1d rest
0.981
ANA 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 Ducks own the underlying play — 52.0% 5v5 xG vs 47.0%.
  • The Ducks drive Corsi at 52.0% — expect territorial tilt.
Regression watch
  • The Flames' PDO is 0.985 — running cold, due for positive regression.
  • The Ducks' PDO is 0.981 — running cold, due for positive regression.
Things to watch
  • The Ducks own the underlying play — 52.0% 5v5 xG vs 47.0%.
  • The Ducks drive Corsi at 52.0% — expect territorial tilt.
  • D. Cooley is on a back-to-back — watch for a backup start or a tired starter.
  • L. Dostal is on a back-to-back — watch for a backup start or a tired starter.
  • The Ducks are the hotter team by points pace (6-4-0 in their last 10).
  • The Flames are underwater at -13 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
ANA
Expected in goal
L. Dostal
back-to-back.909 last start
Backup Lukas Dostal · -2.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. Cooley
back-to-back.946 last start
Backup Dustin Wolf · -1.8 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.

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
ANA
Beckett Sennecke20G 19A
1.03 xG/60 · 8 HD · 13.5% sh
Cutter Gauthier25G 16A
0.99 xG/60 · 2 HD · 12.9% 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