Rush defense leaked all night
Gave up 26 rush shots worth 3.18 xG (3 goals) — transition gaps were there every period.
Tighten neutral-zone structure and keep D gaps closed on entries.

The Canucks beat the Flames 4–1 by converting the rush while L. Meriläinen stopped Calgary when it mattered.
Vancouver controlled the expected goals split 66% in their favor (4.06–2.12). They built this advantage through the transition, scoring three goals off the rush and converting pressure into danger at a rate Calgary couldn't match.
Calgary generated 2.12 expected goals but managed only one — underperforming their workload by 1.12 — and that gap tells the real story. Vancouver's movement shut them down when they had the puck, and when Calgary did create something, it didn't finish.
The Canucks were surgical in space. T. Willander (VAN) recorded two assists in 20:15, creating much of that rush momentum. L. Karlsson (VAN) added two more assists in 18:12, extending transition advantage into the offensive zone with precision. L. Ohgren (VAN) scored once and assisted once in 17:19, a multipurpose night showing a forward doing the truly hard part: breaking the puck out and feeding the transition.
Goaltending diverged sharply. L. Meriläinen stopped 23 of 24 shots (0.958 save percentage), stopping 1.12 goals more than her volume suggested she should have. D. Cooley (CGY) posted 22 saves on 25 shots (0.880 save percentage), yet prevented 1.06 expected goals—he was sharp against quality chances but faced a volume he couldn't fully stem.
Vancouver created seven high-danger chances to Calgary's three. This wasn't close.
What the numbers can't tell you. Whether the finishing was luck or skill, why the benches were run the way they were, who was hurt, and anything said in the room. That is the beat's story, and it is worth reading.
Canucks run the Flames off the ice on the underlying numbers
The Canucks earned this one.
The board read CGY 1, VAN 4. The chances read CGY 2.1, VAN 4.1.
Both sides finished close to what their chances were worth. This one was earned on the ice.
E. Pettersson makes it 1–2.
The Flames went 0 for 3 from the slot.
Canucks 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 breakdownWrist shot from 38 feet, a 7% chance, a shot that rarely goes in, past L. Meriläinen. 6s after a CGY faceoff win by J. Farabee. Win probability moved 17 points.On the ice: M. Backlund, Z. Whitecloud, J. Farabee, K. Bahl, S. Honzek · against A. Bains, J. Lekkerimäki, M. Sasson, T. Willander, Z. Buium
Wrist shot from 9 feet, a 12% chance (a rebound), past D. Cooley. 3s after a VAN shot by L. Ohgren. Win probability moved 27 points.On the ice: B. Boeser, F. Hronek, P. Cotter, L. Ohgren, E. Pettersson · against M. Backlund, J. Middleton, J. Farabee, S. Honzek, Z. Parekh
Backhander from 13 feet, a 17% chance (off the rush), past D. Cooley. Win probability moved 30 points.On the ice: F. Hronek, L. Karlsson, M. Sasson, Z. Buium · against Z. Whitecloud, K. Bahl, Y. Sharangovich, S. Honzek
Wrist shot from 32 feet, an 11% chance (off the rush), past D. Cooley. 6s after a VAN hit by E. Pettersson. Win probability moved 8 points.
Wrist shot from 45 feet, a 47% chance (off the rush).
score reads CGY–VAN
VAN went 3-for-17 from medium danger on 2.00 expected goals — 1.0 above expected.
CGY finished -1.1 against expected, VAN -0.1.
Snap shots carried the volume: CGY went 0-for-27, VAN 0-for-15. VAN scored 3 of theirs off the rush.
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 →
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
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
Best skater on the ice by our rating: L. Ohgren (VAN), 17:19 of ice, 1-1, 90% of the expected goals while he was out.
| Skater | TOI | G-A | SOG | ixG | xG% | PD/PT | Impact | /60 | Grade |
|---|---|---|---|---|---|---|---|---|---|
| M. CoronatoR | 16:48 | 1-0 | 1 | 0.15 | 77 | 0/0 | 1.22 | 4.34 | A |
| Z. ParekhD | 17:00 | 0-1 | 4 | 0.41 | 44 | 0/1 | 0.92 | 3.24 | B |
| M. FrostC | 15:48 | 0-0 | 3 | 0.30 | 70 | 0/0 | 0.73 | 2.79 | B |
| M. GridinR | 16:46 | 0-0 | 4 | 0.23 | 74 | 0/0 | 0.68 | 2.43 | B |
| J. FarabeeL | 14:35 | 0-1 | 1 | 0.06 | 45 | 0/1 | 0.49 | 2.01 | C |
| R. StromeC | 11:34 | 0-0 | 2 | 0.42 | 39 | 0/0 | 0.18 | 0.94 | C |
| Z. WhitecloudD | 25:01 | 0-0 | 2 | 0.09 | 28 | 0/0 | 0.07 | 0.17 | C |
| B. OthmannL | 10:30 | 0-0 | 1 | 0.06 | 37 | 0/0 | 0.03 | 0.19 | C |
| S. NemecD | 19:59 | 0-0 | 0 | 0.01 | 40 | 1/0 | -0.01 | -0.04 | D |
| M. PospisilC | 12:31 | 0-0 | 2 | 0.13 | 19 | 0/0 | -0.07 | -0.36 | D |
| Y. SharangovichC | 16:55 | 0-0 | 0 | 0.00 | 29 | 1/0 | -0.17 | -0.62 | D |
| M. BacklundC | 18:57 | 0-0 | 3 | 0.09 | 24 | 0/0 | -0.20 | -0.63 | D |
| M. TsyplakovR | 11:29 | 0-0 | 0 | 0.00 | 24 | 0/0 | -0.21 | -1.12 | D |
| J. HanleyD | 16:18 | 0-0 | 0 | 0.04 | 21 | 0/0 | -0.28 | -1.02 | F |
| J. MiddletonD | 17:39 | 0-0 | 1 | 0.03 | 32 | 0/2 | -0.38 | -1.28 | F |
| A. KlapkaR | 8:07 | 0-0 | 0 | 0.01 | 12 | 2/3 | -0.32 | -2.34 | F |
| K. BahlD | 22:37 | 0-0 | 0 | 0.00 | 42 | 0/2 | -0.47 | -1.25 | F |
| S. HonzekL | 15:40 | 0-0 | 0 | 0.09 | 25 | 0/0 | -0.43 | -1.66 | F |
| Skater | TOI | G-A | SOG | ixG | xG% | PD/PT | Impact | /60 | Grade |
|---|---|---|---|---|---|---|---|---|---|
| L. OhgrenL | 17:19 | 1-1 | 3 | 0.50 | 90 | 0/0 | 2.41 | 8.35 | A+ |
| L. KarlssonC | 18:12 | 0-2 | 2 | 0.34 | 64 | 1/0 | 2.09 | 6.90 | A+ |
| A. RätyC | 9:30 | 1-0 | 3 | 0.61 | 71 | 1/0 | 1.55 | 9.81 | A+ |
| T. WillanderD | 20:15 | 0-2 | 0 | 0.05 | 66 | 0/0 | 1.49 | 4.42 | A |
| D. O'ConnorL | 17:50 | 1-0 | 2 | 0.44 | 67 | 1/1 | 1.38 | 4.63 | A |
| E. PetterssonD | 14:49 | 1-0 | 1 | 0.17 | 96 | 0/0 | 1.27 | 5.14 | A |
| P. CotterL | 14:06 | 0-1 | 1 | 0.12 | 77 | 0/0 | 1.04 | 4.41 | A |
| E. PetterssonC | 22:24 | 0-1 | 1 | 0.34 | 47 | 2/0 | 1.04 | 2.78 | B |
| F. HronekD | 28:52 | 0-0 | 1 | 0.01 | 62 | 0/0 | 0.84 | 1.74 | B |
| B. BoeserR | 18:37 | 0-0 | 3 | 0.31 | 82 | 0/0 | 0.73 | 2.35 | B |
| Z. BuiumD | 22:49 | 0-0 | 1 | 0.03 | 68 | 1/0 | 0.74 | 1.95 | B |
| M. SassonC | 12:12 | 0-0 | 4 | 0.43 | 53 | 0/0 | 0.52 | 2.53 | C |
| B. GallagherR | 10:08 | 0-0 | 2 | 0.32 | 76 | 0/0 | 0.45 | 2.65 | C |
| J. LekkerimäkiR | 11:12 | 0-0 | 1 | 0.19 | 60 | 0/0 | 0.22 | 1.18 | C |
| M. RossiC | 20:09 | 0-0 | 1 | 0.18 | 51 | 0/1 | 0.14 | 0.40 | C |
| A. BainsL | 11:04 | 0-0 | 0 | 0.00 | 30 | 0/0 | -0.12 | -0.62 | D |
| J. OleksiakD | 17:54 | 0-0 | 0 | 0.00 | 36 | 0/0 | -0.24 | -0.82 | D |
| L. SchennD | 8:04 | 0-0 | 0 | 0.01 | 83 | 1/3 | -0.18 | -1.35 | D |
xG% = share of expected goals while on the ice · PD/PT = penalties drawn / taken · “in N min” = a per-60 rate far above the raw total. Impact = 0.75 G + 0.7 A1 + 0.55 A2 + 0.075 SOG + 0.05 BLK + 0.15 penalties drawn − 0.15 taken + 0.01 faceoff wins − 0.01 losses + 0.3 individual xG + 0.5 on-ice xG for − 0.5 on-ice xG against. Rating = 65% impact + 35% impact per 60, as a percentile among the skaters in this game.
Scratched, CGY: B. Pachal, C. Zary, Y. Kuznetsov. Scratched, VAN: G. Brisebois, J. DeBrusk, V. Mancini. Referees Tom Chmielewski and Jordan Samuels Thomas; linesmen Andrew Smith and Trent Knorr.
CGY Created 2.12 xG against a ~2.70 league-average game; 3 high-danger shots (0.64 xG) and 23 rush shots (1.82 xG).
VAN Created 4.06 xG against a ~2.70 league-average game; 7 high-danger shots (1.64 xG) and 26 rush shots (3.18 xG).
CGY Allowed 4.06 xG against a ~2.70 league-average game; conceded 7 high-danger shots (1.64 xG) and 26 rush shots (3.18 xG).
VAN Allowed 2.12 xG against a ~2.70 league-average game; conceded 3 high-danger shots (0.64 xG) and 23 rush shots (1.82 xG).
CGY Rush shots 23–26, rush xG 1.82–3.18 (rush-based; public data has no zone entries).
VAN Rush shots 26–23, rush xG 3.18–1.82 (rush-based; public data has no zone entries).
CGY 1-for-2 on the power play (50%; league ≈21%) with 0.18 PP xG.
VAN 0-for-5 on the power play (0%; league ≈21%) with 0.70 PP xG.
CGY +1.06 goals saved above expected on 25 shots against.
VAN +1.12 goals saved above expected on 24 shots against.
CGY Took 9 penalties for 37 PIM vs 5 for 21 on the other side.
VAN Took 5 penalties for 21 PIM vs 9 for 37 on the other side.
Grades bounces, not skill — C is neutral
CGY Finishing -1.12 goals vs xG plus +1.06 GSAx of save luck = -0.06 total. This grades luck, not skill — C is neutral, A is very lucky.
VAN Finishing -0.06 goals vs xG plus +1.12 GSAx of save luck = +1.06 total. This grades luck, not skill — C is neutral, A is very lucky.
Gave up 26 rush shots worth 3.18 xG (3 goals) — transition gaps were there every period.
Tighten neutral-zone structure and keep D gaps closed on entries.
3 goals on 26 rush shots worth 3.18 xG.
Took 9 penalties for 37 minutes (opponent: 5 for 21).
Cut the stick infractions — the penalty differential is a controllable.
The Canucks controlled 66% of expected goals (4.06–2.12) and won 4-1 — result matched process.
D. Cooley stopped all 6 high-danger shots he faced (100% HD save rate).
Gave up 23 rush shots worth 1.82 xG (0 goals) — transition gaps were there every period.
Tighten neutral-zone structure and keep D gaps closed on entries.
Each club shoots toward its own end — CGY left, VAN 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.
The model projects a coin flip: Calgary 3.2, Vancouver 3.2, Flames at 50% win probability.
Calgary controls possession. The Flames drive shot attempts at 56.3% five-on-five, a territorial advantage that usually translates to expected goals. But team save percentage luck complicates everything. Vancouver is running hot at 1.100; Calgary is running cold at 0.843. Both teams are due for regression — the Canucks will cool, the Flames will warm.
The goaltending matchup is where edges sharpen. D. Wolf saves high-danger chances at 80.0%, below par and inviting Calgary to work the slot. The Flames have already thrived there: four goals on 51 slot attempts, 8% conversion. K. Lankinen is the bigger liability — 63.4% on high-danger saves and 6.0 more goals than expected across two starts. That's a significant gap.
Calgary's path is possession and slot dominance, forcing D. Wolf to make tough saves where he's weakest. Vancouver's counter requires discipline — they'll have fewer opportunities with their possession deficit, so shot quality matters. K. Lankinen's deficiency means even routine attempts find the net.
The Flames have the tactical edge in workload and shot attempts. The Canucks have save percentage fortune in their corner. One will hold; the other will break. Expected goals don't separate them (41.8% vs 41.4%), which is why the model calls it even. It's a pick'em because both paths to victory are credible.
CGY by 0 points of win probability — effectively a coin flip. Projected score CGY 3.2–3.2 VAN; 16% chance it's tied after 60.
CGY holds 4 of 6 process categories — and the luck row (0.843 vs 1.100) says VAN has been getting the bounces, which tends not to last.
The Flames drive Corsi at 56.3% — expect territorial tilt.
Below-average on high-danger saves. Prioritize quality over quantity.
Their goalie (Dustin Wolf) leaks HD — 80.0% HD SV. Get to the slot.
Below-average on high-danger saves. Prioritize quality over quantity.
Their goalie (Kevin Lankinen) leaks HD — 63.4% HD SV. Get to the slot.
The Canucks' PDO is 1.100 — running hot, expect some regression.
Weight the underlying numbers over the recent results.
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.