RAPM vs BPM: what each one actually measures
RAPM and BPM answer different questions: RAPM measures what actually happened on the floor while a player was on it, adjusted for teammates and opponents, and BPM estimates what his box score implies he was worth. Neither wins outright. RAPM needs possessions to settle; BPM inherits the box score's blind spots, especially on defense. The best modern metrics combine both.
| Our box-score prior, offense | r² 0.35 to 0.46How much of our own RAPM a box-score model can predict, leave-one-season-out |
|---|---|
| Our box-score prior, defense | r² 0.10 to 0.25Same test, defensive side. The gap is the whole argument |
| IPM held-out record | lowest error in 17 of 17 testsBeat pure RAPM, the box prior alone, and a league-average baseline |
| Lineup reconstruction accuracy | within half a secondReconstructed per-player minutes vs the official box score, every game |
| Coverage | 9 seasons, 2017-18 to 2025-26Both metrics published for every season |
The two questions
Start with the questions, not the formulas. Adjusted plus-minus asks an accounting question: over thousands of possessions, how did the scoreboard move when this player was on the floor, once you control for the other nine players out there? It never looks at his stat line. A player who never touches the ball can rate highly if his teams keep outscoring people when he plays.
Box Plus/Minus asks a prediction question: given this player's points, rebounds, assists, steals, blocks, turnovers, and shooting rates, plus his team's overall quality, what is a player like this usually worth per 100 possessions? It never looks at who he shared the floor with, or what the score did while he was on it.
Those are not competing answers to one question. They are two different instruments, and disagreement between them is information rather than an error. When BPM likes a player far more than RAPM does, the box score is flattering him relative to what the scoreboard saw. When RAPM likes him more, he is doing something the box score does not record.
How each one is built
RAPM is a regression over possessions. We reconstruct the exact five-man unit on the floor for every stint of every game from play-by-play plus box scores, because there is no public lineup feed for recent seasons. Every offensive possession becomes a row: the five offensive players get +1, the five defenders get -1, and the target is points per 100. Solving that with ridge regression is the 'regularized' part, which shrinks players with few possessions toward zero so a handful of possessions cannot invent a superstar. The coefficients split into offensive and defensive RAPM.
BPM is a set of fixed coefficients applied to a box-score line. Here is the part people miss: those coefficients were not chosen by intuition. Daniel Myers built BPM 2.0 by regressing box-score rates against a long, multi-season RAPM data set, and Basketball-Reference publishes the whole derivation. So BPM is not RAPM's rival so much as its cheap, stable approximation. It exists to give you a RAPM-like number for a player, or a season, where you do not have enough possessions to fit RAPM directly.
That reframes the comparison. Asking 'RAPM or BPM' is close to asking whether you want the measurement or the estimate of the measurement.
How each one fails
They break in opposite directions, which is exactly why using both is more informative than picking one.
- RAPM needs possessions. A single season is a small sample for a regression that has to solve for every player in the league at once, and the ridge penalty that keeps it stable also drags real signal toward zero for low-minute players. We say so plainly: single-season RAPM is noisy, and you should prefer the three-year pooled version or IPM when they disagree.
- RAPM struggles to separate players who are never apart. If two players share almost every possession, the model cannot tell which one earned the margin, and it will hedge between them.
- RAPM is descriptive, not causal. It tells you what the scoreboard did, not why. A player can post a strong number because of the role he was handed.
- BPM cannot see what the box score does not record. Rotations, screen quality, gravity, the pass that led to the pass, and most of the work of team defense are simply absent from the input.
- BPM's team-quality adjustment is coarse. It pushes players on good teams up and players on bad teams down, which is right on average and wrong on individuals.
- Our BPM specifically is computed on NBA.com data, so it tracks Basketball-Reference closely but will not match to the decimal, and we have no position labels in the feed.
Defense is where the gap is widest
This is not a hunch. We can quantify it from our own pipeline. We trained a statistical plus-minus model, a box-score regression in the same family as BPM, on our own nine seasons of RAPM, and scored it leave-one-season-out so the weights never see the season they are grading.
On offense it explains a real share of RAPM, r² between 0.35 and 0.46 depending on the season. On defense it explains r² between 0.10 and 0.25. Same model, same players, same seasons. The box score tells you a great deal more about offense than it does about defense.
That result is not ours alone, it is a well-known finding across public basketball analytics, but it is worth seeing measured on one consistent data set. The practical rule falls out of it: trust a box-score metric's offensive read a good deal more than its defensive one, and lean on plus-minus evidence when the question is about defense.
The modern answer: combine them
Most of the well-known public impact metrics of the last decade solve this the same way. Instead of shrinking a noisy player toward zero, shrink him toward what his box score predicts. Players with thousands of possessions can move far from that prediction; players with a handful stay anchored to it. You get RAPM's ability to see the invisible, with BPM's stability underneath it.
That is the family EPM (Taylor Snarr, Dunks & Threes) and LEBRON (BBall Index) belong to, and both are excellent work worth reading directly. DARKO (Kostya Medvedovsky) and the discontinued RAPTOR (FiveThirtyEight) are built differently, DARKO as a daily updating projection around a Kalman filter and RAPTOR as a blend of box-score and on/off components, and both are worth reading too. Our version is IPM, Informed Plus-Minus. It is the same RAPM ridge, re-fit so each player is shrunk toward a box-score prior instead of toward zero, and the prior is the SPM described above, calibrated against our own RAPM rather than borrowed from elsewhere.
In held-out testing across nine seasons, IPM had the lowest error in 17 of 17 splits: all 9 within-season tests and all 8 predict-the-next-season pairs. It beat pure RAPM, the box prior alone, and a league-average baseline every single time. We publish the honest caveat alongside it: single stints are so noisy that the error gaps are small, and the unbroken ordering is the signal, not the margin.
Which number should you read
For a quick, stable read on a player's offensive contribution, or for any season where possession-level data is thin, BPM does the job and is easy to reason about because you can see exactly which box-score line produced it.
For questions about defense, off-ball value, or 'is this team better with him out there', go to the plus-minus side. Use the three-year pooled RAPM rather than the single season when you can, and check the on/off and lineup views for context on who he actually played with.
For a single number that already reconciles the two, use IPM. And when the three disagree, that disagreement is the interesting finding, not a bug to resolve. The full technical record for all of them, including every validation table, is on our methodology page.
Keep reading
Every number on Closing 5 is computed from play-by-play we reconstruct ourselves. See the methodology.