IPM: Informed Plus-Minus, explained

IPM (Informed Plus-Minus) is Closing 5's flagship player impact metric: a RAPM ridge regression in which each player is shrunk toward a box-score prior instead of toward zero. It reads in points per 100 possessions, covers nine seasons from 2017-18 to 2025-26, and had the lowest error of any model we tested in 17 of 17 held-out tests.

Held-out stint RMSE, within season58.48IPM. SPM prior 58.55, pure RAPM 58.56, league-average baseline 58.70. Lower is better.
Held-out stint RMSE, next season61.24IPM. SPM prior 61.28, pure RAPM 61.28, league-average baseline 61.37.
Held-out tests won17 of 179 within-season splits and 8 next-season pairs.
Box prior accuracy, offenser² 0.35 to 0.46Leave-one-season-out against our own RAPM.
Box prior accuracy, defenser² 0.10 to 0.25Defense is much harder to predict from a box score, a well-known public result.
Coverage2017-18 to 2025-26Nine seasons of reconstructed lineups.
Lineup reconstruction errorUnder half a secondReconstructed per-player minutes vs the official box score, every game.

Every plus-minus model has to guess

RAPM starts with one row per possession. The five offensive players get a +1, the five defenders get a -1, and the target is points scored per 100 possessions. A ridge regression solves the whole system at once, which is why it beats raw plus-minus: the fit already accounts for the nine other players on the floor.

Ridge regression needs a penalty term to stay stable, and the standard penalty pulls every coefficient toward zero. For a player with thousands of possessions that barely bites. For a rookie with two hundred, it means the model returns something close to zero whatever he did, because zero is the only guess available. Shrinking toward zero amounts to saying you know nothing about a player until his on/off data speaks.

But you do know something, because he has a box score. IPM swaps the zero for a per-player estimate built from that box score and leaves the rest of the fit alone. That single change is most of what makes the brand-name impact metrics stable.

The prior is our own SPM, trained on our own RAPM

A prior only helps if it predicts the right quantity. Ours is a statistical plus-minus, or SPM: per-100 box-score rates regressed onto nine seasons of our own RAPM. The weights are fit against the number they stand in for, rather than against wins or against a published metric from somewhere else.

We score the prior leave-one-season-out, so the coefficients that grade a season never saw that season in training. Offense comes in between r-squared 0.35 and 0.46 across the nine seasons. Defense comes in between 0.10 and 0.25. That gap is not a flaw in our fit. Predicting defense from a box score is hard for everyone, and public basketball analytics has reported the same ceiling for years.

Players with thin samples get regressed toward a below-average floor before the ridge runs at all. A call-up with fifty possessions and All-Star per-100 rates does not get an All-Star prior.

What the ridge does with the prior

Shrinking a player toward his prior instead of toward zero is the same as doing three things.

The effect is a sliding scale. A starter with a full season of minutes has enough on/off evidence to move a long way from his box profile, up or down. A deep bench player stays anchored near his prior, which is a better answer than zero. IPM is published as a total plus an offensive and defensive component, the same split RAPM carries, and it reads in points per 100 possessions.

  • Subtract the prior-implied margin from every stint, so the model is fitting what the box score failed to explain.
  • Run the ridge on those residuals.
  • Add the prior back to get each player's IPM.

The validation: lowest error in 17 of 17

We hold out stints and ask each model to predict them. There are two kinds of test: within-season, where the model fits on part of a season and predicts the rest, and next-season, where it fits on one season and predicts the following one. Nine seasons gives 9 within-season splits and 8 season pairs.

IPM posted the lowest error in all 17, ahead of pure RAPM, the SPM prior on its own, and a league-average baseline. The full table of numbers sits on the methodology page.

The honest half of that result: the gaps are small. A single stint is a handful of possessions, so most of the variance in the target is noise no model can reach. Read the ordering rather than the margin. IPM did not lose a single one of seventeen tests to three alternatives that each have a plausible case for winning some of them.

What IPM cannot tell you

Four limits worth carrying with the number, and one habit.

  • Defense stays the weak end. With a defensive prior explaining a fraction of what the offensive one does, defensive IPM leans harder on on/off evidence, which is the noisier ingredient.
  • It is a season-level estimate. IPM does not decay within a season, so it will not track a midseason leap or slump the way a daily-updating metric does.
  • It uses box score and play-by-play only. No tracking data, so screening, gravity, and off-ball defense show up only to the extent the on/off residual catches them.
  • It inherits the box score's blind spots through the prior, particularly for role players whose value never lands in a counting stat.
  • Read it next to the three-year pooled RAPM and the WOWY page. When two of the three disagree, the disagreement is usually the interesting part.

The family IPM belongs to

IPM is not a new idea. It is our build of an idea that Taylor Snarr's EPM at Dunks and Threes, BBall-Index's LEBRON, and Kostya Medvedovsky's DARKO all use in their own ways, and that FiveThirtyEight's RAPTOR approached from a different direction before it was discontinued. EPM and LEBRON both hand a plus-minus model a smarter starting point than zero, DARKO reaches a similar place by updating a box-score estimate daily with a Kalman filter and blending it with on/off, and RAPTOR combined a box and tracking rating with an on/off rating rather than using a prior at all, and several of those projects document the family history better than we could.

We built our own because we wanted every input under our control, and because a number we compute ourselves is one we can validate and publish in full. The trade is real. EPM and DARKO carry tracking data and update within the season; LEBRON's published description adds a luck adjustment and a role-aware prior. IPM has none of those. What IPM has is nine seasons of lineup data we reconstructed and validated ourselves, a prior calibrated to that exact data, and every validation number printed on the methodology page.

Where to see it

IPM sits on the leaderboards, on every player page, and in head-to-head comparisons. Team IPM aggregates it to the roster level by weighting each player's IPM by minutes played, then multiplying by the five on the court, which is the Dunks and Threes Team-EPM recipe applied to our numbers. In held-out tests, that roster view predicted future game margins better than a rating built from results.

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