From 2010‑11 on, player WAR includes a play‑by‑play add‑on: same‑season luck‑adjusted box‑prior RAPM (offense and defense, shrunk toward the player’s BPM), counting only what it says beyond his box‑score WAR. It is zero‑sum within each team, so team totals still match the box build; it moves credit between teammates. Earlier seasons are box‑score only.
From 2010‑11 on, season WAR includes a play‑by‑play add‑on: same‑season luck‑adjusted box‑prior RAPM (offense and defense, shrunk toward the player’s BPM), counting only what it says beyond his box‑score WAR. It is zero‑sum within each team, so team totals still match the box build; it moves credit between teammates. Earlier seasons are box‑score only.
Team Totals
Proj W = Team WAR + replacement wins (10 per 82 games) · Δ = Proj − Actual (green ≤ 3, red ≥ 8). Actual records loaded for full‑82 seasons, 1978–2026. Since 2010‑11 player WAR includes a zero‑sum‑within‑team play‑by‑play RAPM add‑on, so these team totals are unchanged by it.
First-round rookies are included using model projections; those without contract data appear here but are omitted from the Surplus tab. Projected WAR includes a play‑by‑play add‑on: luck‑adjusted, box‑prior RAPM (offense and defense, ridge‑shrunk toward each player’s BPM; free‑throw luck removed, and for defense opponents’ 3‑point luck too) from every possession of the last three seasons, counting only what it says beyond the box‑score projection, calibrated on 2014–26 team margins (it cut out‑of‑sample team MOV error 8.5%). After 2026‑27 the offensive part fades 80% a year and the defensive part 25%.
Season Sim
Eastern Conference
Western Conference
Most likely bracket
Draft lottery
Lineup Lab
Pick a 2026‑27 team and its five, choose who sits, and drop in any player in the league. Each factor is projected from the five players’ individual stats plus how their archetypes play together, fit on 11,400 real lineups from 2008–2026. Values are lineup differentials (team minus opponent).
Base lineup
Incoming player
Best replacements
Why it changes
Lineups side by side
Methodology
How NBA WAR is built, what it is tested against, and where it is weakest.
Overview
WAR (wins above replacement) estimates how many wins a player added beyond what a freely available replacement player would have produced in the same minutes. Each player gets an offensive and a defensive half, built in four steps:
- Turn each player’s individual offensive and defensive ratings (points produced and allowed per 100 possessions) into a win rate with a Pythagorean formula.
- Weight that win rate by the share of his team’s possessions he is responsible for, and by his share of the team’s games and minutes.
- Subtract what a replacement player would produce in the same playing time.
- Scale the season so league WAR plus replacement wins equals the actual number of wins.
From 2010‑11 on, a play-by-play adjustment (RAPM) moves credit between teammates. It never changes a team’s total.
Data
- Player seasons, 1977‑78 to 2025‑26: Basketball-Reference advanced stats (games, minutes, ORtg, DRtg, USG%, AST% and the style rates used for archetypes). Traded players appear only as a combined line (2TM/3TM).
- Play-by-play, 2010‑11 to 2025‑26: stats.nba.com event data (via the shufinskiy/nba_data archive), parsed into five-man stints. It covers 99.9%+ of game minutes; player minutes match Basketball-Reference to a median 0.3 min.
- Defensive tracking, 2025‑26: NBA.com nearest-defender data (shots contested; FG% allowed vs expected), used for defensive usage in the projections.
- Lineups, 2008–2026: Basketball-Reference team lineup pages, for the Lineup Lab.
- Forward-looking: salaries by season for the Surplus and Trade tabs; the 2026‑27 schedule for the Season Sim; published scouting comps for 2026 first-round picks.
Box-score WAR
The ratings are Dean Oliver’s individual offensive and defensive ratings from Basketball-Reference. Each half becomes a win rate against the league-average rating L, using the standard NBA Pythagorean exponent of 13.91:
- Credit usage = shot usage (USG%) + assist usage (0.517 + 0.478 × AST%), rescaled so each team’s minutes-weighted average is 20% (five players on the floor = 100%). Creating shots for teammates earns offensive credit, not just taking them.
- Defensive usage is 20% for everyone in historical seasons. In the projections it uses 2025‑26 contest quality (1 + (expected FG% − allowed FG%) / expected FG%), shrunk halfway toward 20%.
- There is no positional adjustment: the usage adjustment does that job, and position averages mostly reflect usage.
Play-by-play RAPM add-on (2010‑11 on)
Box ratings miss things that only show up in the scoreboard: spacing, screening, help defense. RAPM (regularized adjusted plus-minus) estimates each player’s offensive and defensive effect from every possession, controlling for the other nine players on the floor.
- Model: points per 100 possessions for each stint and side regressed on the five offensive and five defensive players, with season intercepts and home court, weighted by possessions.
- Box prior: instead of shrinking toward zero, ratings are shrunk toward each player’s OBPM / DBPM (ridge λ = 3,000). That way a thin sample defaults to what the box score says.
- Luck adjustment: offense uses points with free-throw luck removed. Defense also removes opponents’ 3-point luck, because defenders have little control over whether open threes go in. Shooter talent comes from 3P% and FT% pooled over three seasons and shrunk toward the league rate (400 / 150 attempts).
- Only the residual counts: RAPM is regressed on box WAR per minute, and only what it says beyond the box score is added. Weights come from team-margin backtests: 0.318 / 0.817 per point of offensive RAPM and 0.627 / 0.817 per point of defensive RAPM, times the player’s minutes share.
- Zero-sum within each team-season in the historical tables, so team totals still match actual wins. In the projections it uses the three prior seasons (weights 1 / .6 / .35); after 2026‑27 the offensive part fades 80% a year and the defensive part 25% a year, matching how lagged RAPM held up.
Tested and not adopted: luck-adjusting the offense’s own threes, 2-point shot-quality expected points, NBA.com matchup defense, and team on/off (it adds nothing once RAPM is in).
Replacement level
A team of replacement players wins 10 games per 82 (12.2%): roughly the floor of real NBA rosters assembled from minimum contracts and two-way players. Each player’s replacement baseline is 12.2% of the wins attached to his minutes. Team WAR + 10 wins per 82 games is the team’s implied record, which is how the Team Totals tab compares projected and actual wins.
Projections
Each player’s next-season ratings (ORtg, DRtg, USG%, AST% and the style rates) are projected with three engines, then blended with weights fit out of sample:
- Marcel-style: the last three seasons weighted by minutes and recency, regressed toward the player’s archetype mean, plus an archetype-specific aging curve.
- Gradient boosting: a model on multi-year features (role, age, archetype, minutes) predicting what the Marcel engine misses.
- Comps: nearest historical players at the same age; their actual next-season changes give a player-specific projection and the P10/P90 range.
Archetypes are K-means clusters on ten season-standardised style stats (3PAr, FTr, ORB%, DRB%, AST%, STL%, BLK%, TOV%, USG%, TS%). Games come from a separate model of the share of the schedule played, then minutes are reconciled so each team fills its court time. Years 2–5 also carry the chance a player has left the league. First-round rookies blend their scouting comps (60%) with the career paths of players drafted near the same pick in 2005–2025 (40%).
One-year-ahead backtest (1,490 player-seasons; RMSE, lower is better; ‘repeat’ = carry last season forward):
| Stat | Model RMSE | Repeat RMSE | Model r | 80% interval coverage |
|---|---|---|---|---|
| ORtg | 6.23 | 7.82 | 0.62 | 80% |
| DRtg | 2.82 | 3.34 | 0.66 | 77% |
| USG% | 2.70 | 3.02 | 0.87 | 79% |
| OBPM | 1.38 | 1.70 | 0.79 | 82% |
| DBPM | 0.78 | 1.02 | 0.73 | 77% |
Games played, 1 to 5 years ahead (RMSE in games):
| Years ahead | Model | Repeat last season | Player-seasons |
|---|---|---|---|
| 1 | 19.3 | 22.8 | 3,314 |
| 2 | 20.7 | 25.5 | 2,793 |
| 3 | 21.5 | 27.1 | 2,367 |
| 4 | 21.8 | 28.1 | 1,993 |
| 5 | 21.3 | 28.4 | 1,669 |
Surplus value and trades
Surplus = projected WAR × $/WAR − salary, for contract seasons only (“FA” after a deal ends). $/WAR is $9.6M in 2026‑27 (the market rate per WAR, rescaled when replacement level moved to 10 wins so total dollars paid for WAR stayed the same) and grows 6.5% a year with the cap.
The Trade Machine grades each side on year-1 WAR, WAR over the remaining contract, and surplus. Draft picks are valued in four-year WAR by the team’s trajectory: Contender 5.0, Mid-Tier 9.8, Rebuilding 12.8. These come from 2005–22 first-round picks, rescaled for the 10-win replacement level. Picks three or more years out are pulled halfway toward the 9.4 league average. Salary matching isn’t checked.
Season Sim
Each simulated season redraws every player’s 2026‑27 ratings from his projection range (with the observed correlations between ORtg, DRtg and usage) and his games played from the actual spread of games around projections in backtests. Missed minutes go to bench players first, at their own per-minute value.
- Team strength = 0.813 points of margin per WAR, scaled 0.92× around the league mean, plus a small team-level shock.
- Games are played on the real 2026‑27 schedule: home court +1.8 points, game-to-game SD 13.8 points (from 2023‑24 to 2025‑26 results).
- Standings use head-to-head and conference-record tiebreakers. Then come the play-in, best-of-seven series (home court +2.5) and the draft lottery with the current odds.
Lineup Lab
Lineup models are fit on 11,400 Basketball-Reference lineups from 2008–2026, one each for the four factors (eFG%, turnovers, offensive rebounding, free throws) and net rating. Each lineup’s differential is modeled as:
Validation
Team WAR (historical, actual stats) tracks team quality closely: correlation 0.91 with point margin and 0.89 with win% across 540 team-seasons, 2008‑09 to 2025‑26. For teams without mid-season trades, whose rosters are fully covered, the margin correlation is 0.99. The spread is narrower than real records, though: each WAR above the league average goes with about 1.5–1.8 actual wins. League totals match by construction, so this is a scale issue at the extremes, and the Season Sim converts WAR to margin with a fitted slope instead of one-for-one.
Projected team margin, leave-one-season-out, 390 team-seasons (2014–26):
| Projection | Team MOV RMSE | vs box only |
|---|---|---|
| Box-score projection only | 3.14 | — |
| + team on/off | 3.06 | −2.7% |
| + box-prior RAPM | 2.89 | −8.0% |
| + luck-adjusted RAPM (current) | 2.875 | −8.5% |
The final version is better than box-only in 12 of 13 seasons (Diebold-Mariano t = 4.8).
Limitations
- ORtg and DRtg are box-score estimates. DRtg in particular is mostly the team’s defense split by minutes, stops and rebounds, so individual defense before 2010‑11 (no play-by-play) is weakly identified.
- Defensive usage is a flat 20% in history; contest-quality data exists only for 2025‑26.
- The usage–efficiency trade-off is a single league-wide slope (0.32 ORtg per USG point).
- Traded players have only combined lines, so their team split is by minutes and they sit in ‘Multiple teams’ in team totals.
- Team WAR spread is narrower than actual records (see Validation).
- Projections assume current rosters and contracts. Rookies lean on published comps; team options and incentives aren’t modeled.
WAR Trade Machine
Assemble a multi‑team trade — each side is graded on year‑1 WAR, WAR over each player’s remaining contract, and surplus value. Add draft picks and swaps too: choose a trajectory tier (Contender 5.0 · Mid‑Tier 9.8 · Rebuilding 12.8 four‑year WAR) and picks 3+ years out mean‑revert 50/50 toward the 9.4 league average. Pick value flows into the Contract‑WAR column; salary‑matching (CBA legality) still needs contract salaries, which aren’t in this dataset yet.