Motion-blurred skater in a Buffalo Sabres sweater
Breakdown · BUF at STL

Sabres run the Blues off the ice on the underlying numbers

The verdict · earned

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

BUF 4 · STL 2
◆ By the ModelJul 11, 10:18 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

Buffalo's 4–2 victory understates their dominance. The underlying metrics were overwhelmingly one-sided: the Sabres controlled 75% of 5v5 expected goals (4.94–1.68) and held the Blues to just 1 high-danger chance against 10.

Shot quality explains the gap. Buffalo generated 0.071 expected goals per attempt; St. Louis mustered 0.043. The Sabres converted 3 goals from 28 rush chances—efficient execution in transition. St. Louis held 35% of shot attempts but lacked the dangerous looks to keep the result close.

J. Hofer managed to keep the contest respectable. He stopped 1.94 goals above expected and saved 90% of high-danger shots, the kind of performance required when underlying play favors your opponent so heavily. A. Lyon's 0.889 save percentage reflected the softer looks St. Louis generated.

Buffalo underperformed their xG by 0.94 goals—the margin could have been wider. Peyton Krebs's wrist shot from the top of the circles (P3, 18:44) exemplified the kind of chance the Sabres generated repeatedly. The outcome was decided by play, not circumstance.

The breakdown in twelve frames

Swipe it

Every number is from this page
Final · Dec 29
BUF
4
STL
2

Sabres run the Blues off the ice on the underlying numbers

Chances 4.9 – 1.7Did they deserve it? →
Did they deserve it?

The Sabres earned this one.

Expected goals · chance value
BUF
4.94
STL
1.68
75% of the chances25%

The board read BUF 4, STL 2. The chances read BUF 4.9, STL 1.7.

Our xG model · NHL play-by-play · all situations
Luck check
BUF
−0.9
goals above expected
BUF4.94 expected · 4 scored
Expected
Scored
STL1.68 expected · 2 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 02:19BUFN. Ostlund1–0
  2. P1 05:08STLB. Schenn1–1
  3. P1 08:09STLJ. Snuggerud1–2
  4. P2 15:17BUFA. Tuch2–2
  5. P3 01:46BUFZ. Benson3–2
  6. P3 18:44BUFP. KrebsEN4–2
NHL play-by-play · chance value from our xG model
Where the shots came from
BUF
52 shots
4
Final
79 shots
STL
27 shots
2
BUF attackSTL attack
BUF STL Goal
52
shots · 4 in
27
shots · 2 in
Every unblocked shot · press play to replay it
Chances by danger
BUFSTL
1 / 10
2.64 xG
High danger
0 / 1
0.19 xG
2 / 15
1.62 xG
Medium
1 / 10
1.16 xG
1 / 45
0.68 xG
Low
1 / 28
0.33 xG

High-danger looks: BUF 1 of 10, STL 0 of 1.

Danger tiers by our xG model · high ≥ 20% chance
In the net
A
J. Hofer
+1.9
STL · 30/33
D
A. Lyon
−0.3
BUF · 16/18
The numbers, checked
BACKCHECK

Sabres run the Blues 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 8–9
  1. 02:19BUFN. Ostlund(J. Norris)1–0
  2. 05:08STLB. Schenn(O. Stenberg, J. Kyrou)1–1
  3. 08:09STLJ. Snuggerud(R. Fabbri, C. Parayko)1–2
2ndshots 14–7
  1. 15:17BUFA. Tuch(M. Samuelsson)2–2
3rdshots 12–2
  1. 01:46BUFZ. Benson(J. Quinn, R. McLeod)3–2
  2. 18:44BUFP. Krebsempty net(B. Malenstyn)4–2

score reads BUF–STL

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

The numbers

XGBoost xG · NHL play-by-play
4.94
BUF chances
Goals their shots were worth
−0.9
Finishing
Goals below what those chances were worth
1.006
BUF puck luck
About 1.000 — a normal night for bounces
64.2%
Shot attempts
Over half — they had the puck more
Split by club

Who controlled the game

4.94Expected goals1.68
BUF 75% of the chance quality
34Shots on goal18
10High-danger chances1
70All attempts (Corsi)39
Adjusted for score: BUF 64% · STL 36%
Faceoffs · STL won43%off50%neu40%def
Source · NHL play-by-play · XGBoost xG
How the game was won

The danger ladder

shotsgoalsexpected
High dangerslot & crease
BUF1 / 10 · 2.64 xG
STL0 / 1 · 0.19 xG
Medium dangermid-range
BUF2 / 15 · 1.62 xG
STL1 / 10 · 1.16 xG
Low dangerperimeter & point
BUF1 / 45 · 0.68 xG
STL1 / 28 · 0.33 xG

BUF went 1-for-10 from high danger on 2.64 expected goals — 1.6 left on the table.

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

Finishing vs expected

expectedactual
BUF
4 G · 4.94 xG · -0.9
STL
2 G · 1.68 xG · +0.3
0123456

BUF finished -0.9 against expected, STL +0.3.

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

Shot diet

goalsshots
BUF
WRIST2/37
SNAP1/4
SLAP0/5
TIP IN0/3
BACKHAND0/2
BAT1/1
OTHER0/18
STL
WRIST2/16
SNAP0/3
SLAP0/2
TIP IN0/3
BACKHAND0/3
BAT0/0
OTHER0/12
BUF
STL
Off the rush
3 G on 28
2.57 xG
1 G on 19
1.41 xG
Off rebounds
0 G on 3
0.41 xG
1 G on 2
0.21 xG

