Motion-blurred skater in a Calgary Flames sweater
Breakdown · VAN at CGY · Preseason

Flames run the Canucks off the ice on the underlying numbers

The verdict · earned

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

VAN 1 · CGY 3
Preseason · exhibition

Split squads and prospects, not the club that will take the ice in October. The shots and grades below describe this game only: nothing here counts toward season records, form, rankings or player numbers.

◆ By the ModelSep 22, 11:41 PMxG: 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

Calgary's 3-1 win over Vancouver held up to scrutiny. The Flames controlled 76% of expected goals (4.25–1.38), ran 78% of shot attempts (31–9), and beat the Canucks in high-danger chances three to two. The scoreboard and the underlying play aligned perfectly — this was a dominant performance.

Vancouver's K. Lankinen was the reason it wasn't worse. His 0.900 save percentage on 30 shots was 1.25 goals better than expected, keeping what could have been a blowout at 3-1. The Flames had the play; their goaltender just ran into a hot one.

Calgary's dominance started early and never wavered. The Flames opened the second period by scoring three times in under four minutes. J. Farabee banked in the first on the power play at 15:00. M. Coronato followed at 17:30, and S. Honzek made it 3–0 at 18:58. That was the game. Vancouver's A. Bains scored in the third, but by then Calgary controlled everything.

The Flames' transition game was the engine. They took 30 rush shots (2.50 xG) and converted two of them — a conversion rate that speaks to both volume and quality. Z. Parekh (2 assists) and M. Gridin (2 assists) were the architects. J. Farabee finished with a goal and an assist, doing the most damage. The Flames created five rebound opportunities and crashed the net hard enough to cash one, the way a team plays when it's in control.

Vancouver couldn't establish any sustained pressure. The Canucks managed 14 rush shots (1.34 xG) and generated only two high-danger chances. On special teams, Calgary went 1-for-4 on the power play (25%; league ≈21%), while Vancouver went 0-for-3 (0%; league ≈21%). The power-play gap was real.

The underlying story is the one everyone watching saw: Calgary ran Vancouver off the ice. The Flames' 76% expected-goals share, their rush dominance, their power-play execution — it all pointed to the same verdict. Lankinen played well enough to make it 3-1 instead of potentially 4-0, but he couldn't change the outcome.

The breakdown in twelve frames

Swipe it

Every number is from this page
Final · Preseason · Sep 22
VAN
1
CGY
3

Flames run the Canucks off the ice on the underlying numbers

Chances 1.4 – 4.3Did they deserve it? →
Did they deserve it?

The Flames earned this one.

Expected goals · chance value
VAN
1.38
CGY
4.25
25% of the chances76%

The board read VAN 1, CGY 3. The chances read VAN 1.4, CGY 4.3.

Our xG model · NHL play-by-play · all situations
Luck check
CGY
−1.3
goals above expected
CGY4.25 expected · 3 scored
Expected
Scored
VAN1.38 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 15:00CGYJ. FarabeePP0–1
  2. P2 17:30CGYM. Coronato0–2
  3. P2 18:58CGYS. Honzek0–3
  4. P3 06:22VANA. Bains1–3
NHL play-by-play · chance value from our xG model
Where the shots came from
VAN
18 shots
1
Final
75 shots
CGY
57 shots
3
VAN attackCGY attack
VAN CGY Goal
18
shots · 1 in
57
shots · 3 in
Every unblocked shot · press play to replay it
Chances by danger
VANCGY
1 / 2
0.42 xG
High danger
1 / 3
0.65 xG
0 / 6
0.68 xG
Medium
2 / 22
2.74 xG
0 / 15
0.28 xG
Low
0 / 56
0.85 xG

High-danger looks: VAN 1 of 2, CGY 1 of 3.

Danger tiers by our xG model · high ≥ 20% chance
In the net
B+
K. Lankinen
+1.3
VAN · 27/30
B
D. Wolf
+0.4
CGY · 8/9
Report card
VANCGY
OffenseD-A
DefenseFB+
TransitionFA
Special teamsFB-
GoaltendingB+C+
DisciplineC-B-
LuckB-D+
Seven dimensions, A+ to F · basis on the breakdown
Why it went the way it went
Why CGY won
  1. 01Won on the merits
  2. 02Dangerous off the rush
  3. 03Power play cashed in
