How much did the shape of basketball change?
Not who scored more — what counted as the same kind of player. We take every season's 14-stat player cloud, find the smallest rotation that lines it up with the next season (orthogonal Procrustes), and report that rotation in degrees. Big degree = basketball redefined itself that summer. Details & proof: Methods → League Drift and MTNN glass-box →
What you're looking at
12,392 player-seasons × 14 era-z features, chained into a 1996 root frame. Rotation = mean principal angle of Q vs identity, residual = normalized Frobenius after alignment. Shared players ≥30 per pair. No scaling, no vibes.
- 30 seasons
- 14 stats per player
- 8 global archetypes
- ≥30 shared players / pair
- Triple-encoded: Okabe-Ito + shape + text
Procrustes
Rotate last year's cloud to match this year's with RᵀR=I, no stretch. The angle you need is the drift.
Era-z
Every stat is z-scored inside its own season. 1997 center vs 2026 guard share one honest space.
Root frame
Each year's Q chained backward → 1996-97 frame. Lets us compare 1999 directly to 2025 without drift.
diff / early / late / era modes and never invents zones — defense hatches are data.Jump to
Gauge + compass + ranked stat shifts → Rotation timeline
30 points, 5 era bands, 5 orange biggest jumps → Archetypes over time
8 types stream + court heatmap diff/early/late/era → Emergence & career shapes
New roles, diversity, reinvention paths
Glass-box model behind all of this: MTNN Network Explorer — 17 families 120 feats → 48-d L2
Interactive • Season scrubber
What changed this season?
Pick a season below — or tap a story chip — to see how big the shift was and which numbers moved most. Rotation gauge = degrees, tilt compass = play-style axis, bars = which stats rotated.
Loading biggest shifts…
How big was the shift? — degrees
Which style of play gained ground?
Loading stat narratives…
Loading…
30 points • 5 eras • Orange = biggest jumps
Rotation, season to season
Each point is one year-to-year step: how far the league's 14-stat player profile had to rotate to line up with the next season. Shaded bands are five research eras; orange rings mark five biggest jumps.
Blue markers are our read on league events near spikes — not derived from math. “Scoring era” at 2022-23 was wrong (7.6°); post-bubble spacing at 2021-22 (11.1°) is better recent tag.
Biggest shifts — the 5 summers where basketball reshaped
Five season-pairs with largest Procrustes rotation. Not “most exciting” — where the statistical geometry moved most in one year.
| Season pair | Rotation | Residual | Shared | Most-rotated | Interpretation (stated read) |
|---|---|---|---|---|---|
| Loading… | |||||
Method — quoted verbatim
Full write-up →Loading…
Chained root-frame transforms power drift charts and Era-Twin matching. The MTNN embedding itself (48-d L2) is the promoted scorer for puzzles: glass-box network explorer shows towers 17×160→32, fusion 556→128→48.
8 types • Stream • Era panels • Court heatmap
Archetypes over 30 seasons
Eight player types tracked across 30 seasons. Triple-encoded: Okabe-Ito color + pattern + text label so identity never rests on hue alone.
Biggest type shifts (first 5 vs last 5 seasons)
Top types by era — share of charted players MIN≥800
Loading…
Court zone map — where play lived
Loading…
More than baseline Less than baseline Defense zones (hatched)
Eight global player types, plus era-specific re-clusters for research. Court zones map where each era's play showed up on the floor; by-era view compares each window to prior (first era vs today). How we built this → • See MTNN towers that score these types →
Did genuinely new roles show up?
Archetype emergence
Role tags by era and how crowded the type landscape got. A type counts as “new” when it doesn't resemble anything from prior era (cosine < threshold in Procrustes root frame).
Roles by era — prevalence
How many player types fit each era — rolling diversity
What we tested — claims as cards, yes/no with border-left encoding
New types by era — orange badge = novel vs prior
Method quoted from assets/archetypes_time.json: layer1 global shares, layer2 K=8 re-fit per 5 era windows, lineage = nearest predecessor centroid by cosine in Procrustes root frame. Methods →
Trajectory taxonomy • Stable / Reinvention / Migrator / Drifter
Career shapes
How players move between archetypes over a career — class mix, example paths, and common switches. Requires ≥4 charted seasons, per-season global label.
Example paths — one per class, track = archetype per season, width = pattern + color
Loading…
Careers migrate more now — transition rate by decade
Common reinvention paths — most frequent switches
Path labels are our read, not model output. Selection effects noted: longer careers have more chances to switch. Methods → trajectories • Explore individual maps: Network → embedding map 3D