Ranking Methodology
Every point explained. No black boxes.
Algorithm Flow
Each game flows through this pipeline. Hover over any game on a team page to see the exact values at each step.
1
Base Points
Starting point for every game. Modified by all subsequent factors.
2
Location Modifiers
Road wins are harder. Home losses are worse.
Non-Division 1 Games
Games against non-Division 1 opponents (NAIA, Division II, Division III, USCAA, etc.) are not counted in the ranking algorithm.
Wins don't help your ranking
Losses don't hurt your ranking
Why exclude non-D1 games?
- - Non-D1 teams are not comparable on the same competitive scale
- - These games are often scheduled as exhibition or tune-up games
- - Including them would unfairly reward or punish teams for schedule quirks
- - Focuses the algorithm on meaningful D1 competition
Non-D1 opponents are displayed in gray with a "Non-D1" badge and are not clickable on team pages.
3
Opponent Strength
Opponent strength combines their conference modifier and current ranking:
opp_strength = conf_mod × (0.5 + 0.5 × rank_strength)
rank_strength = 1.0 - (rank - 1) / total_teams. Ranges from 1.0 (#1) to ~0.0 (last)
Different formulas apply based on strength threshold:
modifier = 0.5 + (1.5 × strength)
Example: str=1.2 → modifier = 2.3x
modifier = 0.6 + (0.8 × strength)
Example: str=0.5 → modifier = 1.0x
modifier = 0.6 - (0.3 × strength)
Example: str=1.2 → modifier = 0.24x (less penalty)
modifier = 1.4 - (0.8 × strength)
Example: str=0.5 → modifier = 1.0x (more penalty)
Loss modifier has a floor of 0.5 to prevent extreme penalties for losses to top teams.
4
Record Modifier
The opponent's win percentage further adjusts the modifier. Beating a team with a winning record is worth more:
record_mod = 1.0 + (win_pct - 0.5) × 1.2
12-4 team (.750) → 1.3x multiplier
record_mod = 0.4 + win_pct
4-12 team (.250) → 0.65x multiplier
5
Margin of Victory
Base bonus by margin, then scaled by opponent strength:
final_bonus = base_bonus × (0.5 + 0.83 × opp_strength)
Blowouts against weak teams are worth less. Close wins vs strong teams still get rewarded.
6
Quality Win Bonuses
UPDATED
Smooth curve bonus for beating top 10 opponents. No arbitrary tiers - each rank matters:
bonus = (11 - opponent_rank) × 0.4
No bonus for opponents ranked #11 or lower. Eliminates arbitrary tier cutoffs.
7
Efficiency Modifier
NEW
Compares actual performance vs expected based on opponent strength and location:
Won by 15 when expected +5 → x1.08
+10 performance × 0.008 = +0.08 modifier
Lost by 20 when expected -5 → x0.88
-15 performance × 0.008 = -0.12 modifier
Efficiency modifier is capped between 0.85 and 1.15 to prevent extreme swings.
Final Week Recalculation
At the end of the season, all games are recalculated from scratch using final week parameters:
Final week's values (evolved over the season based on cross-conference results)
Final week's rankings (reflecting teams that improved or declined)
Pre-calculated using complete season data for consistent evaluation
This ensures all teams are evaluated consistently using end-of-season data. A November win against a team that later improved to #20 is valued higher than if calculated at the time.
Conference Strength
Dynamic modifiers based on cross-conference results. Updates weekly:
See current values on the Conferences page.
Tiebreakers
Example: Duke beats #3 Michigan State 66-60 on the road
| Base Win | +10.0 |
| Location: Away × 1.40 | = 14.0 |
| Opp Strength (1.18, strong) → base mod × 2.27 | |
| Record Modifier (MSU 9-1) × 1.74 | = 55.2 |
| Margin (+6): base 1.5 × scale 1.48 | +2.2 |
| Top 5 Bonus | +4.0 |
| Efficiency (expected +6.4, actual +6) × 1.00 | - |
| Total | +61.2 |
See exactly how every team's ranking is calculated
View Rankings