Classic model

2026 · through week 10 · the resume-points model this site used before the two-layer model. Kept for comparison; nothing else on the site reads it. “Main #” is the team’s rank on the main ranking.

#TeamRatingRecordMain #Main vs classic
01Georgia273.68-16▼5
02Tennessee272.17-215▼13
03Alabama259.97-21▲2
04Utah252.99-03▲1
05Texas250.07-28▼3
06Notre Dame237.28-14▲2
07UCLA234.39-02▲5
08Miami216.58-15▲3
09Kentucky199.77-27▲2
10BYU193.97-211▼1
11Wake Forest180.78-110▲1
12New Mexico179.98-121▼9
13Ole Miss178.56-317▼4
14LSU181.26-324▼10
15Texas Tech173.68-112▲3
16Oregon173.26-313▲3
17Boise State188.98-114▲3
18South Carolina169.86-326▼8
19USC169.67-218▲1
20Ohio State181.76-322▼2
21Indiana187.28-19▲12
22Liberty162.88-120▲2
23Houston157.77-216▲7
24Arizona153.57-223▲1
25North Dakota State152.37-236▼11
Ranks 26+
#TeamRatingRecordMain #Main vs classic
26Iowa152.27-219▲7
27Oklahoma144.95-432▼5
28Florida142.55-434▼6
29Auburn138.65-435▼6
30Wisconsin131.56-325▲5
31Louisiana Tech127.37-228▲3
32James Madison126.18-239▼7
33Northwestern119.26-342▼9
34Jacksonville State117.37-247▼13
35Duke117.07-237▼2
36North Texas116.97-229▲7
37Louisville115.56-345▼8
38SMU117.57-231▲7
39Missouri114.46-333▲6
40Memphis113.37-241▼1
41Air Force108.57-243▼2
42UTSA104.77-227▲15
43Clemson100.56-330▲13
44Toledo96.67-249▼5
45Louisiana93.66-362▼17
46Ohio90.87-246=
47Illinois86.96-338▲9
48Baylor83.86-350▼2
49Texas State79.05-458▼9
50North Carolina78.45-444▲6
51Pittsburgh79.86-348▲3
52South Florida67.66-365▼13
53Texas A&M67.64-570▼17
54UAB67.65-477▼23
55Arkansas67.63-690▼35
56Arizona State67.65-471▼15
57Stanford67.64-564▼7
58Florida State67.64-572▼14
59Iowa State67.64-563▼4
60East Carolina67.65-478▼18
61Nebraska67.65-469▼8
62Michigan State67.63-685▼23
63Vanderbilt67.64-580▼17
64Georgia Southern67.65-473▼9
65Mississippi State67.64-552▲13
66Minnesota67.65-453▲13
67Michigan67.65-466▲1
68Western Michigan82.76-359▲9
69Penn State67.65-467▲2
70Washington67.65-468▲2
71Marshall67.65-479▼8
72Utah State67.64-584▼12
73Fresno State67.65-475▼2
74Oregon State67.65-476▼2
75Colorado State67.63-6117▼42
76San Diego State67.64-591▼15
77Army67.65-474▲3
78Florida Atlantic67.66-355▲23
79Navy67.63-6112▼33
80Tulsa67.65-481▼1
81Oklahoma State83.06-340▲41
82UCF67.65-451▲31
83Colorado67.63-697▼14
84Rice67.61-8130▼46
85West Virginia67.65-456▲29
86Cincinnati70.45-457▲29
87Virginia67.64-588▼1
88NC State67.64-599▼11
89Kansas State67.64-5103▼14
90Washington State67.61-8132▼42
91TCU67.64-582▲9
92Kansas67.63-6109▼17
93Tulane67.64-5104▼11
94South Alabama67.64-5106▼12
95UL Monroe67.62-7131▼36
96Arkansas State67.64-5107▼11
97Kennesaw State67.63-6118▼21
98Middle Tennessee67.65-494▲4
99Delaware67.64-5111▼12
100Florida International67.64-5102▼2
101Buffalo67.66-360▲41
102Massachusetts67.65-4100▲2
103Ball State67.63-6115▼12
104Bowling Green67.62-7129▼25
105Miami (OH)67.65-492▲13
106Central Michigan67.64-596▲10
107Wyoming67.66-361▲46
108UNLV67.65-483▲25
109California67.63-6108▲1
110Virginia Tech74.96-354▲56
111Boston College67.64-595▲16
112Georgia Tech67.62-7125▼13
113Rutgers67.62-7123▼10
114Maryland67.63-6101▲13
115Syracuse67.64-589▲26
116UConn67.64-5110▲6
117Old Dominion67.63-7127▼10
118App State67.65-487▲31
119Coastal Carolina67.63-6120▼1
120Georgia State67.65-486▲34
121Charlotte67.61-8134▼13
122Temple67.62-7128▼6
123Nevada67.63-6113▲10
124San José State67.65-5105▲19
125Hawai'i67.63-6126▼1
126New Mexico State67.63-6119▲7
127Western Kentucky67.63-6116▲11
128Eastern Michigan67.64-6121▲7
129Sacramento State67.62-8137▼8
130Kent State67.63-6114▲16
131Akron67.61-8136▼5
132Northern Illinois67.60-9138▼6
133Purdue67.63-693▲40
134Missouri State67.63-6122▲12
135UTEP67.61-8133▲2
136Troy67.64-598▲38
137Sam Houston67.61-8135▲2
138Southern Miss67.63-6124▲14
How the classic model works