Why VAN lost
  1. 01Rush defense leaked all night
  2. 02Rebound control was shaky
  3. 03Power play came up empty
Our storyline model · reasoning on the breakdown
The numbers, checked
BACKCHECK

Flames run the Canucks 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 / 10 · Final
Every goal, in order

How it happened

NHL play-by-play
1stshots 4–8no goals
    2ndshots 2–18
    1. 15:00CGYJ. Farabeepower play(M. Gridin, Z. Parekh)0–1
    2. 17:30CGYM. Coronato(M. Frost, M. Gridin)0–2
    3. 18:58CGYS. Honzek(Z. Parekh, J. Farabee)0–3
    3rdshots 3–5
    1. 06:22VANA. Bains(B. Cootes)1–3

    score reads VAN–CGY

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

    The numbers

    XGBoost xG · NHL play-by-play
    4.25
    CGY chances
    Goals their shots were worth
    −1.3
    Finishing
    Goals below what those chances were worth
    0.994
    CGY puck luck
    About 1.000 — a normal night for bounces
    77.9%
    Shot attempts
    Over half — they had the puck more
    Split by club

    Who controlled the game

    1.38Expected goals4.25
    CGY 76% of the chance quality
    9Shots on goal31
    2High-danger chances3
    23All attempts (Corsi)81
    Adjusted for score: VAN 24% · CGY 76%
    Faceoffs · CGY won60%off60%neu25%def
    Source · NHL play-by-play · XGBoost xG
    How the game was won

    The danger ladder

    shotsgoalsexpected
    High dangerslot & crease
    VAN1 / 2 · 0.42 xG
    CGY1 / 3 · 0.65 xG
    Medium dangermid-range
    VAN0 / 6 · 0.68 xG
    CGY2 / 22 · 2.74 xG
    Low dangerperimeter & point
    VAN0 / 15 · 0.28 xG
    CGY0 / 56 · 0.85 xG

    CGY went 0-for-56 from low danger on 0.85 expected goals — 0.8 left on the table.

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

    Finishing vs expected

    expectedactual
    VAN
    1 G · 1.38 xG · -0.4
    CGY
    3 G · 4.25 xG · -1.3
    012345

    VAN finished -0.4 against expected, CGY -1.3.

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

    Shot diet

    goalsshots
    VAN
    WRIST0/9
    TIP IN0/6
    SNAP1/2
    BACKHAND0/1
    SLAP0/0
    DEFLECTED0/0
    BAT0/0
    POKE0/0
    OTHER0/5
    CGY
    WRIST3/34
    TIP IN0/7
    SNAP0/4
    BACKHAND0/5
    SLAP0/2
    DEFLECTED0/2
    BAT0/1
    POKE0/1
    OTHER0/25
    VAN
    CGY
    Off the rush
    1 G on 14
    1.34 xG
    2 G on 30
    2.50 xG
    Off rebounds
    0 G on 0
    0.00 xG
    1 G on 5
    0.82 xG

    Wrist shots carried the volume: VAN went 0-for-9, CGY 3-for-34. CGY 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
    K. Lankinen
    VAN · 27/30 · .900
    +1.3
    saved above expected
    B+
    the night
    By dangerG/attxGsaved
    High danger1/30.7-0.3
    Medium2/222.7+0.7
    Low0/560.8+0.8

    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 · 8/9 · .889
    +0.4
    saved above expected
    B
    the night
    By dangerG/attxGsaved
    High danger1/20.4-0.6
    Medium0/60.7+0.7
    Low0/150.3+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

    Graded against a league-average game

    Report card

    Seven dimensions · A+ to F
    DimensionVANCGY
    Offense
    ▸Basis

    VAN Created 1.38 xG against a ~2.70 league-average game; 2 high-danger shots (0.42 xG) and 14 rush shots (1.34 xG).

    CGY Created 4.25 xG against a ~2.70 league-average game; 3 high-danger shots (0.65 xG) and 30 rush shots (2.50 xG).

    D-
    62
    A
    96
    Defense
    ▸Basis

    VAN Allowed 4.25 xG against a ~2.70 league-average game; conceded 3 high-danger shots (0.65 xG) and 30 rush shots (2.50 xG).

    CGY Allowed 1.38 xG against a ~2.70 league-average game; conceded 2 high-danger shots (0.42 xG) and 14 rush shots (1.34 xG).

    F
    54
    B+
    88
    Transition
    ▸Basis

    VAN Rush shots 14–30, rush xG 1.34–2.50 (rush-based; public data has no zone entries).

    CGY Rush shots 30–14, rush xG 2.50–1.34 (rush-based; public data has no zone entries).

    F
    55
    A
    95
    Special teams
    ▸Basis

    VAN 0-for-3 on the power play (0%; league ≈21%) with 0.12 PP xG.

    CGY 1-for-4 on the power play (25%; league ≈21%) with 0.80 PP xG.

    F
    50
    B-
    81
    Goaltending
    ▸Basis

    VAN +1.25 goals saved above expected on 30 shots against.

    CGY +0.38 goals saved above expected on 9 shots against.

    B+
    87
    C+
    79
    Discipline
    ▸Basis

    VAN Took 4 penalties for 8 PIM vs 3 for 6 on the other side.

    CGY Took 3 penalties for 6 PIM vs 4 for 8 on the other side.

    C-
    70
    B-
    80
    Luck

    Grades bounces, not skill — C is neutral

    ▸Basis

    VAN Finishing -0.38 goals vs xG plus +1.25 GSAx of save luck = +0.87 total. This grades luck, not skill — C is neutral, A is very lucky.

    CGY Finishing -1.25 goals vs xG plus +0.38 GSAx of save luck = -0.87 total. This grades luck, not skill — C is neutral, A is very lucky.

    B-
    82
    D+
    68
    Source · NHL play-by-play · xG engine · luck graded separately
    What the model flagged
    STRENGTHCGY

    Won on the merits

    The Flames controlled 76% of expected goals (4.25–1.38) and won 3-1 — result matched process.

    WARNINGVAN

    Rush defense leaked all night

    Gave up 30 rush shots worth 2.50 xG (2 goals) — transition gaps were there every period.

    Tighten neutral-zone structure and keep D gaps closed on entries.

    STRENGTHCGY

    Dangerous off the rush

    2 goals on 30 rush shots worth 2.50 xG.

    WARNINGCGY

    Rush defense leaked all night

    Gave up 14 rush shots worth 1.34 xG (1 goals) — transition gaps were there every period.

    Tighten neutral-zone structure and keep D gaps closed on entries.

    STRENGTHVAN

    Dangerous off the rush

    1 goals on 14 rush shots worth 1.34 xG.

    STRENGTHVAN

    K. Lankinen tilted the crease

    K. Lankinen stopped 27 of 30 (0.900), +1.25 goals above expected.

    75 shots · press play to watch the game back

    Where the shots came from

    NHL play-by-play coordinates
    VAN
    18 shots
    1
    Final
    75 shots
    CGY
    57 shots
    3
    VAN attackCGY attack
    VAN CGY Goal

    Each club shoots toward its own end — VAN 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
    Z. Parekh
    #19 · D · CGY
    0 G · 2 A · 4 SOG · 19:00 on ice · +1
    J. Farabee
    #86 · L · CGY
    1 G · 1 A · 1 SOG · 16:22 on ice · +1
    M. Gridin
    #92 · R · CGY
    0 G · 2 A · 1 SOG · 14:37 on ice · +1
    Ranked from the box score — points first · Backcheck
    What the model said beforehand

    Before the game

    Written Tue, Sep 22
    Open the pre-game read
    Written from the numbers

    The read

    Edited for clarity
    Preseason · exhibition

    Split squads and prospects, not the club that will take the ice in October. The rates below are last season's; this exhibition will not count toward season records, form, rankings or player numbers.

    ◆ By the ModelSep 21, 11:46 PMEdited 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 a 3.0–3.4 goal game. Calgary owns 55% win probability—close enough to even odds that variance decides this one.

    Vancouver's goaltending is the first vulnerability. Kevin Lankinen has allowed 16.8 more goals than expected over 47 games (−16.8 GSAx). Calgary will target that gap.

    The matchup splits along shutdown lines. Calgary's defense faces its toughest test against Filip Chytil: 1.03 xG per 60, 3 goals, and 1 high-danger marker. Vancouver's defense must contain Blake Coleman, the Flames' 16-goal scorer who generates 0.89 xG/60 with 2 high-danger goals. Drew O'Connor (0.85 xG/60, 13 goals) and Matt Coronato (0.80 xG/60, 10 goals) widen the attack.

    Underneath, Calgary runs hotter. The Flames hold 46.5% xG and 49.2% Corsi% versus Vancouver's 44.0% xG and 46.9% Corsi%—not huge, but consistent. Both teams are running cold on luck (PDO: Vancouver 0.974, Calgary 0.984), which means both are due for regression toward average. The team that controls play will likely be the one where that luck shifts first.

    D. Cooley works back-to-back—watch for a backup or a tired starter in the third.

    Even odds tilted Flames. The goaltending says lean Calgary.

    Season rates in this preview are from 2025-26 — this season's sample isn't live yet.

    What the model said beforehand

    The model's lean

    CGY 55%
    55%
    CGY
    Model favorite
    45%
    55%
    VAN50CGY

    CGY by 10 points of win probability — a modest lean. Projected score VAN 3.0–3.4 CGY; 16% 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
    VAN← edge
    edge →CGY
    44.0%46.5%
    46.9%49.2%
    2.782.85
    3.543.28
    2.562.54
    3.833.12
    0.9740.984

    CGY holds 5 of 6 process categories — and the luck row (0.974 vs 0.984) says CGY has been getting the bounces, which tends not to last.

    Source · NHL stats API + our xG · 5v5
    Form · Last 1
    VAN
    0-1-0
    -2 GD · 2d rest
    CGY
    0-1-0
    -2 GD · 1d rest
    0.974
    VAN PDO
    Luck gauge · drifts to 1.000
    0.984
    CGY PDO
    Luck gauge · drifts to 1.000
    What decides it

    Keys to the game

    WARNINGVAN

    Kevin Lankinen has leaked goals all season

    Kevin Lankinen: -16.8 GSAx over 47 games.

    Shoot from everywhere — volume beats a cold crease.

    WARNINGCGY

    D. Cooley on a back-to-back

    D. Cooley projects to start on 1 day of rest — watch for a backup start or tired legs.

    Test the goalie early with traffic and second-chance pressure.

    TACTICALCGY

    Shutdown Assignment: Flames

    Key matchup: Neutralize Filip Chytil (3G, 1.03 xG/60, 1 HD goals)

    Key matchup: Neutralize Filip Chytil (3G, 1.03 xG/60, 1 HD goals)

    TACTICALVAN

    Shutdown Assignment: Canucks

    Key matchup: Neutralize Blake Coleman (16G, 0.89 xG/60, 2 HD goals)

    Key matchup: Neutralize Blake Coleman (16G, 0.89 xG/60, 2 HD goals)

    Regression watch
    • The Flames' PDO is 0.984 — running cold, due for positive regression.
    • The Canucks' PDO is 0.974 — running cold, due for positive regression.
    Things to watch
    • D. Cooley is on a back-to-back — watch for a backup start or a tired starter.
    • The Flames' PDO is 0.984 — running cold, due for positive regression.
    Last game's lineup · confirmed at warm-up

    Lineups

    NHL box score
    VAN
    Expected in goal
    N. Tolopilo
    2 days rest.867 last start
    Backup Kevin Lankinen · -16.8 GSAx this season

    No completed game on file for this club yet.

    CGY
    Expected in goal
    D. Cooley
    back-to-back.864 last start
    Backup Dustin Wolf · +0.6 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
    VAN
    Filip Chytil3G 0A
    1.03 xG/60 · 1 HD · 15.0% sh
    Drew O'Connor13G 11A
    0.85 xG/60 · 3 HD · 11.8% 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