xJawn NHL expected goals

← Teams

Detroit Red Wings

Atlantic · 7-8-3, 17 pts

18 GP · 8th Atlantic
2026-27 · regular season
On the ice
Adjusts with rink filters
shots for◀ 5v5 offense
shots against5v5 defense ▶
How to read this map

One rink, both ends: what DET generates on the left, what it concedes on the right (on a phone, one end at a time, net at the top: the switch above the map picks it). Every attempt is a Gaussian bump of height = its model xG, summed per game. The controls switch the surface (xG heatmap ↔ vs league, the league baseline at the same strength) and the markers: × goal · • on net · ◦ missed · small • blocked.

The page opens at 5v5; empty-net attempts are excluded throughout, and the strength buckets segregate them anyway — which is why the empty-net control greys out unless the view can actually contain one. Everything inside the outlined box moves with the filters; everything below it does not.

Observed production

5v5 · season to date
for against
axis spans ±63% of league average · centre = average · right = more
Goalsteam
30 30th pctl31 31st pctl
Shotsteam
394 75th pctl334 28th pctl
Attemptsteam
811 72nd pctl764 41st pctl
xGteam
38.4 69th pctl34.6 53rd pctl
xGF%share of team xG
52.6%69th pctl
0% 50% = even split · gray = league middle 50% / 90% 100%

Percentiles and the gray spread rank against all 32 teams recomputed under the current filter — every bar and band here moves together, so a slice never ranks against a different slice's league.

Rolling xGF%

5v5 · last 10 games
Per-game chance share, smoothed. drag the slider to set the window
Who

Skaters on ice

5v5 · season to date
Team expected goals while each skater is on the ice, per 60 minutes · 5v5. up and right is better
strength
xGF/60 xGA/60
centre = league skater average · gray = league middle 50% / 90%
SkaterPos TOIxGF/60 xGA/60xGF% for / against
Alex DeBrincat F 355 4.46 2.09 68.1%
Lucas Raymond F 361 3.93 1.90 67.4%
Viktor Arvidsson F 335 4.46 2.49 64.2%
Michael Brandsegg-Nygård F 279 3.27 2.06 61.3%
Dylan Larkin F 215 4.11 2.78 59.7%
Moritz Seider D 464 3.34 2.57 56.5%
Axel Sandin-Pellikka D 88 3.56 2.74 56.5%
Emmitt Finnie F 330 3.40 2.81 54.8%
Albert Johansson D 171 3.04 3.14 49.2%
Justin Faulk D 363 2.69 2.80 49.0%
Nate Danielson F 140 2.13 2.29 48.2%
Andreas Englund D 173 2.50 2.74 47.7%
J.T. Compher F 168 3.09 3.44 47.4%
Andrew Copp F 333 2.71 3.07 46.8%
Michael Rasmussen F 287 2.82 3.24 46.5%
Carter Mazur F 103 2.59 3.28 44.1%
Ben Chiarot D 362 2.41 3.30 42.2%
William Wallinder D 212 2.39 3.28 42.1%
Anton Johansson D 243 2.46 3.51 41.2%
Keegan Kolesar F 184 1.51 2.37 38.8%
Sheldon Dries F 124 1.92 3.34 36.4%
xGF/60 xGA/60
centre = league skater average · gray = league middle 50% / 90%
SkaterPos TOIxGF/60 xGA/60xGF% for / against
Albert Johansson D 146 3.42 2.36 59.1%
Andreas Englund D 155 2.74 1.94 58.5%
J.T. Compher F 136 3.36 2.42 58.1%
Axel Sandin-Pellikka D 73 3.24 2.45 57.0%
Alex DeBrincat F 263 3.14 2.49 55.8%
Michael Brandsegg-Nygård F 247 2.76 2.20 55.7%
Michael Rasmussen F 218 2.84 2.32 55.0%
Emmitt Finnie F 247 3.16 2.64 54.5%
Dylan Larkin F 145 2.66 2.25 54.2%
Lucas Raymond F 264 2.47 2.16 53.3%
William Wallinder D 190 2.62 2.36 52.6%
Moritz Seider D 322 2.36 2.14 52.5%
Justin Faulk D 296 2.52 2.36 51.6%
Ben Chiarot D 308 2.72 2.55 51.6%
Viktor Arvidsson F 252 3.03 2.89 51.2%
Sheldon Dries F 100 2.33 2.31 50.2%
Andrew Copp F 244 2.41 2.45 49.6%
Nate Danielson F 133 2.10 2.39 46.8%
Anton Johansson D 226 2.62 3.22 44.9%
Carter Mazur F 101 2.58 3.31 43.8%
Keegan Kolesar F 161 1.53 1.99 43.6%
xGF/60 xGA/60
centre = league skater average · gray = league middle 50% / 90%
SkaterPos TOIxGF/60 xGA/60xGF% for / against
Emmitt Finnie F 39 6.76 0.52 92.8%
Viktor Arvidsson F 63 9.20 0.77 92.3%
Dylan Larkin F 37 10.53 0.93 91.9%
Moritz Seider D 64 9.80 0.95 91.2%
Alex DeBrincat F 65 9.22 0.90 91.1%
Lucas Raymond F 66 9.43 0.92 91.1%
Michael Brandsegg-Nygård F 28 6.79 0.73 90.2%
Justin Faulk D 34 5.25 0.63 89.3%
Andrew Copp F 36 5.95 0.91 86.7%
Michael Rasmussen F 31 5.71 0.89 86.5%
J.T. Compher F 9 6.41 1.86 77.5%
xGF/60 xGA/60
centre = league skater average · gray = league middle 50% / 90%
SkaterPos TOIxGF/60 xGA/60xGF% for / against
Keegan Kolesar F 19 0.53 5.21 9.2%
Emmitt Finnie F 24 0.75 8.96 7.7%
Moritz Seider D 47 0.66 7.92 7.7%
Ben Chiarot D 40 0.59 8.33 6.6%
Andrew Copp F 35 0.39 10.18 3.7%
J.T. Compher F 22 0.31 9.42 3.2%
Sheldon Dries F 21 0.22 8.14 2.6%
Dylan Larkin F 18 0.26 9.70 2.6%
Andreas Englund D 16 0.28 10.78 2.5%
Michael Rasmussen F 33 0.23 10.97 2.1%
Albert Johansson D 21 0.13 7.94 1.6%
William Wallinder D 17 0.10 12.94 0.8%
Justin Faulk D 24 0.07 11.00 0.7%
Anton Johansson D 15 0.00 7.20 0.0%
How to read this section