How a rating is actually computed, end to end — every number below is read live from the code, not typed in twice.

Every FBS team starts a season at a base rating of 100.0 (FBS_BASE_RATING) with zero preseason opinion attached: no name recognition, no prior-year carryover. Each completed game then adds a resume value for a win or subtracts a penalty for a loss, depending on exactly one thing — the opponent's actual current rank — read off a piecewise-linear curve rather than hard tiers. A win over the team ranked #10 and a win over #11 are worth nearly the same amount, not drastically different ones; that continuity is also what lets the system iterate to a stable answer without a special-case “tier lock” step (see Iteration below).

Win value / loss penalty anchors

Win value and loss penalty are each defined by a short table of (opponent rank, value) anchor pairs. Between two anchors the value is linear in rank; above or below the anchor range, it clamps to the nearest anchor's value.

Opponent rankWin value
150.0
550.0
1035.0
1520.0
2520.0
5010.0
1005.0
Opponent rankLoss penalty
112.0
1012.0
1515.0
2519.0
5030.0
10045.0

Interpolated between those anchors with the same interpolate_anchors function the ranking engine calls, here is what beating or losing to a team at a given rank is worth right now:

Opponent rankWin valueLoss penalty
150.012.0
550.012.0
841.012.0
1035.012.0
1520.015.0
2520.019.0
4014.025.6
5010.030.0
757.537.5
1005.045.0
1205.045.0

FCS opponents

FCS opponents skip interpolation entirely: beating one is worth a flat 2.5 points — below the value of even the weakest FBS win — and losing to one costs a flat 50.0 points, the single worst outcome the algorithm scores, worse than any FBS loss. FCS teams themselves are seeded at a fixed base rating of 50.0 and are never ranked or iterated; they exist only as fixed-value opponents on someone else's resume.

Margin of victory

Raw win value or loss penalty is then scaled by a margin-of-victory modifier with diminishing returns: modifier = 1 + (sqrt(adjusted_margin) - 1) × 0.15. The adjusted margin feeding that formula is capped at 28 points, and built like this: overtime games are fixed at an adjusted margin of 1 regardless of the final score, and a 3-point home-field adjustment applies to regulation games — a home win's margin shrinks by 3, a road win's grows by the same amount, and neutral-site games are untouched. Applied to the live rank-10 win value:

Adjusted marginModifierBeat #10 example
11.00×35.0
71.25×43.6
141.41×49.4
211.54×53.8
281.64×57.5

Strength of schedule

Every team also earns or loses points from the average current rating of everyone it has played: sos_bonus = (average_opponent_rating - 100.0) × 0.3. A team whose schedule averages 110.0 — 10.0 points above the base rating — earns +3.0; a team whose schedule averages 90.0 loses -3.0.

Shrinkage

A team's first few games are a noisy sample of its true strength, so raw resume points (game values, undefeated bonus, multiple-loss penalty, and SOS, all summed) are scaled down by games_played / (games_played + 6) before they count toward the rating. Shrinkage never fully vanishes by design — even a full 14-game regular season is trusted for well under 100% of its raw point value:

Games playedShrinkage factor
10.143
20.250
40.400
60.500
80.571
120.667
140.700

Multiple-loss penalty

Losses beyond a threshold cost an extra 10.0 points apiece. That threshold is itself prorated by games played (min(2, max(1, games_played // 4))) so a two-loss team isn't punished for it in September, before it has even played enough games to justify the full threshold:

Games playedThreshold
11
41
82
92
122
132
142

Undefeated bonus

A team that has played at least 7 games and lost none of them earns a flat 15.0-point bonus on top of everything above. An undefeated team only a few games into the season gets nothing yet — that's intentional, since a short unbeaten streak isn't yet strong evidence of anything.

Iteration

A team's resume value depends on its opponents' ranks, which depend on those opponents' opponents, and so on — so ratings aren't produced in a single pass. Every FBS team starts at 100.0; FCS teams stay fixed at 50.0. Each iteration re-ranks every FBS team from the previous pass's ratings, recomputes every team's resume points against that same snapshot, blends toward the newly computed target with new_rating = old_rating × 0.75 + target × 0.25, then rescales every FBS rating so the league mean lands back on exactly 100.0. That repeats until the largest single-team change falls under 0.01, or until 100 passes have run, whichever comes first. Because the win/loss curve has no hard tiers, there is no cliff for the iteration to oscillate across, so nothing needs freezing along the way — ranks are recomputed fresh from live ratings on every pass, all the way to convergence.

Head-to-head tiebreaker

Once ratings settle, the order gets one last pass: if one team beat another (won more of their meetings — an even split counts for neither), the loser ranks below the winner, as long as the loser is rated no more than 20 points higher. Beyond that gap the two resumes are too far apart for one game to overturn. Results are applied closest-gap first, and one that would close a loop (A beat B, B beat C, C beat A) is skipped, since no order can honor all three. This moves the order only — every rating, and every probability built on one, is unchanged — so a team can sit just below a winner it out-rates.

Publication policy

Rankings are computed from week 1 onward, but only published starting week 6. Before that, the shrinkage mechanism above hasn't had enough games to trust each team's resume, and too few cross-conference games have been played for opponent ranks to mean much yet — earlier weeks are still computed and shown, but marked provisional rather than treated as a real signal.