Hoop Impact Bench

An open-source benchmark for NBA player impact metrics. Each metric's ratings are saved before the games, then tested on how well they predict the final margins. Code, data and results are public and can be rerun. Games, players and how each prediction adds up: lumahoops.org/bench.

2026-27 preseason 2026-27 dynamic Retro 2020-21 to 2025-26


2026-27 preseason

Every 2026-27 game, computed using each metric's ratings from before opening night (October 20, 2026).

88 games · Oct 20 to Oct 31 · updated Nov 1, 15:58 UTC

? What this table shows

After 88 games, xPM leads on game R² at .201, ahead of EPM projection (Danny Harlan) at .184. 8 of 45 pairs of metrics are separated on game R² at the 90% level; across 45 comparisons, about 4 would be separated by chance alone, so these are early signals.

Hoop Impact Bench tests NBA player impact metrics (EPM, DARKO, LEBRON, BPM and others) on games played after their ratings were saved. In each game, every player's rating is weighted by the minutes he played, which gives each team a rating in points per 100 possessions. The home team's rating minus the away team's is the predicted margin, and the tables measure how closely the predicted margins follow the final margins.

2026-27 is the current NBA season, which opened on October 20, 2026. The retro tables cover the six seasons before it.

The preseason board uses the ratings each metric had published before opening night of the 2026-27 NBA season (October 20, 2026). These ratings stay fixed, and every 2026-27 regular-season game is computed using them.

Columns

Labels

Sources for the tests: game margins and team net error follow Taylor Snarr's 2020 metric comparison; team win % r is Krishna Narsu's 2024 test; the 250-minute cutoff is Neil Paine's. Questions or errors: open an issue.

Data: frozen.json, every game, history. Computed with eval.py v1.1.0 (sha256 cfde3f922e88...). Rules: live protocol.

rankmetricW-Lgame R² 90% rangewin % rnet error after 20 gameslabel
1-5xPM George Berry, VORP.app58-30.201 .122-.292.558-archived
1-5EPM projection (Danny Harlan)61-27.184 .107-.277.584-archived
1-8DARKO Kostya Medvedovsky60-28.181 .093-.288.520-backfill
1-9LOKI † LUMA Basketball Research63-25.170 .085-.280.546-archived
2-10EPM Taylor Snarr, Dunks & Threes59-29.156 .080-.254.553-backfill
3-10BPM (Basketball-Reference) Daniel Myers / Basketball-Reference62-26.152 .080-.239.594-archived
3-10Pulse CourtSignal58-30.151 .075-.244.544-backfill
3-10xRAPM Jeremias Engelmann58-30.149 .075-.243.551-archived
3-10OpenRAPM Nathan Walker60-28.149 .080-.232.537-archived
6-10LEBRON BBall Index58-30.134 .060-.222.539-saved
Same-season RAPM (ceiling).361 .262-.457.690-
Consensus of all metrics.172 .093-.265.570-
Last season's RAPM, no prior.144 .063-.251.463-
Last season's team (floor).128 .050-.235.469-
Everyone 0 (floor).069 .013-.165.117-

2026-27 dynamic

Each 2026-27 game day, computed using each metric's ratings as published that morning.

6 games · Oct 31 to Oct 31 · updated Nov 1, 15:58 UTC

? What this table shows

After 6 games, ARC Live leads on game R² at .423, ahead of Pulse at .379. Every metric's rank range still overlaps the others, so the games so far do not separate any two metrics.

Hoop Impact Bench tests NBA player impact metrics (EPM, DARKO, LEBRON, BPM and others) on games played after their ratings were saved. In each game, every player's rating is weighted by the minutes he played, which gives each team a rating in points per 100 possessions. The home team's rating minus the away team's is the predicted margin, and the tables measure how closely the predicted margins follow the final margins.

2026-27 is the current NBA season, which opened on October 20, 2026. The retro tables cover the six seasons before it.

The dynamic board uses each metric's ratings as published on the morning of each game day, saved before that day's first game. Metrics that do not update daily, or have published nothing new that morning, are computed using their most recent ratings.

1 game is left out because it started before that day's ratings were saved.

Columns

Labels

Sources for the tests: game margins and team net error follow Taylor Snarr's 2020 metric comparison; team win % r is Krishna Narsu's 2024 test; the 250-minute cutoff is Neil Paine's. Questions or errors: open an issue.

Data: daily.json, every game, history. Computed with eval.py v1.1.0 (sha256 cfde3f922e88...). Rules: live protocol.

