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).
Early: 4-7 games per team. A few games decide each team's margin, so the ranges overlap and the floor rows score about the same as the metrics until every team has played 20.
After 88 games, xPM leads on team net error at 11.04 points per 100, ahead of LOKI at 11.06. Early: 4-7 games per team. A few games decide each team's margin, so the ranges overlap and the floor rows score about the same as the metrics until every team has played 20.
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 | net error 90% range | game R² | win % r | label |
|---|---|---|---|---|---|---|
| 1-9 | xPM George Berry, VORP.app | 58-30 | 11.04 9.07-12.71 | .201 | .558 | archived |
| 1-9 | LOKI † LUMA Basketball Research | 63-25 | 11.06 9.23-12.61 | .170 | .546 | archived |
| 1-8 | DARKO Kostya Medvedovsky | 60-28 | 11.09 9.12-12.69 | .181 | .520 | backfill |
| 1-9 | OpenRAPM Nathan Walker | 60-28 | 11.14 9.14-12.83 | .149 | .537 | archived |
| 1-9 | Pulse CourtSignal | 58-30 | 11.18 9.35-12.71 | .151 | .544 | backfill |
| 1-9 | xRAPM Jeremias Engelmann | 58-30 | 11.22 9.34-12.80 | .149 | .551 | archived |
| 2-9 | LEBRON BBall Index | 58-30 | 11.22 9.31-12.80 | .134 | .539 | saved |
| 1-10 | EPM Taylor Snarr, Dunks & Threes | 59-29 | 11.26 9.48-12.72 | .156 | .553 | backfill |
| 2-9 | EPM projection (Danny Harlan) | 61-27 | 11.30 9.43-12.83 | .184 | .584 | archived |
| 7-10 | BPM (Basketball-Reference) Daniel Myers / Basketball-Reference | 62-26 | 11.71 9.97-13.21 | .152 | .594 | archived |
| Same-season RAPM (ceiling) | 10.69 8.81-12.29 | .361 | .690 | |||
| Consensus of all metrics | 11.12 9.27-12.67 | .172 | .570 | |||
| Last season's RAPM, no prior | 10.92 8.94-12.57 | .144 | .463 | |||
| Last season's team (floor) | 11.06 8.95-12.85 | .128 | .469 | |||
| Everyone 0 (floor) | 11.39 9.38-13.09 | .069 | .117 |
Each 2026-27 game day, computed using each metric's ratings as published that morning.
Early: 1-1 games per team. A few games decide each team's margin, so the ranges overlap and the floor rows score about the same as the metrics until every team has played 20.
After 6 games, Pulse leads on team net error at 8.57 points per 100, ahead of ARC Live at 8.80. Early: 1-1 games per team. A few games decide each team's margin, so the ranges overlap and the floor rows score about the same as the metrics until every team has played 20.
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 | net error 90% range | game R² | win % r | label |
|---|---|---|---|---|---|---|
| 1-4 | Pulse CourtSignal | 5-1 | 8.57 6.84-10.04 | .379 | .468 | pulled |
| 1-8 | ARC Live † LUMA Basketball Research | 5-1 | 8.80 6.77-10.44 | .423 | .562 | pulled |
| 1-9 | LEBRON BBall Index | 4-2 | 9.03 7.02-10.91 | .198 | .410 | carried |
| 2-7 | DARKO Kostya Medvedovsky | 5-1 | 9.04 6.81-10.94 | .318 | .390 | pulled |
| 2-10 | LOKI † LUMA Basketball Research | 5-1 | 9.31 7.36-10.96 | .221 | .430 | pulled |
| 3-10 | xPM George Berry, VORP.app | 3-3 | 9.44 7.58-11.04 | .151 | .342 | carried |
| 1-10 | EPM Taylor Snarr, Dunks & Threes | 5-1 | 9.58 7.12-11.79 | .177 | .371 | pulled |
| 5-10 | EPM projection (Danny Harlan) | 5-1 | 9.63 7.72-11.28 | .121 | .423 | carried |
| 3-10 | BPM (Basketball-Reference) Daniel Myers / Basketball-Reference | 4-2 | 9.70 7.82-11.36 | .133 | .307 | carried |
| 1-11 | OpenRAPM Nathan Walker | 4-2 | 9.98 7.32-12.29 | .000 | .070 | pulled |
| 6-11 | xRAPM Jeremias Engelmann | 3-3 | 10.46 8.28-12.48 | .071 | .301 | carried |
| Same-season RAPM (ceiling) | 8.69 6.48-10.57 | .766 | .623 | |||
| Consensus of all metrics | 9.10 7.19-10.78 | .228 | .416 | |||
| Last season's RAPM, no prior | 9.28 7.37-10.93 | .173 | .301 | |||
| Last season's team (floor) | 9.85 7.71-11.78 | .053 | .165 | |||
| Everyone 0 (floor) | 9.53 7.17-11.54 | .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 | net error 90% range | game R² | win % r |
|---|---|---|---|---|
| 1-3 | LOKI † | 3.08 2.82-3.34 | .170 | .805 |
| 1-2 | Pulse | 3.13 2.85-3.42 | .171 | .800 |
| 3-7 | DARKO | 3.36 3.06-3.65 | .155 | .767 |
| 3-7 | ARC, 2-year † | 3.38 3.11-3.65 | .152 | .776 |
| 3-8 | LEBRON | 3.39 3.08-3.68 | .159 | .770 |
| 3-7 | OpenRAPM | 3.39 3.08-3.69 | .162 | .786 |
| 4-8 | xRAPM | 3.48 3.18-3.78 | .161 | .772 |
| 3-8 | BPM (Basketball-Reference) | 3.50 3.13-3.85 | .154 | .773 |
| 9 | EPM | 3.87 3.52-4.21 | .157 | .778 |
| Same-season RAPM (ceiling) | 1.68 1.52-1.82 | .268 | .949 | |
| Last season's RAPM, no prior | 3.53 3.25-3.82 | .141 | .729 | |
| Last season's team (floor) | 4.19 3.81-4.58 | .103 | .629 | |
| Everyone 0 (floor) | 4.65 4.30-5.01 | .125 | .678 |
| rank | metric | net error 90% range | game R² | win % r |
|---|---|---|---|---|
| 1 | Pulse | 3.09 2.81-3.38 | .177 | .807 |
| 2-6 | DARKO | 3.31 3.03-3.59 | .159 | .773 |
| 2-6 | ARC, 2-year † | 3.34 3.07-3.61 | .156 | .782 |
| 2-8 | LEBRON | 3.38 3.07-3.67 | .154 | .766 |
| 2-7 | OpenRAPM | 3.40 3.09-3.71 | .171 | .801 |
| 3-8 | xRAPM | 3.47 3.16-3.77 | .169 | .782 |
| 2-8 | LOKI † | 3.47 3.13-3.80 | .196 | .828 |
| 4-8 | BPM (Basketball-Reference) | 3.59 3.25-3.94 | .154 | .768 |
| 9 | EPM | 4.44 4.03-4.84 | .178 | .808 |
| Same-season RAPM (ceiling) | 2.13 2.04-2.22 | .288 | .963 | |
| Last season's RAPM, no prior | 3.66 3.37-3.95 | .133 | .719 | |
| Last season's team (floor) | 4.18 3.82-4.55 | .092 | .609 | |
| Everyone 0 (floor) | 5.04 4.63-5.41 | .000 | .000 |
repository · live protocol · provenance · reproduce · maintained by LUMA Basketball Research († = LUMA's own) · code MIT, data CC BY 4.0