Quantifying NBA player impact across 80 years of basketball using era-specific composite models.
The full methodology is documented in our formal research paper:
REIGN: A Composite Metric for Quantifying NBA Player Impact Across Eras
Samir Kerkar — Courtside Analytics, March 2026
Key contributions:
- Four era-specific regression models (Pioneer, Legacy, Classic, Modern)
- 60/40 dampened blend for Modern era recomputation using scraped advanced stats
- Playoff opponent strength adjustment based on opposing team quality
- 29,969 player-seasons, 3,484 players, 1946–2025
| # | Player | Year | Peak REIGN |
|---|---|---|---|
| 1 | LeBron James | 2013 | +27.70 |
| 2 | Michael Jordan | 1988 | +26.59 |
| 3 | Stephen Curry | 2016 | +26.59 |
| 4 | Shai Gilgeous-Alexander | 2025 | +24.72 |
| 5 | Nikola Jokic | 2025 | +24.40 |
| 6 | Chris Paul | 2009 | +24.18 |
| 7 | Kevin Garnett | 2004 | +24.13 |
| 8 | James Harden | 2019 | +24.06 |
| 9 | David Robinson | 1994 | +23.88 |
| 10 | Shaquille O'Neal | 2000 | +23.81 |
REIGN uses different models for different eras because the available statistics differ fundamentally across NBA history:
- Pioneer (1946-62): TS%-dominant model, 11 features, no steals/blocks/BPM
- Legacy (1963-95): WS/48-dominant, 18 features, richest data
- Classic (1996-2012): WS/48 + VORP, 19 features including 3P%
- Modern (2013-25): WS/48-dominant after enrichment, 19 features
All scores are era-normalized via z-score within rolling 5-year windows, ensuring +20 REIGN means the same relative dominance whether it's 1988 or 2024.
- Leaderboard — Sortable rankings with era filtering, 1yr/3yr/5yr peak views, clutch stats
- Player Profiles — Career arcs, skill radar, season heatmaps, award shelf for 3,484 players
- Head-to-Head Compare — Side-by-side stats, peak bars, trajectory overlay, radar, PNG export
- Era Explorer — Deep-dive into each era with evolution charts and cross-era tables
- Visualizations — League trends, OFF vs DEF scatter, age distribution, REIGN distribution
- RS/PO Toggle — Every page supports Regular Season and Playoff modes
- Opponent-Adjusted Playoffs — Scale playoff REIGN by opposing team quality
- URL-Shareable Comparisons —
?v=compare&p1=LeBron+James&p2=Michael+Jordan
- React 19 + Vite 7
- Custom SVG charts + Recharts
- IBM Plex Sans + Source Serif 4 typography
- Service worker for data caching (stale-while-revalidate)
- Fuzzy player search (accent-tolerant, typo-friendly)
- html2canvas for PNG export (lazy-loaded)
npm install
npm run devnpm run buildOutput goes to dist/. Works with Vercel, Netlify, or any static hosting.
Vercel (recommended): Push to GitHub, import in Vercel, deploy. No config needed.
Split into parallel-loaded era files for fast initial load:
| File | Size | Gzipped |
|---|---|---|
seasons_pioneer.json |
1.4 MB | 0.2 MB |
seasons_legacy.json |
5.3 MB | 1.1 MB |
seasons_classic.json |
6.5 MB | 1.2 MB |
seasons_modern.json |
5.1 MB | 0.8 MB |
Additional: awards.json, stretches_rs3/rs5/po3/po5.json, career_avg_rs/po.json, career_clutch.json
scripts/regenerate_careers.py— Rebuild careers.json from seasons.jsonscripts/generate_paper.py— Generate the methodology PDF
Research and data for non-commercial use.




