Skip to content

Findings

Findings / League parity

How competitive is each season? A parity ledger

team-game points = sum of a team's players' pts within one game_id. Gini of per-team win counts (wins/total-wins sum to 1); 0 = balanced, (N-1)/N = one team hoards all

Win-share Gini rose from 0.177 in 2023-24 to 0.2004 in 2025-26 -- across the three seasons on disk, the league looks more top-heavy, not more balanced. Two of those three seasons are partial vs. a full 1230-game season, so read this as a small, honest description, not a trend.

SeasonGamesTeamsWin-share GiniWin% stdevMean abs margin% close (≤5)
2023-241230300.1770.163612.5823.3
2024-25partial season1225300.17980.162912.7125.2
2025-26partial season1156300.20040.166713.0325.5

Scroll horizontally for all columns.

Methodology and confounds

  • only game_ids with exactly 2 distinct teams; higher score wins (ties excluded from margins)
  • Herfindahl of win shares; balanced floor = 1/N; normalized = (HHI-1/N)/(1-1/N)
  • std of team win percentage -- games-normalized companion (robust to unequal game counts)
  • mean/std of absolute final margin + pct of games decided by <= 5 points
  • Games floor: 200 per season -- season below the floor is flagged meets_games_floor=false and excluded from the Lorenz chart. Full-season reference = 1230 games.
  • NOT a prediction of any future season's parity (describes seasons already played)
  • NOT reg-season-only (pooled with any playoff games in the parquet, which inflate win concentration)
  • NOT strength-of-schedule adjusted (opponent-raw win counts)
  • Results report season-level concentration measures with the stated games floor.

Findings