GOAT validation dashboard
Transparent checks on whether the formula behaves sensibly: redundancy across dimensions, how rankings move when weights change, and whether historical reference groups still look elite.
Data version v0.3
This view is computed on the fly from the same curated roster as the leaderboard. When the database has a `goat_validation_runs` row for this data version, those ETL results replace the fallback automatically.
← Methodology · Leaderboard · Compare
Pairwise Pearson correlations are computed across players in this data version. PRD §6.1 flags pairs with |r| ≥ 0.80 so we can revisit definitions or weights before claiming four independent dimensions.
Sample: 21 players · Flag threshold |r| ≥ 0.8 (PRD §6.1)
No off-diagonal pairs meet the redundancy flag at this threshold.
| Generational | Output | Availability | Titles | |
|---|---|---|---|---|
| Generational | 1.00 | 0.48 | 0.35 | 0.57 |
| Output | 0.48 | 1.00 | 0.31 | 0.14 |
| Availability | 0.35 | 0.31 | 1.00 | -0.03 |
| Titles | 0.57 | 0.14 | -0.03 | 1.00 |
We eigendecompose the covariance of the published G/O/A/T scores (v0.1 stand-in until raw sub-metrics arrive). Eigenvalues show how much variance each component explains; loadings show how the original dimensions participate. The goal is to see separation consistent with dominance, volume, durability, and winning—not to force a particular outcome.
Principal components are computed on the four published G/O/A/T scores for this data version. When the compute pipeline exports raw sub-metrics, this block will switch to those inputs while keeping the same interpretation: do the metrics separate into dominance, volume, durability, and winning?
| PC | Eigenvalue | Variance % |
|---|---|---|
| 1 | 934.503 | 74.9% |
| 2 | 259.361 | 20.8% |
| 3 | 29.778 | 2.4% |
| 4 | 23.946 | 1.9% |
| Dimension | PC1 loading | PC2 loading | PC3 loading | PC4 loading |
|---|---|---|---|---|
| Generational | 0.616 | 0.753 | -0.227 | -0.038 |
| Output | 0.063 | 0.165 | 0.587 | 0.790 |
| Availability | 0.029 | 0.177 | 0.771 | -0.611 |
| Titles | 0.785 | -0.612 | 0.102 | -0.011 |
For each player we rank the full roster under all six presets (balanced, peak, longevity, rings, analytics, playoff). Stable players have a small spread between their best and worst rank; high-swing players move by at least twelve spots between modes. Thresholds follow the PRD’s stress-test intent and can be tightened when the computed sample grows beyond the illustrative roster.
Stable band: rank spread ≤ 5 · High swing: spread ≥ 12 (full roster, six presets).
Stable across modes
| Player | Spread | bal | pea | lon | rin | ana | pla |
|---|---|---|---|---|---|---|---|
| Michael Jordan | 2 | 2 | 2 | 3 | 1 | 3 | 1 |
| Kareem Abdul-Jabbar | 2 | 1 | 1 | 1 | 3 | 1 | 2 |
| LeBron James | 2 | 3 | 3 | 2 | 4 | 2 | 3 |
| Bill Russell | 3 | 4 | 5 | 5 | 2 | 5 | 4 |
| Wilt Chamberlain | 5 | 5 | 4 | 4 | 9 | 4 | 6 |
| Magic Johnson | 3 | 6 | 6 | 8 | 5 | 6 | 5 |
| Tim Duncan | 2 | 7 | 7 | 6 | 6 | 8 | 7 |
| Kobe Bryant | 2 | 8 | 8 | 7 | 7 | 9 | 8 |
| Julius Erving | 5 | 9 | 9 | 9 | 12 | 7 | 11 |
| Larry Bird | 4 | 12 | 10 | 14 | 11 | 10 | 12 |
| Stephen Curry | 2 | 10 | 11 | 12 | 10 | 12 | 10 |
| Hakeem Olajuwon | 2 | 13 | 13 | 11 | 13 | 13 | 13 |
| Kevin Durant | 2 | 14 | 15 | 15 | 14 | 16 | 14 |
| Nikola Jokic | 3 | 16 | 16 | 18 | 15 | 15 | 16 |
| Kevin Garnett | 4 | 18 | 18 | 16 | 20 | 17 | 19 |
| Dirk Nowitzki | 2 | 19 | 19 | 17 | 18 | 19 | 18 |
| Giannis Antetokounmpo | 3 | 17 | 17 | 20 | 17 | 18 | 17 |
| Jerry West | 2 | 20 | 20 | 21 | 19 | 20 | 20 |
| Elvin Hayes | 2 | 21 | 21 | 19 | 21 | 21 | 21 |
High rank swing
| Player | Spread | Best mode | Worst mode | bal | pea | lon | rin | ana | pla |
|---|
Reference sets are sanity checks, not ground truth. We report median balanced ranks/scores and per-mode medians for members present in this data version. Surprises become discussion prompts: maybe a mode is doing exactly what it promised, or maybe we uncovered a real tension worth refining.
NBA 75 (roster subset)
These players also appear on the league’s 75th Anniversary team. We check that the model still respects that historical consensus without hard-coding the list into the formula.
The anniversary team is a reference set, not ground truth. We report median ranks and scores across preset modes to see whether the engine clusters elites together and where it disagrees for transparent debate.
Members in roster: 20 · Median balanced rank: 10.5 · Median balanced score: 60.0
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 10.5 | 60.0 |
| Peak GOAT | 10.5 | 56.7 |
| Longevity GOAT | 10.5 | 70.3 |
| Ring GOAT | 10.5 | 52.5 |
| Analytics GOAT | 10.5 | 63.1 |
| Playoff GOAT | 10.5 | 55.7 |
MVP winners (curated metadata)
Players with at least one MVP in the v0.1 metadata should not collapse to the middle of the pack unless the chosen mode explicitly de-prioritizes what MVPs measure.
MVP winners skew toward peak generational dominance and long-run output. Ring-heavy modes may still shuffle them versus playoff risers—those deltas are features for discussion, not silent bugs.
Members in roster: 19 · Median balanced rank: 10 · Median balanced score: 60.2
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 10 | 60.2 |
| Peak GOAT | 10 | 56.7 |
| Longevity GOAT | 10 | 70.4 |
| Ring GOAT | 10 | 54.0 |
| Analytics GOAT | 10 | 63.4 |
| Playoff GOAT | 10 | 56.3 |
Inner-circle legends (PRD sanity list)
A short list of names the PRD calls out as obvious legends—Jordan, LeBron, Kareem, Russell, and peers. If the model humiliates this group in Balanced mode, we investigate before shipping.
This is a blunt instrument: it does not mean those players must finish 1–10. It means their scores and ranks should look like the historically elite tier when weights are reasonable.
Members in roster: 10 · Median balanced rank: 5.5 · Median balanced score: 70.3
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 5.5 | 70.3 |
| Peak GOAT | 5.5 | 69.0 |
| Longevity GOAT | 5.5 | 77.6 |
| Ring GOAT | 5.5 | 64.2 |
| Analytics GOAT | 5.5 | 69.7 |
| Playoff GOAT | 5.5 | 65.6 |
20+ All-Star selections (reference cohort)
Kareem, LeBron, and Kobe anchor this longevity-of-recognition check. Members are pinned by historical consensus rather than a live stat query in the curated roster.
Median ranks should stay elite in Balanced mode; large negative shifts after #134 deserve a narrative in the PR or a follow-up calibration issue—not silent acceptance.
Members in roster: 3 · Median balanced rank: 3 · Median balanced score: 85.4
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 3 | 85.4 |
| Peak GOAT | 3 | 86.8 |
| Longevity GOAT | 2 | 92.6 |
| Ring GOAT | 4 | 75.0 |
| Analytics GOAT | 2 | 93.4 |
| Playoff GOAT | 3 | 81.1 |
≥3 scoring titles (reference cohort)
Jordan, Wilt, and Durant typify repeated league scoring crowns—useful when expanded awards touch Generational.
If this cohort’s median rank collapses, double-check scoring-title counts ingested from BBR rather than tweaking dimension weights.
Members in roster: 3 · Median balanced rank: 5 · Median balanced score: 72.5
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 5 | 72.5 |
| Peak GOAT | 4 | 74.1 |
| Longevity GOAT | 4 | 84.8 |
| Ring GOAT | 9 | 55.7 |
| Analytics GOAT | 4 | 85.0 |
| Playoff GOAT | 6 | 65.3 |
Triple-double kings (≥150 career, metadata)
Rare per-game feats now surface in Generational. This slice uses the curated triple-double counts embedded in metadata (warehouse-backed counts land via `player_game_stats`).
An empty cohort in the curated JSON is expected until per-game aggregates backfill; the validation row simply omits the block.
Members in roster: 1 · Median balanced rank: 15 · Median balanced score: 53.6
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 15 | 53.6 |
| Peak GOAT | 14 | 50.8 |
| Longevity GOAT | 10 | 70.4 |
| Ring GOAT | 16 | 38.0 |
| Analytics GOAT | 11 | 62.9 |
| Playoff GOAT | 15 | 45.6 |
Career top-3 in a major counting category
Players with a published top-3 `careerRanks` entry in pts/reb/ast/stl/blk/threes/games/minutes. Surprises here often mean either a real tension or a coverage gap in career ladders.
Cross-check against public leader boards when career ranks are DB-backed; gate bonuses off if ladders disagree.
Members in roster: 6 · Median balanced rank: 4 · Median balanced score: 79.0
| Mode | Median rank | Median score |
|---|---|---|
| Balanced GOAT | 4 | 79.0 |
| Peak GOAT | 3.5 | 80.4 |
| Longevity GOAT | 3.5 | 87.5 |
| Ring GOAT | 6.5 | 65.3 |
| Analytics GOAT | 3.5 | 88.0 |
| Playoff GOAT | 4.5 | 73.2 |