Measuring what a player is worth
Three estimation steps stand between a possession of basketball and a dollar figure: isolating a player's effect on scoring margin, converting that margin into wins, and pricing a win against what teams actually pay. The first step yields the rating this site calls Marginal Plus Minus (mPM); the second turns it into Marginal WAR (mWAR). Each is estimated, none is assumed, and each is wrong in ways worth stating.
1. Impact: regularized adjusted plus-minus
The raw material is the stint — a stretch of play with one fixed set of ten players on the floor. Every substitution ends one stint and begins another. For stint s with point differential ys per 100 possessions, let xs be a vector with +1 for each home player, −1 for each away player, zero otherwise. The estimator is ridge regression:
weighting each stint by its possession count ps. The penalty is not a convenience. Teammates who always share the floor are collinear, and unpenalized least squares responds by handing one an enormous positive coefficient and his partner an offsetting negative one. Ridge shrinks toward zero, which is the right prior for a player about whom the data is nearly silent.
Multi-season pooling. One season is too few possessions for stable estimates, so each target season T pools stints from a window around it, weighting season t by δ|t−T| with δ = 0.7 over a four-season lookback. Recent basketball counts most; older basketball still counts.
The window has two forms, and the distinction matters more than it looks. A symmetric window (T−L … T+L) uses seasons after T and yields the best retrospective estimate of how good a player was — the right choice for a label. A backward window (T−L … T) uses only information available by T and is the only honest input to a forecast. Mixing them is how a model appears to predict the future while quietly reading it.
Standard errors by wild-cluster bootstrap. Residuals are resampled with sign flips, clustered on the game, 400 replications. This is load-bearing rather than decorative. The analytic ridge diagonal gets the sign of the problem wrong: it correlates about −0.3 with |θ̂|, implying that extreme estimates are the precise ones, and lets marginal players with few possessions post ratings above +20. The bootstrap correlates about +0.5, correctly flagging collinearity-unstable players as uncertain so that the next step can shrink them.
Empirical-Bayes shrinkage toward a box-score prior. A statistical plus-minus model is fit on per-100-possession box production, and each raw estimate is pulled toward its own prediction in proportion to its uncertainty:
where σ̂i is the bootstrap standard error and τ̂² the estimated between-player variance. A player with 200 minutes is mostly his box prior; a player with 3,000 minutes is mostly his own plus-minus. This is the step that separates the public metrics which retrodict well from plain RAPM, which does not. The shrunk estimate θ̃i is the rating reported everywhere else on the site as mPM.
Two priors, not one. "Box production" understates what the retrospective prior sees. The label prior is deliberately rich — current per-100 box production, plus the same quantities lagged one and two seasons, plus player tracking where it exists — because a label is allowed to use everything known about a season after the fact, and the richer prior fits materially better. The forecast mPM shrinks toward a deliberately lean prior: current box production only.
The asymmetry is the same discipline as the symmetric/backward window split above. It does carry one honest limitation worth stating: tracking data begins in 2013-14, so the label prior sees a different feature set before and after that season. Retrospective mPM is therefore not perfectly era-consistent at the margin. The forecast mPM, which is what the value board and the trade tool actually price, uses the lean prior throughout and is not affected.
The resulting panel is 13,991 player-seasons covering 2,391 players from 1996-97 to 2025-26.
2. Wins: a linear probability model
Impact is expressed in points per 100 possessions. Converting to wins is usually done with a rule of thumb; here it is estimated. For game g, construct the minutes-weighted mPM differential of the players who actually appeared:
1{home win}g = α + β·Xg + εg
Each of the five floor slots covers 2,880 seconds of a 48-minute game, so Xg is the expected home margin implied by who played. Estimated on 37,975 games:
The R² of 0.18 is not a weakness. A single NBA game is close to a coin flip; what is being estimated is the slope, and with 37,975 games it is pinned tightly — β̂ is roughly 102 standard errors from zero. Value accrues over a season, where the noise averages out.
A player logging sec seconds at an mPM of θ̃ therefore contributes
Replacement level is the freely available alternative, not zero. Setting it at −1.77 rather than 0 is why a strong season here reads near 20 rather than the 10 familiar from public win-value statistics. It is a different ruler, not a bigger number.
3. Price: a censored-regression market curve
The final step asks what a win costs. Observed salaries cannot answer directly, because they are censored on both sides: the collective bargaining agreement caps individual pay, so a fifteen-win superstar earns the maximum rather than his worth, and the minimum props up the bottom. Ordinary least squares on observed pay therefore underprices exactly the players the question is about — the naïve slope is 0.0151 cap share per win, against 0.0667 here.
Treat both bounds as censoring and estimate the latent curve by full-information maximum likelihood:
observed pcti = min{{ max{{ pct*i, mini }}, maxi }}
with pay measured as a share of that season's salary cap so seasons are comparable, and w the player's trailing two-season mean wins at signing. Fitting on new contracts only — first years of deals — matters: within-contract raises are mechanical escalators, while a new deal is the market actually clearing.
The curve is a composite, and the slope is the interesting part
That two-sided fit alone is not what ships, and the difference matters enough to state plainly. Capping individual pay does not merely truncate the top of the distribution; it removes the observations that would identify the slope at all. What a team is willing to pay for a win is unobserved precisely where wins are most valuable.
The shipped curve is built in three pieces:
- Intercept from the two-sided capped FIML above — the replacement floor, where the minimum-contract censoring is informative and the max is irrelevant.
- Slope and curvature from a separate FIML fit that uses the luxury tax as a revealed lower bound. A team over the tax line paying a player s is really spending s·(1 + τ) to employ him, where τ is its marginal tax rate. It would not do that unless it valued him at least that much, so each such signing right-censors the latent curve from below at the tax-inclusive figure rather than being read as a point. 912 of 2,542 contracts enter as right-censored bounds this way, and 828 of the sample's signings were made by a team over the line.
- Both reported as player-clustered bootstrap medians over 200 replications, so a handful of repeatedly-signed stars cannot set the slope on their own.
The identifying assumption is the ordinary one for a revealed-preference bound: a team that voluntarily pays the tax values the player at no less than the tax-inclusive cost. It does not require teams to be right about the player, only to be willing.
This is what produces the headline result. The cap-constrained rate — what teams actually pay, censoring and all — is 0.0228 of the cap per win. The free-market rate is 0.0667, a 2.92× premium. Every market value, every surplus figure and every trade verdict on this site is denominated at the free-market rate, and the section below on superstar value follows directly from it. A reader who rejects the tax-censoring argument should read all of those numbers as roughly 2.9 times too large.
Sample: 1999-2025, new deals, svc>=4.
Value in dollars is then max(â + b̂w + ĉw², 0) × cap(season), floored at zero
because a team cannot be paid to hold a roster spot. Negative surplus is perfectly
possible and is where the interesting players are.
The curvature term is not statistically significant, and the page should say so. Its 95% interval is [-0.00186, 0.00277], straddling zero, with P(ĉ > 0) ≈ 0.38. The point estimate is mildly concave: each additional win is priced a little below the one before, so at twenty wins the curve sits 14.4% of the cap below a straight line with the same slope. The term was introduced as a star premium, on two lines of outside evidence that still lean convex — roster-slot scarcity, and stars outperforming their total win contribution in the playoffs — but the fit itself no longer does — and a reader who prefers the linear curve is not arguing against the data.
Why the best players' value exceeds any contract
Put the three steps together and a result falls out that looks like an error and is not. On the open market a win costs 0.0667 of the cap, so a twenty-win season is worth about 120% of it, while no individual salary may exceed 35%. A superstar's estimated market value can therefore exceed his team's entire payroll ceiling. The curvature term does not produce this; the slope does.
This is the central economic fact about NBA labour, not an artifact: the collective bargaining agreement transfers enormous surplus from the very best players to the teams that employ them, and the transfer is largest precisely for the players who are best. The value board's headline column is a measurement of that transfer.
Which board is which
Two different things on this site are called a value board, and only one of them is retrospective.
- Players — the per-season boards, 1999-00–2025-26. These are retrospective: realized impact and realized playing time, asking what a season was worth after the fact.
- Value Board — the live board. This is a forecast: current players projected forward on the aging curve and priced against the market. Nothing in it is realized, and the paragraph below does not describe it.
What the retrospective boards are not
They are not a record of what the model would have said beforehand, and they are not evidence that anyone could have been identified early. A genuine forecast test requires refitting the aging curve, the price curve and the win calibration on data available at the time, on pain of the estimates quietly importing their own future.
And the most recent season is less retrospective than the rest. The label mPM pools stints over a symmetric window, T−4 … T+4. At the end of the panel there is no forward half to pool, so the newest season's "symmetric" window is silently one-sided — it is the backward window wearing the label estimator's name. Its playing time is fully realized; its mPM simply has less evidence behind it. Measured on players at 10+ minutes per game, the most recent season carries about 16% more standard error than an interior season and shrinks about 18% harder toward the box-score prior (0.47 against 0.40).
Read the newest season's mPM as provisional. They firm up as the seasons after them arrive and the window fills in on both sides — which also means a player's value for a given season can move slightly in later builds. That is the estimator working as designed, not a revision of history.
Limitations
- One price curve for two decades. The market curve and win calibration are single league-wide fits applied to every season, so only the cap level varies by year, not the shape of the wins–pay relationship. That is an assumption about market structure, and it is not tested here.
- Plus-minus cannot separate perfectly collinear teammates. Shrinkage manages the symptom; two players who never appear apart are not identified, and no regularization creates information that is absent.
- Salary data has holes. Coverage is near-complete in recent seasons and thinner in older ones, and surplus is reported as unknown rather than zero where a salary is missing. Unknown and unpaid are different facts.
- Value is not the same as contribution to winning a title. Wins are linear in this framework; championships are not.