Each skater is placed by the team's expected goals for (across) and against (up, reversed so fewer is higher) per 60 minutes while they are on the ice. Above the dashed line the team out-chances its opponents with that skater on; below it, it is out-chanced. The dotted lines are the league skater average, and the open ring is the DET average. Bigger markers mean more ice time; circles are forwards, diamonds defensemen.

5v5 is even strength with both goalies in. All is every strength, with shots at an empty net left out, as on the rink above. Power play is more skaters than the opponent with DET's goalie in (an extra attacker for a pulled goalie is not one); penalty kill is fewer, with the opponent's goalie in. The strength switch is the page's: it moves the rink above too, and the link carries it. On-ice numbers describe what happened with a skater on the ice, teammates and opponents included; the Players page's RAPM separates the skater from both.

Skaters under 66 minutes at 5v5 for DET are left off the chart and folded under the table; the floor grows with games played. On the power play and the kill a skater also needs half a minute a game at that strength, so the dots there are the units, not whoever got a shift. A traded skater counts only their time with this club. Once the playoffs start, their games count here too.

The model

Model estimates

🔒 5v5 · as of Jun 14, 2026
Season-long ratings — the filters above don't apply here. goals vs league average · bar grows from average

Last season's ratings on this season's shots. The per-player ratings behind these rows were fit as of 2026-06-14, before 2026-27 opened, and stay fixed until the season has enough games to refit. They are applied to the shots 2026-27 has actually seen, so the rows update daily; a player the fit never saw counts as league average.

Shootingour skaters · on our shots, vs this season's average
-1.89th pctl
811 attempts · 91% by rated shooters
Savingour goalies · on shots faced, vs this season's average
John Gibson +0.96 G · 411 shotsDaniil Tarasov -0.60 G · 305 shotsMichal Postava -0.09 G · 48 shots
+0.359th pctl
John Gibson 411 · Daniil Tarasov 305 · Michal Postava 48 shots faced
Shooting againsttheir skaters · on shots faced
+0.153rd pctl
sign-flipped — positive means they shot worse than average
Saving againsttheir goalies · on our shots
+0.153rd pctl
negative means their goalies stopped more than average
−4league average+4