Wrist shots carried the volume: BUF went 2-for-37, STL 2-for-16. BUF scored 3 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
A. Lyon
BUF · 16/18 · .889
-0.3
saved above expected
D
the night
By dangerG/attxGsaved
High danger0/10.2+0.2
Medium1/101.2+0.2
Low1/280.3-0.7

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

J. Hofer
STL · 30/33 · .909
+1.9
saved above expected
A
the night
By dangerG/attxGsaved
High danger1/102.6+1.6
Medium2/151.6-0.4
Low1/450.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

79 shots · press play to watch the game back

Where the shots came from

NHL play-by-play coordinates
BUF
52 shots
4
Final
79 shots
STL
27 shots
2
BUF attackSTL attack
BUF STL Goal

Each club shoots toward its own end — BUF left, STL 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
C. Parayko
#55 · D · STL
0 G · 1 A · 0 SOG · 24:58 on ice · +1
M. Samuelsson
#23 · D · BUF
0 G · 1 A · 2 SOG · 22:14 on ice · -1
R. McLeod
#71 · C · BUF
0 G · 1 A · 3 SOG · 17:09 on ice
Ranked from the box score — points first · Backcheck
What the model said beforehand

Before the game

Written Mon, Dec 29
Open the pre-game read
Written from the numbers

The read

Edited for clarity
◆ By the ModelJul 11, 10:16 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 near-dead-even game—Buffalo in the 2.5–2.6 scoring range and the Blues holding 52% win probability. The underlying numbers support that tightness—Buffalo edges St. Louis in expected goals percentage (50.0% to 49.0%) and Corsi percentage (49.0% to 48.0%)—but recent form and hot shooting have tilted the needle slightly toward the Sabres.

Buffalo is 8-2-0 in their last 10 games, while St. Louis has been underwater at minus-7 in goal differential over the same stretch. That gap is the real story. The Blues' performance against expected outcomes (PDO of 1.000) is dead-even, meaning their struggles are real, not unlucky. The Sabres, by contrast, are running at a PDO of 1.020—hotter than the underlying play strictly warrants, which suggests regression is likely. One team is hitting too well to sustain it; the other is playing worse than its process deserves.

The talent gap is narrow, but narrowness itself matters here. Jason Zucker has generated 1.07 expected goals per 60 minutes and posted 14 goals with 14 assists at 15.1% shooting—well above the league average. Josh Doan sits at 1.01 xG/60 with 15 goals, 18 assists, and 11.5% shooting. These two are both creating and finishing at above-average rates.

For St. Louis, Jimmy Snuggerud and Dylan Holloway have the scoring volume but not quite the efficiency. Snuggerud's 0.86 xG/60 translates to 15 goals and 22 assists at 11.9% shooting—solid, but not what Zucker is doing. Holloway is more of a facilitator: 0.82 xG/60, 13 goals, and 24 assists, relying on a 10.8% conversion rate to matter. The Blues can score; they're just doing it less efficiently.

Goaltending adds volatility. Both J. Hofer and U. Luukkonen are on back-to-back appearances, which means either tired starters or surprise backups could be in the pipes. Fatigue at that position swings tight games, especially in a matchup where the underlying metrics say "flip a coin anyway."

Buffalo's edge comes from hot shooting likely to regress, recent form likely to stick, and individual performance—Zucker above all—that beats his expected output. St. Louis has the underlying numbers to hang with them and a goaltending variable to exploit. The Blues' 52% probability rating makes sense: in a dead-even game, rest and positive variance both deserve accounting for.

What the model said beforehand

The model's lean

STL 52%
52%
STL
Model favorite
48%
52%
BUF50STL

STL by 4 points of win probability — effectively a coin flip. Projected score BUF 2.5–2.6 STL; 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
BUF← edge
edge →STL
50.0%49.0%
49.0%48.0%
2.552.34
2.552.40
2.352.00
1.902.12
1.0201.000

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

Source · NHL stats API + our xG · 5v5
Form · Last 10
BUF
8-2-0
+7 GD · 1d rest
STL
5-4-1
-7 GD · 1d rest
1.020
BUF PDO
Luck gauge · drifts to 1.000
1.000
STL PDO
Luck gauge · drifts to 1.000
What decides it

Keys to the game

Regression watch
  • The Sabres' PDO is 1.020 — running hot, expect some regression.
Things to watch
  • J. Hofer is on a back-to-back — watch for a backup start or a tired starter.
  • U. Luukkonen is on a back-to-back — watch for a backup start or a tired starter.
  • The Sabres are the hotter team by points pace (8-2-0 in their last 10).
  • The Blues are underwater at -7 goal differential over their last 10.
  • The Sabres' PDO is 1.020 — running hot, expect some regression.
Last game's lineup · confirmed at warm-up

Lineups

NHL box score
BUF
Expected in goal
U. Luukkonen
back-to-back.957 last start
Backup Ukko-Pekka Luukkonen · +10.5 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.

STL
Expected in goal
J. Hofer
back-to-back.938 last start
Backup Joel Hofer · +11.7 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
BUF
Jason Zucker14G 14A
1.07 xG/60 · 6 HD · 15.1% sh
Josh Doan15G 18A
1.01 xG/60 · 2 HD · 11.5% sh
STL
Jimmy Snuggerud15G 22A
0.86 xG/60 · 2 HD · 11.9% sh
Dylan Holloway13G 24A
0.82 xG/60 · 1 HD · 10.8% sh
Keep going

Where to next