FiveThirtyEight NBA Elo Methodology¶
Summary¶
FiveThirtyEight published detailed methodology documents for their sports prediction models, including the NBA Elo system. Their approach adapts the classic Elo formula with sport-specific modifications: a K-factor of 20 for NBA games, a 100-point home-court advantage, and an optional margin-of-victory (MOV) adjustment that gives extra credit for winning by large margins. Their "CARM-Elo" system further extends this by incorporating player-level projections from their CARMELO system to initialize team ratings at the start of each season.
This source is the authoritative reference for how Elo is adapted for professional sports prediction in a production environment. The methodology document is transparent about assumptions, K-factor choices, and known limitations.
Key Concepts¶
- K-factor = 20: Used for NBA games. Higher K = faster adjustment but more volatility. The choice of K=20 reflects a balance between responsiveness and stability.
- Home-court advantage = 100 points: Added to the home team's effective rating before computing win probability
- Margin of victory (MOV) adjustment: Optional Elo update multiplier based on how much a team won by. Teams that win by 10 points get more credit than teams that win by 1 point.
- CARM-Elo: Combines Elo framework with player-level projections to set initial season ratings, addressing the limitation that Elo takes time to converge after roster changes
- Logistic function with scale 400: Standard Elo probability formula
- Retroactive updates: All historical games are re-computed when ratings change, making the system self-correcting
Formulas¶
Win probability (FiveThirtyEight variant):
$$P(A > B) = \frac{1}{1 + 10^{(-(R_A + H_A - R_B)/400)}}$$
Where H_A = 100 (home advantage).
K-factor by game type:
- NBA regular season: K = 20
- NBA playoffs: K = 24 (faster adjustment in playoffs)
- FIFA World Cup: K = 25 (small sample, needs faster adaptation)
MOV adjustment to K:
$$K_{adjusted} = K \times \frac{1 + 0.5 \times \ln(1 + |margin|)}{1 +0.5 \times \ln(11)}$$
This gives extra credit for blowouts vs. close wins.
CARM-Elo initial rating:
$$R_{initial} = R_{carryover} + \Delta_{roster}$$
Where Δ_roster is computed from player-level CARMELO projections.
Notes¶
- FiveThirtyEight's methodology is the best-documented public Elo implementation for sports — more transparent than FIFA's or most bookmakers' systems
- The existing
elo-rating-system.mdnote covers the basic Elo formula; this source adds sport-specific adaptations and the MOV adjustment - Key insight: MOV adjustment is controversial for betting models because blowouts may not be repeatable (luck/coaching decisions) — FiveThirtyEight uses it for predictive accuracy, not betting
- The K=20 choice for NBA is lower than chess (K=32 for new players), reflecting that NBA team strength changes more gradually
- For World Cup modeling: K=25 is more appropriate than K=20 since teams play infrequently and form changes quickly between tournaments
- The CARM-Elo initial rating concept is useful for World Cup: teams with major roster changes should have initial ratings adjusted from carryover