Wilt Chamberlain averaged 50.4 points in 1961–62. He did it in a league running about 126 possessions a game. Today's runs about 99. Any rating system that puts those two seasons on one scale has to answer for that gap — and most of them quietly do not.
Every player in Hoops Auction carries a number between roughly 68 and 99, plus six attribute bars. This page explains exactly where those numbers come from, because a rating you cannot interrogate is just an opinion with a decimal point.
The foundation is a season-relative z-score. For every statistic, we take the mean and standard deviation of that season, among players who cleared 500 minutes, and ask how many standard deviations above his own league a player sat.
This is the only defensible cross-era comparison. League-average true shooting has climbed from about .440 to about .580 over the history of the sport. A .530 true shooting season was outstanding in 1975 and is below average now. The raw number moved; what it meant is what we score.
Z-scores are clamped at ±3.5. Basketball produces genuine statistical freaks — Wilt's rebounding, Rodman's rebounding, Stockton's assists — and without a clamp a single 6-sigma season would compress everybody else into a narrow band underneath it.
The bars on a player's card are not raw statistics. Each is a weighted blend of season-relative z-scores, chosen so that no single stat can carry an attribute on its own.
| Attribute | Built from |
|---|---|
| Scoring | Points per game (55%), points per 36 (20%), usage (15%), true shooting (10%) |
| Playmaking | Assist percentage (45%), assists per game (30%), turnover percentage (−25%) |
| Rebounding | Offensive (30%), defensive (35%) and total rebound percentage (35%) |
| Perimeter D | Steal percentage (55%), defensive box plus/minus (45%) |
| Interior D | Block percentage (45%), defensive rebound percentage (25%), DBPM (20%), height (10%) |
| Efficiency | True shooting (35%), win shares per 48 (30%), BPM (25%), turnover percentage (−10%) |
Negative weights mean lower is better. Turnovers genuinely subtract from playmaking rather than merely failing to add.
Points per game leads scoring, ahead of per-36 rates, and that is a deliberate choice with a real cost. Per-36 alone quietly rewards not playing: a centre scoring 19.5 in 28 minutes rates identically to a guard scoring 26.0 in 35, even though one of them put six more points on the board every night. Per-36 stays as a smaller term so genuine bench scorers remain visible.
This is the part most rating systems get wrong, and it took a rewrite to fix here.
Each position is judged on what that position is actually asked to do. Rebounding is worth 22% of a centre's blend and 5% of a point guard's. Playmaking is 30% for a point guard and 8% for a centre.
But lowering a weight is not the same as excusing an attribute, and that distinction is where the first version broke. A point guard grabbing three rebounds a game sits far below the league mean, so even at a 5% weight that deficit kept dragging on his rating. Meanwhile a centre was never docked for not passing, because his weak attributes are ones bigs are collectively bad at. Guards were being structurally penalised by a system that looked fair on paper.
So each attribute is now scored within its own position before being weighted. The question asked is not "how good is he at rebounding" but "how good is he at rebounding for a point guard".
The trade-off is real and worth stating: this flattens cross-positional greatness. A centre who passes like a point guard is compared on passing only to other centres, at centre's 8% weight.
For an auction that is arguably the point. It keeps genuine talent at all five positions, so bidding stays live at every slot instead of collapsing onto whichever position the maths happens to favour.
One deliberate split: only the overall rating is position-relative. The six bars you see on the card stay absolute. Because the blend already protects a guard from being punished for his rebounding, the bars are free to describe him honestly — which is why centres show a wall of rebounding and rim protection, guards show playmaking, and you can tell what a player is from three feet away.
Every input above is a rate, and rates reward narrow, easy jobs. A backup centre who only ever shoots dunks and chases rebounds posts a better true shooting percentage and rebound rate than most stars, without ever creating a shot or being gameplanned against.
So the composite is scaled by share of a full role, defined as 31 minutes per game. Below that, a player is shrunk toward league average; at or above it, he is untouched.
Measured per game rather than by season totals, deliberately. Totals conflate role with availability, which craters a star who missed half a season to injury even though he shouldered a full load in every game he played. Missing games costs a player nothing here. Only playing a smaller role does.
The six attributes describe what a player did. The impact metrics — box plus/minus, VORP and win shares per 48 — describe what happened when he played. The final composite is 70% attributes, 30% impact.
The tilt toward attributes is corrective. Impact metrics are efficiency-driven and systematically favour low-usage bigs who finish plays rather than create them. At an even split, rim-running centres floated above guards scoring 26 a night.
Steals and blocks were not recorded before 1973–74, which is also why box plus/minus and VORP cannot be computed that far back. Treating those as zero would rate every pre-1974 player as exactly league-average on defence — and worse, it would shrink their spread on every composite that includes them, so Wilt could never reach the top of the scale no matter what he did.
Instead each player is scored on the metrics his era actually recorded, and the weights are scaled back up to full. A player measured on half the inputs is judged on that half, not punished for the missing half.
Averaging six attributes and an impact anchor produces a very tight bell curve. Map that linearly onto 0–99 and almost the entire league lands in the 40s and 50s. That is statistically honest and miserable to play with: winning a bid feels like a consolation prize.
So the final number comes from a player's rank in the pool, mapped through a deliberately generous curve.
| Ranked above | Rating | All-time pool |
|---|---|---|
| Top 0.05% | 99 | the top two, and nobody else |
| Top 0.4% | 97 | about the top 11 |
| Top 1% | 95 | about the top 27 |
| Top 5% | 90 | about the top 134 |
| Top 20% | 84 | |
| Everyone else | 68+ | nobody in the game is a write-off |
The ordering is completely untouched by this. It is still earned by the metrics, the accolades and the championships. Only the number printed on the card moves.
Because the anchors are expressed as fractions of the pool, the same curve works for the 2,682-player all-time pool and the 379-player current one. And the six bars run through the identical curve, so a 90 means the same thing wherever it appears. An earlier version rated the bars on a separate scale and put a 77 overall above six bars in the 60s — neither was wrong alone, but together they made every overall look inflated.
Career averages punish long declines, so an all-time player is represented by his best three-season window, weighted by minutes. Kareem is rated on Kareem at his peak, not on the 38-year-old.
Box scores measure production. Traditional all-time lists measure who was recognised as the best player of his era — and an MVP vote is era-neutral by construction, because it says "you beat the people you actually played against". That is the one calibration a within-season z-score cannot capture. A modern stat-padder can post elite rates and never make All-NBA, and only the accolade record notices.
| Honour | Points |
|---|---|
| MVP vote share (per unit, career) | 6.0 |
| All-NBA First / Second / Third | 3.0 / 2.0 / 1.0 |
| Championship, weighted by role | 2.5 |
| Defensive Player of the Year share | 2.0 |
| Hall of Fame | 2.0 |
| All-Defense First / Second | 1.5 / 1.0 |
| Finals appearance, weighted by role | 1.0 |
| All-Star selection | 0.5 |
Championships matter more than any single box-score line, and they are the one thing no box score records. Without them Bill Russell — whose defensive greatness predates both blocks being tracked and the awards that would have honoured it — ranks nowhere at all.
Sixth Man, Most Improved and Rookie of the Year are excluded. They describe a role or a starting point, not a peak.
Accolades are held to a minority of the blend on purpose. They correct the metrics; they do not replace them. Past about a third, this stops being a stats-driven game and becomes a reproduction of the consensus it is meant to test.
On the this-season scale a player is rated on this season alone, so the number says what he is doing right now rather than what he once was.
Postseason play is added on top as two separate signals: how far the team went, and how the player actually performed. Teams that missed the playoffs get nothing, and that gap is the point. A four-game first-round exit is also discounted as the small sample it is — without that, someone averaging 26 in a sweep loss would outrank a player who carried a team through 19 games.
A player who missed the entire season is still someone you would bid on, so he carries forward on his last season played and is docked for every season since. Two seasons out and he leaves the pool, which is what keeps "this season" meaning something.
The fastest way to judge any of this is to go and look at the numbers on players you have opinions about.
Open the saleroom