xJawn NHL expected goals

← Games

CGY @ SEA

2026-10-04 · final 1–6 · what happened, next to what the engine said before puck drop

The call
SEA 57.9% ✓
expected 2.66–3.13 · SEA won 1–6
actual xG
2.28–2.42
xG share, predicted → actual
CGY 46% → 48%52% → 54% SEA
Today's puzzle Remember Some Guys — name the skater from the shape of his career. Three clues, one guess a day. Play →

What happened

CGY attacks the left net, SEA the right — every unblocked attempt the game produced: × goals, • on net, ◦ missed (hover a marker for the shooter and its xG). To compare against the pregame call, switch the Surface to the engine's predicted-xG map — the shots land on top of where the engine expected the game to be played.

Save a card: Summary · Full card · Game flow · CGY skaters · SEA skaters · CGY lines · SEA lines · Matchups
CGYSEA
2.28
Expected goals
2.42
1.97
5v5 xG
2.42
0.31
Power-play xG
0.00
0
High-dangerattempts ≥ 0.20 xG
0
33
Shots on goal
27
83
Attempts
53
xG by period 1st0.5–0.82nd0.7–0.93rd1.0–0.7

The Kraken beat the Flames 6–1 at home in a game the chances called about even, CGY 2.3 to SEA 2.4 in expected goals. SEA scored 6 on 2.4 expected.

Counts come from the shot table behind the maps: empty-net attempts and the shootout are excluded, so the goals in the map can trail the official final by an empty-netter or the shootout's deciding goal. Same numbers, same grammar as the post-game cards.

As the game went

One line: cumulative CGY minus SEA expected goals. Above zero CGY is ahead on chances, below zero SEA is. Shaded bands are power plays in the side's colour; vertical lines are goals.

1ST2ND3RD+0.5−0.5CGY AHEAD ▲SEA AHEAD ▼

Skaters

Every skater, sorted by net on-ice expected goals: on-ice xG against to the left of zero, for to the right, his own attempts as the solid bar, a hash at the net. The slim track under the name is ice time.

CGY skaters

on ice, against on ice, for own attempts net ice time
0.50.5111.51.50Joel FarabeeF16:51+0.76Zayne ParekhD20:59+0.59Jacob MiddletonD16:47+0.28Matvei GridinF14:26+0.20Matt CoronatoF22:02+0.16Mikael BacklundF15:16+0.10Samuel HonzekF15:29-0.02Martin PospisilF13:30-0.02Adam KlapkaF11:17-0.03Connor ZaryF13:56-0.04Morgan FrostF17:51-0.07Kevin BahlD19:47-0.09Ryan StromeF14:22-0.28Yegor SharangovichF15:23-0.29Simon NemecD21:14-0.42Zach WhitecloudD18:59-0.48Yan KuznetsovD19:32-0.48Maksim TsyplakovF12:19-0.59

SEA skaters

on ice, against on ice, for own attempts net ice time
0.50.5110Brandon MontourD23:12+0.82Ryker EvansD22:27+0.77Berkly CattonF12:41+0.33Kaapo KakkoF13:15+0.33Jared McCannF15:42+0.30Shane WrightF14:47+0.29Jordan EberleF14:03+0.29Matty BeniersF15:58+0.10Ville OttavainenD15:51+0.07Bobby McMannF15:27+0.05Chandler StephensonF15:46-0.00Mackie SamoskevichF18:49-0.01Vince DunnD18:34-0.27Ryan WintertonF15:39-0.28Curtis DouglasF7:46-0.31Freddy GaudreauF16:50-0.33Ryan LindgrenD18:37-0.46Adam LarssonD21:44-0.62

Lines

The forward lines and defence pairs that actually played together most at 5v5, each with when it was on the ice across the game clock (period and power-play bands behind the strip) and on-ice xG against/for while the whole unit was out.

CGY lines

on the ice together CGY power play penalty kill xG against xG for net
FORWARD LINESL1Morgan FrostYegor SharangovichMatt Coronato13:15-0.18L2Mikael BacklundJoel FarabeeMatvei Gridin10:06-0.01L3Ryan StromeConnor ZarySamuel Honzek7:48-0.04L4Martin PospisilAdam KlapkaMaksim Tsyplakov6:23-0.03DEFENCE PAIRSD1Yan KuznetsovSimon Nemec18:06-0.49D2Zach WhitecloudKevin Bahl16:25-0.17D3Jacob MiddletonZayne Parekh14:51+0.221ST2ND3RD011

SEA lines

on the ice together SEA power play penalty kill xG against xG for net
FORWARD LINESL1Jared McCannMatty BeniersMackie Samoskevich13:21+0.13L2Jordan EberleChandler StephensonBobby McMann12:51+0.11L3Kaapo KakkoShane WrightBerkly Catton11:47+0.33L4Freddy GaudreauCurtis DouglasRyan Winterton6:37-0.30DEFENCE PAIRSD1Brandon MontourRyker Evans22:07+0.77D2Adam LarssonVince Dunn17:41-0.20D3Ryan LindgrenVille Ottavainen15:13-0.051ST2ND3RD01.251.25

