Producer: chemistry_wowy.py. Data: pair_chemistry.csv (pair-season aggregates), chemistry_league.csv.
Method. Per (game, second) 5v5 on-ice sets from shifts (goalies = ids absent from bio/boxscore skater lists); attempts priced by xG v2 (shot_ledger_v2.csv). Together = both on ice; apart = individual 5v5 total minus together. Expected pair xG% = log-odds average of the members' apart xG%; chemistry residual = together xG% minus expected. Qualification: F pairs >= 200 5v5 min together, D pairs >= 300; each member >= 60 min apart. Split-half = odd/even game ids (100/150 min together, 30 min apart per half).
========================================================================
PAIR CHEMISTRY (WOWY) -- 16 seasons, 5v5
========================================================================
Qualifying pair-seasons: 8908 (F 7322, D 1586); with defined apart rates: 8858
F: n=7274, resid mean +0.0142, minute-weighted SD 0.0488 (4.88 xG% pts)
D: n=1584, resid mean +0.0061, minute-weighted SD 0.0414 (4.14 xG% pts)
--- Split-half (odd/even games) within season ---
F: chemistry resid r = +0.126 (weighted +0.143), raw together-xG% r = +0.365 [control] (n=5720)
D: chemistry resid r = +0.133 (weighted +0.135), raw together-xG% r = +0.449 [control] (n=1287)
ALL: chemistry resid r = +0.129 (weighted +0.147), raw together-xG% r = +0.378 [control] (n=7007)
--- Year-over-year (same pair, consecutive qualifying seasons) ---
F: chemistry resid r = +0.129 (weighted +0.160, t=6.0), raw together-xG% r = +0.456 [talent control], expected-xG% r = +0.449 (n=2110)
D: chemistry resid r = +0.179 (weighted +0.146, t=3.7), raw together-xG% r = +0.484 [talent control], expected-xG% r = +0.362 (n=412)
ALL: chemistry resid r = +0.140 (weighted +0.170, t=7.1), raw together-xG% r = +0.459 [talent control], expected-xG% r = +0.441 (n=2522)
--- 2025-26 pairs, >=300 5v5 min together (389 qualify) ---
--- What is +1 SD of chemistry worth? ---
wins per goal-diff (team-season regression, n=494 team-seasons): 0.1759 (~5.7 goals per win)
league 5v5 pace: 5.06 total xG per 60 (both teams; 15374 team-game hours)
F-pair chemistry: observed minute-weighted SD = 4.88 xG% pts
split-half reliability (weighted r): +0.143 -> Spearman-Brown full-season reliability 0.250
=> true-chemistry SD ~ 2.44 xG% pts
scenario: pair kept together 640 5v5 min (90th pct of qualifying F pairs)
total on-ice xG in those minutes ~ 53.9 -> 1.08 goals per xG%-point (derived, not hand-waved)
+1 SD true chemistry = +2.63 goals = +0.463 wins per season
(unshrunk, taking a +1 SD OBSERVED residual at face value: +0.93 wins -- upper bound, mostly noise)
--- Verdict ---
Weak but non-zero persistence: a small real chemistry component exists but is heavily diluted by noise; only extreme, high-minute residuals are worth acting on.
Top 10 chemistry (more than the sum of their parts):
| Pair | Pos | Team | 5v5 min | xG% together | expected | residual |
|---|---|---|---|---|---|---|
| Casey Cizikas + Kyle MacLean | F | New York Islanders | 486 | 54.8 | 39.9 | +14.9 |
| Damon Severson + Zach Werenski | D | Columbus Blue Jackets | 388 | 65.3 | 50.5 | +14.8 |
| Zemgus Girgensons + Pontus Holmberg | F | Tampa Bay Lightning | 655 | 57.6 | 45.9 | +11.7 |
| Casey Cizikas + Marc Gatcomb | F | New York Islanders | 405 | 54.9 | 43.9 | +11.0 |
| Nick Schmaltz + Clayton Keller | F | Utah Mammoth | 1018 | 54.5 | 44.1 | +10.4 |
| Linus Karlsson + Max Sasson | F | Vancouver Canucks | 378 | 52.9 | 42.8 | +10.1 |
| Mark Jankowski + Eric Robinson | F | Carolina Hurricanes | 362 | 60.9 | 50.8 | +10.1 |
| Michael Carcone + Jack McBain | F | Utah Mammoth | 536 | 58.1 | 48.3 | +9.8 |
| Noel Acciari + Connor Dewar | F | Pittsburgh Penguins | 590 | 55.0 | 45.4 | +9.6 |
| Max Domi + Bobby McMann | F | Toronto Maple Leafs | 342 | 52.4 | 42.9 | +9.5 |
Bottom 10 chemistry (less than the sum of their parts):
| Pair | Pos | Team | 5v5 min | xG% together | expected | residual |
|---|---|---|---|---|---|---|
| Alex Newhook + Oliver Kapanen | F | Montreal Canadiens | 319 | 41.9 | 51.4 | -9.5 |
| Brock Boeser + Marco Rossi | F | Vancouver Canucks | 317 | 35.6 | 45.1 | -9.4 |
| Max Domi + Matthew Knies | F | Toronto Maple Leafs | 379 | 39.7 | 48.3 | -8.6 |
| Jonathan Marchessault + Filip Forsberg | F | Nashville Predators | 307 | 40.0 | 48.3 | -8.3 |
| Ryan Pulock + Matthew Schaefer | D | New York Islanders | 816 | 45.1 | 53.4 | -8.3 |
| Colton Sissons + Keegan Kolesar | F | Vegas Golden Knights | 325 | 45.9 | 54.2 | -8.3 |
| Damon Severson + Denton Mateychuk | D | Columbus Blue Jackets | 341 | 47.8 | 55.7 | -7.9 |
| Filip Hronek + Elias Pettersson | D | Vancouver Canucks | 384 | 36.9 | 44.8 | -7.9 |
| Vladislav Gavrikov + Braden Schneider | D | New York Rangers | 512 | 42.6 | 49.9 | -7.3 |
| Carter Verhaeghe + Sam Bennett | F | Florida Panthers | 640 | 47.8 | 54.8 | -7.0 |
| Season | Pair | Pos | Team | Min | xG% tog | exp | resid |
|---|---|---|---|---|---|---|---|
| 2017 | Claude Giroux + Sean Couturier | F | Philadelphia Flyers | 1100 | 51.0 | 31.7 | +19.4 |
| 2017 | Daniel Sedin + Henrik Sedin | F | Vancouver Canucks | 884 | 52.1 | 33.4 | +18.7 |
| 2014 | Daniel Sedin + Henrik Sedin | F | Vancouver Canucks | 1033 | 47.7 | 29.1 | +18.6 |
| 2020 | Gabriel Landeskog + Mikko Rantanen | F | Colorado Avalanche | 647 | 63.1 | 44.7 | +18.4 |
| 2017 | James van Riemsdyk + Tyler Bozak | F | Toronto Maple Leafs | 857 | 55.7 | 38.8 | +16.9 |
| 2022 | Nick Schmaltz + Clayton Keller | F | Utah Mammoth | 839 | 49.5 | 32.9 | +16.6 |
| 2020 | Mitch Marner + Auston Matthews | F | Toronto Maple Leafs | 746 | 59.6 | 43.8 | +15.8 |
| 2021 | Erik Gudbranson + Nikita Zadorov | D | Calgary Flames | 944 | 62.1 | 46.4 | +15.6 |
| 2022 | Sidney Crosby + Jake Guentzel | F | Pittsburgh Penguins | 1079 | 53.2 | 37.6 | +15.6 |
| 2016 | Kyle Brodziak + Ryan Reaves | F | St. Louis Blues | 512 | 49.6 | 34.3 | +15.3 |
| 2018 | Matt Martin + Casey Cizikas | F | New York Islanders | 624 | 46.0 | 55.9 | -9.9 |
| 2014 | Troy Brouwer + Evgeny Kuznetsov | F | Washington Capitals | 517 | 45.2 | 55.3 | -10.1 |
| 2010 | Cory Sarich + Mark Giordano | D | Calgary Flames | 735 | 48.5 | 58.8 | -10.2 |
| 2019 | Jack Johnson + Kris Letang | D | Pittsburgh Penguins | 531 | 43.5 | 54.0 | -10.5 |
| 2012 | Eric Staal + Jiri Tlusty | F | Carolina Hurricanes | 575 | 44.8 | 55.7 | -10.9 |
| 2020 | Mika Zibanejad + Pavel Buchnevich | F | New York Rangers | 578 | 45.0 | 56.1 | -11.1 |
| 2012 | Andrei Markov + Alexei Emelin | D | Montreal Canadiens | 517 | 51.0 | 63.1 | -12.2 |
| 2018 | Joe Thornton + Marcus Sorensen | F | San Jose Sharks | 709 | 48.8 | 61.3 | -12.5 |
| 2015 | Jeff Skinner + Victor Rask | F | Carolina Hurricanes | 660 | 40.9 | 54.2 | -13.3 |
| 2021 | Alex Pietrangelo + Nicolas Hague | D | Vegas Golden Knights | 588 | 44.9 | 60.0 | -15.2 |
Face validity. Bergeron + Marchand post a positive residual in 12 of 13 qualifying seasons (peak +13.5 pts in 2011-12) -- the canonical 'more than the sum of its parts' duo shows up as exactly that.
Caveats. (1) Survivorship: the mean residual is positive (~+1.4 pts for F) because coaches keep pairs that are working and break up ones that aren't -- qualifying on minutes selects for observed success, so compare residuals to the qualifying-pair mean, not to zero. (2) Apart samples include time next to other elite/weak teammates (WOWY, not a full ridge adjustment). (3) Residuals for low-minute pairs are noisy by construction. (4) Apart time after a mid-season trade counts toward apart rates. (5) Playoff minutes are included in their season.