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
Every 2026-27 game, computed using each metric's ratings from before opening night (October 20, 2026).
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.
| rank | metric | W-L | game R² 90% range | win % r | net error after 20 games | label |
|---|---|---|---|---|---|---|
| 1-5 | xPM George Berry, VORP.app | 58-30 | .201 .122-.292 | .558 | - | archived |
| 1-5 | EPM projection (Danny Harlan) | 61-27 | .184 .107-.277 | .584 | - | archived |
| 1-8 | DARKO Kostya Medvedovsky | 60-28 | .181 .093-.288 | .520 | - | backfill |
| 1-9 | LOKI † LUMA Basketball Research | 63-25 | .170 .085-.280 | .546 | - | archived |
| 2-10 | EPM Taylor Snarr, Dunks & Threes | 59-29 | .156 .080-.254 | .553 | - | backfill |
| 3-10 | BPM (Basketball-Reference) Daniel Myers / Basketball-Reference | 62-26 | .152 .080-.239 | .594 | - | archived |
| 3-10 | Pulse CourtSignal | 58-30 | .151 .075-.244 | .544 | - | backfill |
| 3-10 | xRAPM Jeremias Engelmann | 58-30 | .149 .075-.243 | .551 | - | archived |
| 3-10 | OpenRAPM Nathan Walker | 60-28 | .149 .080-.232 | .537 | - | archived |
| 6-10 | LEBRON BBall Index | 58-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 | - |
Each 2026-27 game day, computed using each metric's ratings as published that morning.
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.
| rank | metric | W-L | game R² 90% range | win % r | net error after 20 games | label |
|---|---|---|---|---|---|---|
| 1-9 | ARC Live † LUMA Basketball Research | 5-1 | .423 .032-1.000 | .562 | - | pulled |
| 1-11 | Pulse CourtSignal | 5-1 | .379 .009-1.000 | .468 | - | pulled |
| 1-10 | DARKO Kostya Medvedovsky | 5-1 | .318 .011-1.000 | .390 | - | pulled |
| 2-9 | LOKI † LUMA Basketball Research | 5-1 | .221 .011-1.000 | .430 | - | pulled |
| 1-10 | LEBRON BBall Index | 4-2 | .198 .006-1.000 | .410 | - | carried |
| 2-11 | EPM Taylor Snarr, Dunks & Threes | 5-1 | .177 .005-1.000 | .371 | - | pulled |
| 2-10 | xPM George Berry, VORP.app | 3-3 | .151 .004-1.000 | .342 | - | carried |
| 2-11 | BPM (Basketball-Reference) Daniel Myers / Basketball-Reference | 4-2 | .133 .004-1.000 | .307 | - | carried |
| 2-10 | EPM projection (Danny Harlan) | 5-1 | .121 .004-1.000 | .423 | - | carried |
| 2-11 | xRAPM Jeremias Engelmann | 3-3 | .071 .001-1.000 | .301 | - | carried |
| 2-11 | OpenRAPM Nathan Walker | 4-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 | - |
2020-21 to 2025-26, computed using the ratings each metric had before each season.
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.
| rank | metric | game R² 90% range | win % r | net error |
|---|---|---|---|---|
| 1-2 | Pulse | .171 .154-.187 | .800 | 3.13 |
| 1-2 | LOKI † | .170 .152-.186 | .805 | 3.08 |
| 3-5 | OpenRAPM | .162 .146-.178 | .786 | 3.39 |
| 3-6 | xRAPM | .161 .144-.177 | .772 | 3.48 |
| 3-8 | LEBRON | .159 .142-.175 | .770 | 3.39 |
| 4-8 | EPM | .157 .141-.174 | .778 | 3.87 |
| 5-9 | DARKO | .155 .138-.172 | .767 | 3.36 |
| 5-9 | BPM (Basketball-Reference) | .154 .136-.170 | .773 | 3.50 |
| 6-9 | ARC, 2-year † | .152 .135-.169 | .776 | 3.38 |
| Same-season RAPM (ceiling) | .268 .251-.286 | .949 | 1.68 | |
| Last season's RAPM, no prior | .141 .123-.157 | .729 | 3.53 | |
| Everyone 0 (floor) | .125 .109-.141 | .678 | 4.65 | |
| Last season's team (floor) | .103 .087-.120 | .629 | 4.19 |
| rank | metric | game R² 90% range | win % r | net error |
|---|---|---|---|---|
| 1 | LOKI † | .196 .178-.213 | .828 | 3.47 |
| 2-3 | EPM | .178 .161-.194 | .808 | 4.44 |
| 2-3 | Pulse | .177 .159-.192 | .807 | 3.09 |
| 3-5 | OpenRAPM | .171 .154-.187 | .801 | 3.40 |
| 4-5 | xRAPM | .169 .152-.185 | .782 | 3.47 |
| 6-8 | DARKO | .159 .142-.175 | .773 | 3.31 |
| 6-9 | ARC, 2-year † | .156 .138-.172 | .782 | 3.34 |
| 6-9 | BPM (Basketball-Reference) | .154 .138-.170 | .768 | 3.59 |
| 6-9 | LEBRON | .154 .137-.169 | .766 | 3.38 |
| Same-season RAPM (ceiling) | .288 .270-.305 | .963 | 2.13 | |
| Last season's RAPM, no prior | .133 .116-.149 | .719 | 3.66 | |
| Last season's team (floor) | .092 .077-.108 | .609 | 4.18 | |
| Everyone 0 (floor) | .000 .000-.000 | .000 | 5.04 |
repository · live protocol · provenance · reproduce · maintained by LUMA Basketball Research († = LUMA's own) · code MIT, data CC BY 4.0