GOAT methodology
GOAT stands for Generational, Output, Availability, Titles. Each player gets a 0-100 score on each dimension. The final GOAT score is a weighted average. You choose the weights.
Formula
GOAT_i = wG · G_i + wO · O_i + wA · A_i + wT · T_i, where the four weights sum to 1.
Modes
| Mode | G | O | A | T | Description |
|---|---|---|---|---|---|
| Balanced GOAT | 35% | 25% | 15% | 25% | Balances peak dominance, career output, availability, and championship success. |
| Peak GOAT | 50% | 20% | 10% | 20% | Rewards players who were the most dominant at their best. |
| Longevity GOAT | 25% | 40% | 25% | 10% | Rewards long careers with sustained production and availability. |
| Ring GOAT | 25% | 15% | 10% | 50% | Rewards championship success and title contribution. |
| Analytics GOAT | 50% | 30% | 15% | 5% | Rewards era-adjusted impact and production while minimizing ring counting. |
| Playoff GOAT | 35% | 20% | 10% | 35% | Rewards dominance and production when the stakes are highest. |
Generational & Titles v2 (issue #134)
Beyond MVP / All-NBA / DPOY / All-Defensive teams / rings, Generational now folds in All-Star selections, scoring and other stat titles, modern hardware (Cup MVP, CFMVP, Clutch POY), 50/40/90 seasons, and rare per-game feats (triple-doubles, quadruple-doubles, 5×5) sourced from aggregated awards and from player_game_stats. Titles adds CFMVP and Cup honors on top of championships and Finals MVP.
Career leader ranks: regular-season ladders cover points, rebounds, assists, steals, blocks, threes, games, and minutes; playoff ladders cover points, rebounds, and assists. Only top-25 placements are stored. Before career-rank bonuses ship from a database rebuild, we spot-check the RS points and games ladders against public NBA boards (e.g. LeBron #1 in points, Kareem #2; LeBron #1 in games played). If coverage disagrees, bonuses stay off via GOAT_CAREER_RANK_BONUSES=0 until ingest catches up.
Era coverage: steals and blocks only exist from 1973-74 onward; three-pointers from 1979-80. Career ladders for those stats only include seasons after those cutoffs, and only players with at least one qualifying regular-season game appear on those boards—so early-era legends are not mis-ranked on zeros.
Cluster dedup (no global cap): correlated categories share one bonus per cluster—only the best rank in that cluster counts. Clusters are: volume scoring (pts + threes), rebounds (reb), assists (ast), defense (stl + blk together), durability (games + minutes), playoff volume (playoff pts / reb / ast). Worked examples: LeBron might earn ~7.5 raw career-leader credit instead of ~9.0 when pts, games, minutes, and playoff stats would otherwise triple-count; Stockton keeps separate credit for #1 assists and #1 steals (different clusters); Hakeem keeps #1 blocks plus a rebound tier (~4.7 total).
Weight constants live in web/lib/goat/award-weights.ts. Raw Generational and Titles sums are max-normalized to 0–100 on each snapshot so they stay comparable to Output and Availability. Dataset v0.3.
Data sources (v0.1)
Version 0.1 uses hand-curated illustrative scores for ~20 historically relevant players. A future release will compute Generational from era-adjusted z-scores against league seasons, Output from career counting and advanced stats, Availability from games-played rates, and Titles from a contribution-tiered model.
Inputs transparency
The inputs pages pair v0.1 curated G/O/A/T scores with conventional box stats and a database-native RNP-WAR (v0) summary when we have ingested games. Numbers are always labeled by source so we never imply full-career coverage when the warehouse only holds part of a career.
RNP-WAR (v0)
RNP-WAR (v0) measures Running Net Points (RNP) above a replacement-level rate within each season: we take the 10th percentile of RNP per minute among players with at least 300 minutes and 20 games that season, subtract that from the player’s own RNP rate, and multiply by minutes. Summed across seasons in our database, it is era-relative (replacement is per season), not a single modern baseline. It is not MLB WAR, not BPM-based wins, and not a claim about official NBA value—only a transparent summary of RNP against a clearly defined peer line in data we actually store.
Stats vs dimensions
How stats relate to dimensions (v0.1): Generational is meant to reflect dominance vs peers (future: era z-scores; today largely judgment). Output aligns with career production signals such as points, assists, rebounds, and RNP where modeled. Availability aligns with games played and durability signals. Titles aligns with rings, Finals MVPs, and similar hardware in the curated metadata. Where a number is not yet computed from stats, we say so explicitly.
Era adjustment
Raw stats can be unfair across eras. Era adjustment compares each player to the players from his own time first, so a 30-point season is judged against what was normal in that season.
Validation
We stress-test the model the same way a good recipe gets tasted: Are the ingredients different enough? Does a small change in weights wreck the dish? Do obvious legends still look elite? Can a fan see why a rank happened? The live dashboard walks through correlation, PCA, sensitivity across preset modes, and historical reference sets. Open /stats/goat/validation for the latest numbers.
Open the validation dashboard →
Limitations
No formula can fully settle the GOAT debate. Basketball value depends on era, rules, teammates, opponents, injuries, role, and team context. This model is designed to make those assumptions visible so fans can debate them more clearly.
Per-player rationale (v0.1)
- Michael Jordan1984-1998, 2001-2003
Six titles, six Finals MVPs; era-defining peak; modest career-totals penalty for a shorter career.
Top generational contributors (raw, pre-normalize)
- MVP(+25.00 raw)
- All-NBA 1st(+10.00 raw)
- Scoring titles(+8.00 raw)
- All-Star selections(+4.20 raw)
- Career leader ranks (cluster-deduped)(+2.50 raw)
- LeBron James2003-present
Unmatched career production and availability across 20+ seasons; multiple Finals MVPs across three franchises.
Top generational contributors (raw, pre-normalize)
- MVP(+20.00 raw)
- All-NBA 1st(+13.00 raw)
- Career leader ranks (cluster-deduped)(+7.50 raw)
- All-Star selections(+6.30 raw)
- Triple-doubles(+2.40 raw)
- Kareem Abdul-Jabbar1969-1989
Six MVPs, six titles, all-time scoring volume; longevity and per-season dominance both elite.
Top generational contributors (raw, pre-normalize)
- MVP(+30.00 raw)
- All-NBA 1st(+10.00 raw)
- Career leader ranks (cluster-deduped)(+7.00 raw)
- All-Star selections(+5.70 raw)
- All-NBA 2nd(+3.00 raw)
- Bill Russell1956-1969
Eleven championships in thirteen seasons; defensive era-defining impact; counting-stat era inflation noted.
Top generational contributors (raw, pre-normalize)
- MVP(+25.00 raw)
- All-Star selections(+3.60 raw)
- All-NBA 1st(+3.00 raw)
- Magic Johnson1979-1991, 1996
Five titles, three Finals MVPs; career shortened by HIV diagnosis, dampening output and availability.
Top generational contributors (raw, pre-normalize)
- MVP(+15.00 raw)
- All-NBA 1st(+9.00 raw)
- All-Star selections(+3.60 raw)
- Triple-doubles(+2.76 raw)
- Other stat titles(+1.60 raw)
- Larry Bird1979-1992
Three straight MVPs in his peak; injuries shortened his prime and dampened longevity.
Top generational contributors (raw, pre-normalize)
- MVP(+15.00 raw)
- All-NBA 1st(+9.00 raw)
- All-Star selections(+3.60 raw)
- Triple-doubles(+1.18 raw)
- All-NBA 2nd(+0.60 raw)
- Tim Duncan1997-2016
Five titles, three Finals MVPs, 19-year career of two-way excellence and elite availability.
Top generational contributors (raw, pre-normalize)
- MVP(+10.00 raw)
- All-NBA 1st(+10.00 raw)
- All-Star selections(+4.50 raw)
- All-NBA 2nd(+1.80 raw)
- Triple-doubles(+0.08 raw)
- Shaquille O'Neal1992-2011
Three-peat Finals MVP; unstoppable peak; chronic conditioning and injury issues weigh on availability.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+8.00 raw)
- MVP(+5.00 raw)
- All-Star selections(+4.50 raw)
- All-NBA 2nd(+2.40 raw)
- Scoring titles(+1.60 raw)
- Kobe Bryant1996-2016
Five titles, 20-year career, peak two-way wing; modest MVP haul tempers Generational.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+11.00 raw)
- All-Star selections(+5.40 raw)
- MVP(+5.00 raw)
- Scoring titles(+1.60 raw)
- All-NBA 2nd(+1.20 raw)
- Wilt Chamberlain1959-1973
Otherworldly statistical dominance and durability; only two titles depresses Titles.
Top generational contributors (raw, pre-normalize)
- MVP(+20.00 raw)
- All-NBA 1st(+7.00 raw)
- Scoring titles(+5.60 raw)
- Other stat titles(+4.40 raw)
- Career leader ranks (cluster-deduped)(+4.00 raw)
- Stephen Curry2009-present
Reshaped the league's offense; only one Finals MVP slightly tempers Titles relative to the four rings.
Top generational contributors (raw, pre-normalize)
- MVP(+10.00 raw)
- All-NBA 1st(+4.00 raw)
- Career leader ranks (cluster-deduped)(+4.00 raw)
- All-Star selections(+3.30 raw)
- All-NBA 2nd(+2.40 raw)
- Hakeem Olajuwon1984-2002
Two-time Finals MVP; only DPOY+MVP+Finals MVP in same season; two-way C archetype.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+6.00 raw)
- MVP(+5.00 raw)
- Career leader ranks (cluster-deduped)(+4.30 raw)
- All-Star selections(+3.60 raw)
- DPOY(+3.00 raw)
- Oscar Robertson1960-1974
Triple-double-season dominance; only one ring late-career limits Titles.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+9.00 raw)
- MVP(+5.00 raw)
- Triple-doubles(+3.62 raw)
- All-Star selections(+3.60 raw)
- Other stat titles(+2.40 raw)
- Jerry West1960-1974
Lone Finals MVP from a losing team; nine Finals appearances, one ring.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+10.00 raw)
- All-Star selections(+4.20 raw)
- All-NBA 2nd(+2.40 raw)
- Scoring titles(+0.80 raw)
- Other stat titles(+0.40 raw)
- Julius Erving1971-1987
Three titles across ABA + NBA; cultural and on-court influence transcend pure stat lines.
Top generational contributors (raw, pre-normalize)
- MVP(+20.00 raw)
- All-NBA 1st(+7.00 raw)
- All-Star selections(+3.30 raw)
- All-NBA 2nd(+1.80 raw)
- Kevin Garnett1995-2016
Two-way era-defining big; one ring, but career production and impact metrics elite.
Top generational contributors (raw, pre-normalize)
- MVP(+5.00 raw)
- All-Star selections(+4.50 raw)
- All-NBA 1st(+4.00 raw)
- All-NBA 2nd(+1.80 raw)
- Other stat titles(+1.60 raw)
- Dirk Nowitzki1998-2019
One-franchise career, Finals MVP, redefined the seven-foot shooter.
Top generational contributors (raw, pre-normalize)
- MVP(+5.00 raw)
- All-Star selections(+4.20 raw)
- All-NBA 1st(+4.00 raw)
- All-NBA 2nd(+3.00 raw)
- Nikola Jokic2015-present
Three MVPs, Finals MVP, era-leading impact metrics; career still young so Output capped.
Top generational contributors (raw, pre-normalize)
- MVP(+15.00 raw)
- All-NBA 1st(+5.00 raw)
- Triple-doubles(+2.60 raw)
- All-Star selections(+1.80 raw)
- All-NBA 2nd(+1.20 raw)
- Giannis Antetokounmpo2013-present
Two MVPs, DPOY, Finals MVP; mid-career so career totals still climbing.
Top generational contributors (raw, pre-normalize)
- MVP(+10.00 raw)
- All-NBA 1st(+6.00 raw)
- All-Star selections(+2.40 raw)
- DPOY(+1.50 raw)
- All-NBA 2nd(+1.20 raw)
- Kevin Durant2007-present
Back-to-back Finals MVP; elite scoring efficiency; injury-driven availability dings.
Top generational contributors (raw, pre-normalize)
- All-NBA 1st(+6.00 raw)
- MVP(+5.00 raw)
- All-Star selections(+4.20 raw)
- Scoring titles(+3.20 raw)
- All-NBA 2nd(+3.00 raw)
- Elvin Hayes1968-1984
Iron-man durability and counting-stat volume; one ring, no MVPs depresses other dimensions.
Top generational contributors (raw, pre-normalize)
- All-Star selections(+3.60 raw)
- All-NBA 1st(+3.00 raw)
- All-NBA 2nd(+2.40 raw)
- Other stat titles(+0.80 raw)
Changelog
v0.1 (2026-05-03): initial release with curated scores. v0.1+ (2026-05-04): inputs transparency pages with ingested-box stats and RNP-WAR (v0). v0.1++ (2026-05-04): Basketball Reference career totals (RS) on inputs player pages. v0.2 (2026-05-04): added BR playoff career totals alongside RS in the same block. v0.3 / #134 (2026-05-07): expanded award + rare-feat metadata, career-rank bonuses with cluster dedup and DB sanity gate, recomputed Generational/Titles from weights in award-weights.ts.