rankmetricW-Lgame R² 90% rangewin % rnet error after 20 gameslabel
1-9ARC Live † LUMA Basketball Research5-1.423 .032-1.000.562-pulled
1-11Pulse CourtSignal5-1.379 .009-1.000.468-pulled
1-10DARKO Kostya Medvedovsky5-1.318 .011-1.000.390-pulled
2-9LOKI † LUMA Basketball Research5-1.221 .011-1.000.430-pulled
1-10LEBRON BBall Index4-2.198 .006-1.000.410-carried
2-11EPM Taylor Snarr, Dunks & Threes5-1.177 .005-1.000.371-pulled
2-10xPM George Berry, VORP.app3-3.151 .004-1.000.342-carried
2-11BPM (Basketball-Reference) Daniel Myers / Basketball-Reference4-2.133 .004-1.000.307-carried
2-10EPM projection (Danny Harlan)5-1.121 .004-1.000.423-carried
2-11xRAPM Jeremias Engelmann3-3.071 .001-1.000.301-carried
2-11OpenRAPM Nathan Walker4-2.000 .000-1.000.070-pulled
Same-season RAPM (ceiling).766 .656-1.000.623-
Consensus of all metrics.228 .008-1.000.416-
Last season's RAPM, no prior.173 .003-1.000.301-
Last season's team (floor).053 .001-1.000.165-
Everyone 0 (floor).000 .000-.000.000-

Retro 2020-21 to 2025-26

2020-21 to 2025-26, computed using the ratings each metric had before each season.

7,230 games · 180 team-seasons

? What this table shows

Hoop Impact Bench tests NBA player impact metrics (EPM, DARKO, LEBRON, BPM and others) on games played after their ratings were saved. In each game, every player's rating is weighted by the minutes he played, which gives each team a rating in points per 100 possessions. The home team's rating minus the away team's is the predicted margin, and the tables measure how closely the predicted margins follow the final margins.

2026-27 is the current NBA season, which opened on October 20, 2026. The retro tables cover the six seasons before it.

The retro tables compute each season from 2020-21 to 2025-26 (7,230 games, 180 team-seasons) using the ratings each metric had before that season (HIB v1.1.0).

The past ratings come from each metric's current model rather than from what it published at the time, so a model may fit seasons it was built on. The 2026-27 tables do not have that problem.

Columns: game R² is the share of the variation in final game margins that the predicted margins explain; win % r is the correlation between team ratings and team winning percentage; net error is the average miss, in points per 100 possessions, between team ratings and opponent-adjusted team margins. Rank is the range of places across 2,000 resamples (the middle 90%). Italic rows are reference points and are not ranked.

Method, sources and every file: the README and provenance.

Established players

A player with fewer than 250 minutes the season before, including every rookie, is rated -2.0 for every metric.

rankmetricgame R² 90% rangewin % rnet error
1-2Pulse.171 .154-.187.8003.13
1-2LOKI †.170 .152-.186.8053.08
3-5OpenRAPM.162 .146-.178.7863.39
3-6xRAPM.161 .144-.177.7723.48
3-8LEBRON.159 .142-.175.7703.39
4-8EPM.157 .141-.174.7783.87
5-9DARKO.155 .138-.172.7673.36
5-9BPM (Basketball-Reference).154 .136-.170.7733.50
6-9ARC, 2-year †.152 .135-.169.7763.38
Same-season RAPM (ceiling).268 .251-.286.9491.68
Last season's RAPM, no prior.141 .123-.157.7293.53
Everyone 0 (floor).125 .109-.141.6784.65
Last season's team (floor).103 .087-.120.6294.19

Full forecast

Every player is rated at the metric's own value.

rankmetricgame R² 90% rangewin % rnet error
1LOKI †.196 .178-.213.8283.47
2-3EPM.178 .161-.194.8084.44
2-3Pulse.177 .159-.192.8073.09
3-5OpenRAPM.171 .154-.187.8013.40
4-5xRAPM.169 .152-.185.7823.47
6-8DARKO.159 .142-.175.7733.31
6-9ARC, 2-year †.156 .138-.172.7823.34
6-9BPM (Basketball-Reference).154 .138-.170.7683.59
6-9LEBRON.154 .137-.169.7663.38
Same-season RAPM (ceiling).288 .270-.305.9632.13
Last season's RAPM, no prior.133 .116-.149.7193.66
Last season's team (floor).092 .077-.108.6094.18
Everyone 0 (floor).000 .000-.000.0005.04

repository · live protocol · provenance · reproduce · maintained by LUMA Basketball Research († = LUMA's own) · code MIT, data CC BY 4.0