Matchups

5v5 · every skater against every skater, goalies first · hover a cell
CGY won the chances SEA won them full colour = a margin of 0.75 xG or more taller = more time together (full height at 12:00) on together, dead even never on together G = goalie: his row or column is each skater against the whole other team
WolfFrostSharangovichCoronatoBacklundFarabeeGridinStromeZaryHonzekPospisilKlapkaTsyplakovKuznetsovNemecWhitecloudBahlMiddletonParekhDaccordMcCannBeniersSamoskevichEberleStephensonMcMannKakkoWrightCattonGaudreauDouglasWintertonMontourEvansLarssonDunnLindgrenOttavainenGL1L2L3L4D1D2D3GL1L2L3L4D1D2D3
How to read this

Rows are CGY's skaters, columns SEA's, grouped the way they played: forward lines (L1 = the line that played together most), then defence pairs. Each cell covers the five-on-five time those two players shared the ice. Its colour is the club that out-chanced the other in that time — expected goals for minus against — and the stronger the colour, the bigger the margin. Each cell is also raised: the taller the block, the longer the two shared the ice, up to full height at 12:00 of five-on-five time. A grey cell means they met and it came out even; an open, flat one means they never met at five-on-five.

The first row and column are the goalies. A goalie is in net for every five-on-five second, so a skater's cell against the other side's goalie is all of that skater's five-on-five time against that team — the rest of his row or column added up — and the corner where the two goalies meet is the game's five-on-five. Those cells cover far more time than any pair, so they reach full colour sooner and stand at full height, a wall along each edge of the grid. A goalie change adds a second goalie row or column, each covering his own time.

Linemates share the ice, so a line against a line reads as a block. The margin is a total, not a rate: a long matchup has room to build a big gap and a thirty-second one does not — which is what the height is there to show: a tall, strong cell is the game's story; a short, strong one is a moment. Hover (or tap) any cell for the exact time together, the xG each way, attempts and goals. One game — a strong cell is what happened, not what would happen again.

Goals

TeamScorerPeriodStrengthxG
SEABerkly Catton 1 5v5 0.13
SEAMackie Samoskevich 1 5v5 0.17
SEABobby McMann 1 5v5 0.14
SEAShane Wright 2 5v5 0.10
SEAMackie Samoskevich 2 5v5 0.09
CGYMorgan Frost 3 PP 0.17
SEAJordan Eberle 3 5v5 0.04

The prediction, scored

Before puck drop the engine made SEA a 57.9% favorite, expecting a 2.66–3.13 game — SEA won 1–6, so the call landed. Every number in this section was issued before the game and is never re-graded.

pred. xGactual xG pred. 5v5actual 5v5 pred. STactual PP
CGY 2.662.28 2.431.97 0.300.31
SEA 3.132.42 2.662.42 0.540.00

Predicted 5v5 / special-teams portions come from the map's strength splits (one shared scale per team pins the all-strengths total to its expected goals), so they don't sum exactly — the remainder is 4v4, 3v3, and other mixed states. The actual PP column is power-play xG only, the same bucket the map's special-teams view draws.

The pregame score grid

The likeliest finals the engine saw before the game, with what actually happened marked — ■ CGY · ■ SEA.

Likeliest finals (CGY–SEA)probability
2–3 5.5%
2–2 5.3% tied after regulation — OT/SO decides
3–3 4.9% tied after regulation — OT/SO decides
3–2 4.7%
2–4 4.3%
1–6 1.1% what happened
7.0%4.4%018.6%13.7%124.7%21.4%222.0%22.3%314.6%17.5%47.8%11.0%53.5%5.7%61.3%2.6%70.6%1.5%8+

Scoreline odds treat the two teams' totals as independent — the engine's known simplification (it slightly under-counts regulation ties; the correlation term is registered v1.1 work). The OT/SO layer is a separate fitted model and is already inside the headline win probability.

The pregame read

The engine made SEA a 57.9% favorite — SEA controls 54.1% of the predicted xG. Of CGY's 2.66 expected goals, 2.43 should come at 5v5 and 0.30 on the power play; SEA projects 2.66 at 5v5 and 0.54 on the power play. The logistic challenger put the home side at 58.9%, Elo at 58.0%.

Tale of the tape

How each team fares on its own, season to date: per-game xG rates with league rank (of 32). Rank 1 is best on every row — orange ranks sit in the top third of the league, gray in the bottom third.

CGYSEA
2.25 (29th) Offense
xG for / game
2.84 (16th)
3.15 (22nd) Defense
xG against / game
2.78 (18th)
0.17 (32nd) Power play
PP xG / game
0.51 (25th)
0.63 (12th) Penalty kill
PP xG conceded / game
0.43 (7th)

Season-to-date form as of the site's latest build, shown for context — the ratings the engine actually used were its own as-of-game-day state. Replay this matchup in the lab →