These four are shown within-season centered — each against this season's own league average, not the fit's career-pooled one — because shooting talent leaguewide is running well above its historical zero point this season; without that adjustment nearly every bar would read "above average." The against columns still barely vary between teams, since every team faces roughly average opposition, so for those two the rank still matters more than the level. They are shown because they genuinely move adjusted xGF% below (computed from the uncentered ratings — see that section's own note), and folding them into the two own-team rows would have hidden half of that.

Adjusted xGF%skill-weighted chance share
saving against -0.93 ppshooting against -1.11 ppsaving +1.20 pp
51.7%56th pctl · -0.91 pp
0% 50% = even split · gray = league middle 50% / 90% 100%
How it's built, and what it isn't
unadjusted 52.6% +shooting -0.06+saving against -0.93+shooting against -1.11+saving +1.20 = adjusted 51.7%

How it's builtEvery 5v5 shot is re-scored with σ(logit(xG) + shooter − goalie) and both ends re-summed. Both skill terms land on every shot — one team's for side, the other's against side — so the league share still averages 50%. The two moves are taken in that order and sum exactly to the total; shares don't decompose additively, so a side-by-side split would not close.

What it isn'tA descriptive re-score of shots already taken, not a forecast. Against future goal share the combined adjustment is indistinguishable from plain xGF% (+0.019 r, p = 0.192); only the shooting half shows a small honest lift (+0.026, p = 0.020), and the saving half contributes nothing forward-looking. The premise underneath is itself unestablished — xGF% over GF% is +0.040, p = 0.246. Read it as what this roster's skill was worth on these shots — nothing more.

The four segments are the four rows above, in order. They are four and not two because η puts both rating terms on every shot: the shots we took carry our shooters and the opposing goalie, and the shots we faced carry their shooters and ours. Over a full season the two “against” terms would sit near league average and contribute nothing — but the ratings are not centred at zero this season, so they do move the number, and hiding them inside a single “shots faced” figure would have left half the adjustment unexplained.

Context

Season context

season to date
How the season was played, not how well. Not a modeled component: each is its own metric (a rate, a TOI share, or opponents' net xG-RAPM), shown with a league percentile only where one exists, never added together. Not a grade.
Ice timeshare by strength
5v5 78%PPPK
+0.9PP − PK min/60
Score stateTOI by game state
trail 39%tied 41%lead 20%
often tied
Goalie workloadstarter's share of shots
54%of 5v5 shots against
Schedule strengthopponents' net xG-RAPM
not available in the pipeline
—
0league average100 pctl
Full table · all numbers
FamilyStatValue (current slice)
Observed ◆ filtered Goals for / against 30 / 31
Observed ◆ filtered xG for / against 38.4 / 34.6
Observed ◆ filtered Shots for / against 394 / 334
Observed ◆ filtered Attempts for / against 811 / 764
Modeled 🔒 5v5 Shooting — our skaters · on our shots, vs this season's average -1.8 G 9th pctl
Modeled 🔒 5v5 Saving — our goalies · on shots faced, vs this season's average +0.3 G 59th pctl
Modeled 🔒 5v5 Shooting against — their skaters · on shots faced +0.1 G 53rd pctl
Modeled 🔒 5v5 Saving against — their goalies · on our shots +0.1 G 53rd pctl
Modeled 🔒 5v5Unadjusted xGF%52.6%
Modeled 🔒 5v5↳ shooting shift-0.06 pp
Modeled 🔒 5v5↳ saving against shift-0.93 pp
Modeled 🔒 5v5↳ shooting against shift-1.11 pp
Modeled 🔒 5v5↳ saving shift+1.20 pp
Modeled 🔒 5v5Adjusted xGF% 51.7% 56th pctl
ContextIce time — share by strength+0.9
ContextScore state — TOI by game stateoften tied
ContextGoalie workload — starter's share of shots54%
ContextSchedule strength — opponents' net xG-RAPM—

Observed values reflect the active rink filters; modeled values are fixed at their 5v5 fit.

Modeled ratings come from joint__baseline_xg__f3e3111e (as of 2026-06-14) — a separate surface from the box-score xG model badged in the footer.