Each rating is a player's net impact in points per 100 possessions compared with a league-average player that season, after accounting for teammates and opponents. It covers the BAA, NBA and ABA from 1946-47 to 2025-26.
Add up to five players. Zero is a league-average player that season; replacement level is around −2. Seasons under the minutes threshold are left out, which breaks the line.
Rating is net points per 100 possessions above league average, from every game he played that season (regular season, play-in and playoffs). Minutes are regular-season minutes. Box prior is what the player's box score alone predicts. The rating moves away from it when game results disagree. Minutes estimated is the share of his game minutes the model had to estimate because old box scores didn't record them.
| id |
|---|
Rating is from every game that season, playoffs included. Wins added counts the regular season and playoffs. Choose All time to rank every season in history. Click a player to add him to the career chart.
| id | season | league |
|---|
Wins above a replacement-level player: rating above replacement times possessions played, converted to wins at that season's rate. Click a player in the table below to show him here.
Regular season and playoffs. Replacement level is the typical rating of players outside each team's top nine by minutes, about −1.8 in every era.
| id |
|---|
How much a player raises title odds. Each season hands out 5 championships (five players win each title), scaled by how hard that season's title was to win (the strength a team needed for even title odds, compared with the average season in history), and split between the regular season and the playoffs by how much of that season's title each one decides (about half).
Regular season: put him on a league-average team in place of a replacement-level player and measure the rise in its title odds. An average team only contends with a star, so peak seasons count far more than good ones.
Playoffs: every playoff series a team wins raises its title odds (calculated exactly before and after each round). That gain is shared among its players by their playoff minutes times rating above replacement. Deep runs and upsets count most; losing a series costs nothing.
ABA: titles count 74% (95% in 1975-76), from the measured gap between the leagues in players who switched.
| id |
|---|
Calculated exactly from that season's actual bracket and each team's playoff roster strength: each game's win chance from the strength gap and home court, each series from best-of-N odds, and each round summed over every possible opponent.
Each line shows how a team's title odds would change if it were stronger or weaker, with the other teams unchanged. The dot is where it actually stood. Hover a line to pick out a team.
| Player | Team | Rating | Championships added | id | season | league |
|---|
Each dot is a team. The prediction uses only ratings from seasons before it, times each player's actual minutes that season. Dots on the diagonal were predicted exactly.
R² for predicting each team's net rating from the previous season's player ratings. Higher is better; 1.0 would be perfect. Outside metrics are each scaled by the factor that suited them best in hindsight (listed in the table below), which favors them. DARKO is its preseason projection for each season, made with data through the season before.
Each row compares one metric with this model over exactly the seasons that metric covers. R² is the share of the variation in next season's team net ratings that each metric predicts, from the previous season's player ratings times actual minutes. Outside metrics are multiplied by the scale factor that suited them best in hindsight, which favors them. DARKO is its own preseason projection for each season; the others get this model's aging curve. RMSE is the typical miss in points per 100 possessions (lower is better). Our R² and RMSE are this model's over the same seasons. (For last season's team net, the scale is how much of it carries over: 0.7.)
| Metric | Seasons | R² | Our R² |
|---|
Share of the variation in modern (1997+) game-based ratings that each era's box score predicts, scored on seasons held out of training. Older eras recorded fewer stats, so their box prior is weaker.
Average change in rating from one season to the next, by the age the player turns. Dots are the raw averages; the line is the smoothed curve the model uses.
Each player-season gets one rating, from every game he played that season: regular season, play-in and playoffs. From 1996-97 on, the model uses play-by-play: every game is split into stints, stretches with the same ten players on the floor (over 1.1 million of them), and each stint's margin per 100 possessions should equal the five home players' ratings minus the five away players', plus home court. Before 1996-97, when no play-by-play exists, each game's margin should equal the sum of the players' ratings weighted by their share of the minutes. (A version split into offense and defense was tested and predicted slightly worse, so the published rating is one number.)
Ratings are pulled toward what the player's box score predicts. That prediction was trained on modern seasons and applied to each era using only the stats that era recorded. Low-minute seasons lean on the typical low-minute player instead, since a few minutes of box stats are mostly noise.
A season is also pulled toward the same player's seasons before and after it, adjusted for aging, with less weight the further apart they are. That's how Scottie Pippen's 1993-94 season without Michael Jordan helps separate the two in the years they played together. Because later seasons inform earlier ones, past ratings can shift slightly as new seasons are played. The accuracy test refits the model on data through each season only, so it never sees the season it predicts.
Before about 1984 many box scores did not record minutes. Those minutes were estimated from each game's stats and made to add up to 240 per team-game and to each player's season total. Possessions were estimated where turnovers and offensive rebounds weren't recorded.
After the fit, each team's leftover gap between its players' ratings and its actual opponent-adjusted results is spread across its players by minutes, so a team's ratings add up to how it actually played.