Pure Elo for NCAAM: A Tuned Baseline
Pure Elo for NCAAM: A Tuned Baseline
This report documents the hyperparameter tuning process for a pure Elo rating system for NCAAM basketball. The goal was to find the best possible baseline model—simple, well-tuned, and mathematically transparent.
The Elo Formula
At its core, Elo is a simple update rule:
Expected_A = 1 / (1 + 10^((R_B - R_A) / 400))
R_new = R_old + K × (Actual - Expected)
Where:
- R_A, R_B are current ratings
- K is the sensitivity factor (how fast ratings change)
- Actual is 1 for a win, 0 for a loss
- Expected is the pre-game probability of winning
Our Single Modification: Home Court Advantage
The only departure from vanilla Elo is home court advantage (HCA). Before calculating the expected score, we add a bonus to the home team's rating:
Expected_A = 1 / (1 + 10^((R_B - (R_A + HCA×is_home)) / 400))
This is standard practice (FiveThirtyEight does this) and accounts for the fact that home teams win more often.
Hyperparameter Tuning
We performed a grid search over: - K-factor: [16, 20, 24, 28, 32, 40, 48, 56, 64] - Home Court Advantage: [0, 50, 75, 100, 125, 150, 175, 200] rating points
Methodology: Time-Series Cross-Validation
- Training Set: Full 2024-2025 season (1,706 games)
- Test Set: Current 2025-2026 season (2,527 games)
- Metric: Log Loss (lower is better)
Results
| K-Factor | HCA | Log Loss | Accuracy |
|---|---|---|---|
| 64 | 150 | 0.5757 | 69.6% |
| 64 | 175 | 0.5758 | 69.7% |
| 56 | 175 | 0.5765 | 69.3% |
| 56 | 150 | 0.5767 | 69.7% |
| 64 | 125 | 0.5773 | 69.8% |
Best Configuration: K=64, HCA=150
Interpretation: - K=64 means ratings are quite sensitive—a single upset can shift a team ~25-30 points. - HCA=150 means home teams are treated as ~150 rating points better (roughly +6% win probability vs equal opponent).
Current Rankings (Jan 2, 2026)
Top 10 teams using pure Elo:
| Rank | Team | Elo Rating |
|---|---|---|
| 1 | Gonzaga Bulldogs | 1393 |
| 2 | Vanderbilt Commodores | 1372 |
| 3 | Michigan Wolverines | 1364 |
| 4 | Michigan State Spartans | 1364 |
| 5 | LSU Tigers | 1348 |
| 6 | Purdue Boilermakers | 1333 |
| 7 | UConn Huskies | 1317 |
| 8 | Utah State Aggies | 1309 |
| 9 | Nebraska Cornhuskers | 1304 |
| 10 | BYU Cougars | 1296 |
What This Model Does NOT Include
To keep this a "pure" baseline: 1. No Margin of Victory — A 1-point win and a 40-point win are treated the same. 2. No Preseason Regression — We don't regress toward the mean at season start. 3. No Recency Weighting — Games from November count the same as games from January.
These are intentional omissions to establish the simplest possible baseline that still performs reasonably well.
Daily Retraining
This model runs every night at 2 AM PST via AWS Fargate, updating the ratings table in the database and refreshing the site's rankings page.