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, 16:19 UTC

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.

? What this table shows

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.

rankmetricW-Lnet error 90% rangegame R²win % rlabel
1-9xPM George Berry, VORP.app58-3011.04 9.07-12.71.201.558archived
1-9LOKI † LUMA Basketball Research63-2511.06 9.23-12.61.170.546archived
1-8DARKO Kostya Medvedovsky60-2811.09 9.12-12.69.181.520backfill
1-9OpenRAPM Nathan Walker60-2811.14 9.14-12.83.149.537archived
1-9Pulse CourtSignal58-3011.18 9.35-12.71.151.544backfill
1-9xRAPM Jeremias Engelmann58-3011.22 9.34-12.80.149.551archived
2-9LEBRON BBall Index58-3011.22 9.31-12.80.134.539saved
1-10EPM Taylor Snarr, Dunks & Threes59-2911.26 9.48-12.72.156.553backfill
2-9EPM projection (Danny Harlan)61-2711.30 9.43-12.83.184.584archived
7-10BPM (Basketball-Reference) Daniel Myers / Basketball-Reference62-2611.71 9.97-13.21.152.594archived
Same-season RAPM (ceiling)10.69 8.81-12.29.361.690
Consensus of all metrics11.12 9.27-12.67.172.570
Last season's RAPM, no prior10.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

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, 16:19 UTC

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.

? What this table shows

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.

rankmetricW-Lnet error 90% rangegame R²win % rlabel
1-4Pulse CourtSignal5-18.57 6.84-10.04.379.468pulled
1-8ARC Live † LUMA Basketball Research5-18.80 6.77-10.44.423.562pulled
1-9LEBRON BBall Index4-29.03 7.02-10.91.198.410carried
2-7DARKO Kostya Medvedovsky5-19.04 6.81-10.94.318.390pulled
2-10LOKI † LUMA Basketball Research5-19.31 7.36-10.96.221.430pulled
3-10xPM George Berry, VORP.app3-39.44 7.58-11.04.151.342carried
1-10EPM Taylor Snarr, Dunks & Threes5-19.58 7.12-11.79.177.371pulled
5-10EPM projection (Danny Harlan)5-19.63 7.72-11.28.121.423carried
3-10BPM (Basketball-Reference) Daniel Myers / Basketball-Reference4-29.70 7.82-11.36.133.307carried
1-11OpenRAPM Nathan Walker4-29.98 7.32-12.29.000.070pulled
6-11xRAPM Jeremias Engelmann3-310.46 8.28-12.48.071.301carried
Same-season RAPM (ceiling)8.69 6.48-10.57.766.623
Consensus of all metrics9.10 7.19-10.78.228.416
Last season's RAPM, no prior9.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

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.

rankmetricnet error 90% rangegame R²win % r
1-3LOKI †3.08 2.82-3.34.170.805
1-2Pulse3.13 2.85-3.42.171.800
3-7DARKO3.36 3.06-3.65.155.767
3-7ARC, 2-year †3.38 3.11-3.65.152.776
3-8LEBRON3.39 3.08-3.68.159.770
3-7OpenRAPM3.39 3.08-3.69.162.786
4-8xRAPM3.48 3.18-3.78.161.772
3-8BPM (Basketball-Reference)3.50 3.13-3.85.154.773
9EPM3.87 3.52-4.21.157.778
Same-season RAPM (ceiling)1.68 1.52-1.82.268.949
Last season's RAPM, no prior3.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

Full forecast

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

rankmetricnet error 90% rangegame R²win % r
1Pulse3.09 2.81-3.38.177.807
2-6DARKO3.31 3.03-3.59.159.773
2-6ARC, 2-year †3.34 3.07-3.61.156.782
2-8LEBRON3.38 3.07-3.67.154.766
2-7OpenRAPM3.40 3.09-3.71.171.801
3-8xRAPM3.47 3.16-3.77.169.782
2-8LOKI †3.47 3.13-3.80.196.828
4-8BPM (Basketball-Reference)3.59 3.25-3.94.154.768
9EPM4.44 4.03-4.84.178.808
Same-season RAPM (ceiling)2.13 2.04-2.22.288.963
Last season's RAPM, no prior3.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