xJawn NHL expected goals

← Games

STL @ DAL

2026-10-02 · final 4–0 · what happened, next to what the engine said before puck drop

The call
DAL 56.2% ✗
expected 2.84–3.22 · STL won 4–0
actual xG
2.76–2.84
xG share, predicted → actual
STL 47% → 49%51% → 53% DAL
Today's puzzle Remember Some Guys — name the skater from the shape of his career. Three clues, one guess a day. Play →

What happened

STL attacks the left net, DAL 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 · STL skaters · DAL skaters · STL lines · DAL lines · Matchups
STLDAL
2.76
Expected goals
2.84
2.00
5v5 xG
1.33
0.70
Power-play xG
1.43
3
High-dangerattempts ≥ 0.20 xG
1
22
Shots on goal
25
48
Attempts
59
xG by period 1st1.7–0.72nd0.3–1.43rd0.8–0.7

The Blues beat the Stars 4–0 on the road in a game the chances called about even, STL 2.8 to DAL 2.8 in expected goals. The Stars power play made 1.4 xG on 16 attempts.

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 STL minus DAL expected goals. Above zero STL is ahead on chances, below zero DAL is. Shaded bands are power plays in the side's colour; vertical lines are goals.

1ST2ND3RD+0.5−0.5+1−1+1.5−1.5+2−2STL AHEAD ▲DAL 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.

STL skaters

on ice, against on ice, for own attempts net ice time
0.50.5111.51.50Mason McTavishF14:36+1.05Jimmy SnuggerudF18:59+1.03Dylan HollowayF19:21+0.68Adam JiricekD16:35+0.64Connor McMichaelF13:03+0.34Pavel BuchnevichF17:11+0.23Robert ThomasF22:59+0.04Theo LindsteinD15:13+0.03Dalibor DvorskyF13:03-0.08Ross JohnstonF9:59-0.13Cam FowlerD22:38-0.18Alexey ToropchenkoF5:08-0.18Philip BrobergD23:08-0.19Jonatan BerggrenF13:45-0.36Jake NeighboursF13:03-0.39Brandon CarloD15:27-0.47Pius SuterF14:25-0.63Colton ParaykoD20:27-0.67

DAL skaters

on ice, against on ice, for own attempts net ice time
0.50.5111.51.5220Mikko RantanenF22:10+1.15Wyatt JohnstonF21:49+0.88Roope HintzF16:57+0.63Jamie BennF10:03+0.55Jason RobertsonF19:39+0.48Sam SteelF11:19+0.40Miro HeiskanenD26:45+0.27Justin HryckowianF17:12+0.16Arttu HyryF13:07+0.16Tyler SeguinF14:55+0.10Tyler MyersD13:13+0.10Nils LundkvistD15:22-0.22Thomas HarleyD20:59-0.22Lian BichselD16:02-0.50Joel KivirantaF10:18-0.58Radek FaksaF11:07-0.65Esa LindellD18:43-0.68Oskar BäckF12:03-0.70

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.

STL lines

on the ice together STL power play penalty kill xG against xG for net
FORWARD LINESL1Robert ThomasDylan HollowayJimmy Snuggerud14:07+0.73L2Jonatan BerggrenJake NeighboursDalibor Dvorsky5:22-0.34L3Pavel BuchnevichConnor McMichaelMason McTavish5:13+0.15L4Ross JohnstonAlexey ToropchenkoPius Suter3:43-0.12DEFENCE PAIRSD1Cam FowlerBrandon Carlo12:58-0.51D2Colton ParaykoTheo Lindstein11:56+0.10D3Philip BrobergAdam Jiricek11:40+0.371ST2ND3RD01.251.25

DAL lines

on the ice together DAL power play penalty kill xG against xG for net
FORWARD LINESL1Mikko RantanenWyatt JohnstonJustin Hryckowian8:22+0.19L2Tyler SeguinRoope HintzJason Robertson8:15-0.25L3Radek FaksaOskar BäckJoel Kiviranta6:35-0.46L4Jamie BennSam SteelArttu Hyry5:46+0.39DEFENCE PAIRSD1Tyler MyersLian Bichsel12:34+0.09D2Miro HeiskanenThomas Harley12:11-0.09D3Esa LindellNils Lundkvist9:45-0.161ST2ND3RD00.750.75

Matchups

5v5 · every skater against every skater, goalies first · hover a cell
STL won the chances DAL 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
HoferThomasHollowaySnuggerudBerggrenNeighboursDvorskyBuchnevichMcMichaelMcTavishJohnstonToropchenkoSuterFowlerCarloParaykoLindsteinBrobergJiricekOettingerRantanenJohnstonHryckowianSeguinHintzRobertsonFaksaBäckKivirantaBennSteelHyryMyersBichselHeiskanenHarleyLindellLundkvistGL1L2L3L4D1D2D3GL1L2L3L4D1D2D3
How to read this

Rows are STL's skaters, columns DAL'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
STLMason McTavish 1 5v5 0.47
STLDalibor Dvorsky 2 5v5 0.14

The prediction, scored

Before puck drop the engine made DAL a 56.2% favorite, expecting a 2.84–3.22 game — STL won 4–0, so the call missed. Every number in this section was issued before the game and is never re-graded.

pred. xGactual xG pred. 5v5actual 5v5 pred. STactual PP
STL 2.842.76 2.412.00 0.840.70
DAL 3.222.84 1.501.33 2.491.43

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 — ■ STL · ■ DAL.

Likeliest finals (STL–DAL)probability
2–3 5.2%
3–3 5.0% tied after regulation — OT/SO decides
2–2 4.9% tied after regulation — OT/SO decides
3–2 4.6%
2–4 4.2%
4–0 0.6% what happened
5.8%4.0%016.6%12.9%123.6%20.7%222.3%22.2%315.8%17.9%49.0%11.5%54.3%6.2%61.7%2.8%70.9%1.7%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 DAL a 56.2% favorite — DAL controls 53.1% of the predicted xG. Of STL's 2.84 expected goals, 2.41 should come at 5v5 and 0.84 on the power play; DAL projects 1.50 at 5v5 and 2.49 on the power play. The logistic challenger put the home side at 56.5%, Elo at 61.7%.

Tale of the tape

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

STLDAL
2.76 (18th) Offense
xG for / game
2.84 (15th)
2.84 (19th) Defense
xG against / game
2.76 (17th)
0.70 (17th) Power play
PP xG / game
1.43 (3rd)
1.43 (28th) Penalty kill
PP xG conceded / game
0.70 (14th)

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 →