Glicko-2 Original Paper (Mark Glickman)

Summary

Mark Glickman's original Glicko-2 paper (available at glicko.net) provides the complete mathematical specification of the Glicko-2 rating system, including the iterative algorithm for estimating the rating volatility (σ, sigma). Glicko-2 improves on the original Glicko system by introducing a volatility parameter that measures how consistently a player performs — consistent players have low volatility, erratic players have high volatility.

The paper is the authoritative reference for implementing Glicko-2. It includes the step-by-step algorithm, the rationale for each component, and the Illinois algorithm for finding the volatility parameter.

Key Concepts

  • Rating deviation (RD): From Glicko-1, RD measures uncertainty in a player's rating. After each game, RD decreases; during inactivity, RD increases.
  • Volatility (σ): Only in Glicko-2. Measures consistency of player performance. Found via iterative algorithm (regula falsi / Illinois algorithm).
  • Scale conversion: Glicko-2 uses a different scale from Elo. Conversion: μ = (r - 1500) / 173.7178, φ = RD / 173.7178.
  • Rating period: A batch of games occurring in the same time period, treated simultaneously for updates.
  • Illinois algorithm: The iterative method for finding σ (volatility) that satisfies the system of equations.
  • RD increase over time: RD_new = min(RD_max, sqrt(RD_old² + c² × t)) where t = rating periods since last game.

Glicko-2 Algorithm Steps

Step 1: Convert to Glicko-2 scale:
$$\mu = (r - 1500) / 173.7178$$
$$\phi = RD / 173.7178$$
$$\sigma = volatility$$

Step 2: Compute variance (v) and delta:
$$v = \frac{1}{\sum g(phi_j)^2 \cdot E_j \cdot (1 - E_j)}$$
$$delta = v \cdot \sum g(phi_j) \cdot (s_j - E_j)$$

Where g(φ_j) = 1/sqrt(1 + 3×φ_j²/π²), E_j = 1/(1 + exp(-φ×μ_j)), s_j = actual score.

Step 3: Find new volatility (σ') using Illinois algorithm:
Iterate to find σ' that satisfies:
$$\sqrt{\frac{1}{\sum \frac{1}{phi_i^2 + sigma^2 + v}}} = delta$$

Step 4: Update φ (RD) and μ (rating):
$$phi' = \frac{1}{\sqrt{\frac{1}{phi*^2} + \frac{1}{v}}}$$
$$mu' = mu + phi'^2 \cdot \sum g(phi_j) \cdot (s_j - E_j)$$

Step 5: Convert back to original scale:
$$r' = 173.7178 \cdot mu' + 1500$$
$$RD' = 173.7178 \cdot phi'$$

Notes

  • This is the original Glicko-2 paper — the existing glicko-2.md note covers the concept and provides a Python implementation; this source provides the complete mathematical specification
  • The volatility (σ) parameter is the key innovation of Glicko-2 over Glicko-1 — it captures how erratic a player's performance is
  • The Illinois algorithm for finding σ is the most complex part of implementation — most Python libraries (python-glicko2) implement this correctly
  • For sports betting: Glicko-2's volatility parameter is useful for identifying teams whose ratings are changing erratically vs. consistently
  • The RD increase over time is particularly relevant for international football: national teams may go months between matches, increasing uncertainty
  • The existing note's Python implementation is a simplified version; the full Glicko-2 paper shows the complete algorithm with all edge cases