RAPM: Regularized Adjusted Plus-Minus, Explained

RAPM, or regularized adjusted plus-minus, estimates how many points per 100 possessions a player adds to his team after controlling for the other nine players on the floor. It starts from raw plus-minus, adjusts for teammates and opponents with a regression over every possession, then applies a ridge penalty that pulls thinly supported estimates toward zero so small samples cannot produce wild numbers.

UnitsPoints per 100 possessionsNet margin impact, split into offensive and defensive RAPM
CoverageNine seasons, 2017-18 to 2025-26Every stint of every game
Lineup reconstruction accuracyWithin half a secondReconstructed per-player minutes vs the official box score, every game
Versions publishedSingle-season and 3-yearThe 3-year fit is pooled with recency weighting

Plus-minus, and why the raw version misleads

Raw plus-minus counts a team's point differential while a player is on the floor. It is honest arithmetic and nearly useless on its own, because it measures the five-man unit rather than the player. A backup guard who only shares the court with starters looks excellent. A good player on a bad team looks terrible. The figure is dominated by who else was out there.

It also swings hard on small samples. A few minutes of opponent hot shooting can move a season number. So any metric built on plus-minus has to solve two problems at once: strip out context, and stop noise from being read as skill.

Adjusted plus-minus: one regression over every possession

Adjusted plus-minus (APM) treats the season as a single large regression. Every possession becomes a row. The five offensive players get +1, the five defenders get -1, and every other player gets 0. The outcome is the points scored on that possession, expressed as a per-100 rate. Solve for the coefficients and each player ends up with one number: his estimated effect on scoring margin per 100 possessions, holding the other nine players fixed.

That framing is what the word adjusted refers to. The model does not need to be told who is a starter or who plays for a contender. Facing tougher opponents or playing beside weaker teammates gets absorbed, because those players are variables in the same equation. Dan Rosenbaum introduced the public version in a 2004 article for 82games.com, building on the WINVAL work done for the Dallas Mavericks.

The reason plain APM falls apart: collinearity

Here is the failure that regularization exists to fix, and it is the part most explainers skip. A regression can only separate two variables if they sometimes move independently. NBA rotations make that close to impossible. A starting center and a starting point guard may share the overwhelming majority of their minutes. The model sees very few possessions where one is on the floor without the other, so it has very little evidence about which of them is responsible for what happened.

When predictors move together like that, the math does not fail loudly. It fails by admitting many different answers that fit the observed data about equally well. Give one teammate +8 and the other -2, or give them +3 and +3, and the fitted possessions look nearly the same. The regression picks one solution, and the choice gets driven by the handful of possessions where the pair happened to be separated, which is often garbage time or an injury week.

The symptom is familiar to anyone who has run one. Unregularized APM returns deep bench players at implausible extremes, with error bars wide enough to contain almost any conclusion. Those estimates are not so much wrong as unsupported. There was never enough independent variation in the lineup data to pin them down.

What the R in RAPM actually does

Regularization adds a penalty for the size of the coefficients. In ridge regression, the L2 form used for RAPM, the model is charged for the sum of the squared player ratings. It can still hand a player a large number, but only when the possessions insist on it. Where the evidence is thin, the cheaper solution is to leave him near zero, so that is the solution the model chooses.

The effect lands where it should. A player with tens of thousands of possessions barely moves, because the data overwhelms the penalty. A player with a few hundred possessions collapses toward the middle, because nothing pushes back. You accept a little bias in exchange for a large cut in variance, and the ratings generalize much better out of sample. Joe Sill's 2010 Sloan Sports Analytics Conference paper, which brought the technique to basketball, reported roughly doubling out-of-sample accuracy versus unregularized APM.

The penalty strength is usually settled by cross-validation rather than by taste: hold out possessions, sweep a range of penalties, keep the one that predicts the held-out scoring best.

How we compute RAPM here

Most pages that explain RAPM link out to someone else's ratings. We compute ours. The regression is the easy half. The hard half is knowing who was actually on the floor, because there is no public lineup feed for recent seasons. We reconstruct the exact five-man unit for every stint of every game from the NBA's play-by-play (playbyplayv3) together with box scores.

That reconstruction is checked rather than assumed: reconstructed per-player minutes match the official box score to within half a second for every game. Once the stints are right, the ridge is the textbook setup, +1 for the five on offense, -1 for the five on defense, target points per 100. Coefficients split into offensive RAPM and defensive RAPM, and total RAPM is the sum of the two. Coverage runs nine seasons, 2017-18 through 2025-26.

We publish both single-season RAPM and a three-year version pooled with recency weighting. The full technical record, including the validation tables, lives on our methodology page.

Reading a RAPM number without fooling yourself

RAPM is measured in points of net margin per 100 possessions, and because the ridge shrinks toward zero, zero sits near the league-average rotation player. A few habits keep the number honest.

  • Check the possessions first. A rating near zero can mean an average player, or a player the model has almost no evidence about. Those are very different findings.
  • Prefer the three-year version. Single-season RAPM is noisy, and we say so on the methodology page. When one season and three seasons disagree, trust the pooled fit.
  • Offense and defense are not equally legible. Defensive signal accumulates more slowly and is harder to attribute to one of five defenders.
  • Extremes are compressed on purpose. Regularization biases everyone toward the middle, so RAPM understates the very best and the very worst.
  • It is descriptive, not causal. RAPM reports what happened while a player was on the floor, adjusted for context. It does not explain why, so pair it with lineup, on/off, and play-type data.

What RAPM grew into, and what to read next

RAPM is a foundation rather than a finish line. Its remaining weakness is the shrinkage target. Pulling an unknown player toward zero asserts that he is league average, which is a strong claim when a better guess is already sitting in his box score.

Prior-informed models swap the zero target for a box-score prediction, so a thin-sample player is pulled toward what his production implies instead of toward the middle of the league. That is the shared idea behind Jeremias Engelmann's xRAPM, EPM by Taylor Snarr at Dunks and Threes, and LEBRON at BBall Index. Kostya Medvedovsky's DARKO gets somewhere similar by a different route, updating a box-score estimate daily with a Kalman filter and blending it with on/off, and FiveThirtyEight's retired RAPTOR blended a box and tracking rating with an on/off rating rather than using a prior. All of it is good work and worth reading directly.

Our entry in that family is IPM, informed plus-minus. It is the same ridge, refit so each player is shrunk toward a box-score prior trained on our own nine seasons of RAPM. If you want one number, use that one. RAPM is what it is built from, and what it should be checked against.

Every number on Closing 5 is computed from play-by-play we reconstruct ourselves. See the methodology.