Skip to content

An iterative method for ranking college football teams (or anything else) based on win/loss outcomes alone. Non-linear weighted wins and losses generate fair rankings that naturally account for signature wins and crushing losses.

License

Notifications You must be signed in to change notification settings

maxposchmann/SelfConsistentCFBRanker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Self-Consistent CFB Ranker

Current Rankings (December 3, 2023):

Rank Team NAW AAW NCS NRS Record
1 Washington 15.325 1.179 15.325 0.000 13 - 0
2 Michigan 15.039 1.157 15.039 0.000 13 - 0
3 Texas 14.235 1.095 16.733 0.000 12 - 1
4 Alabama 13.828 1.064 16.755 0.000 12 - 1
5 Florida State 13.718 1.055 13.718 0.000 13 - 0
6 Georgia 12.286 0.945 15.157 0.000 12 - 1
7 Liberty 11.640 0.895 11.640 0.000 13 - 0
8 Ohio State 11.186 0.932 14.229 0.000 11 - 1
9 Oklahoma 10.600 0.883 14.894 0.000 10 - 2
10 James Madison 9.926 0.827 11.971 0.000 11 - 1
11 Oregon 9.578 0.737 15.750 0.000 11 - 2
12 Ole Miss 9.148 0.762 14.697 0.000 10 - 2
13 Penn State 9.050 0.754 14.650 0.000 10 - 2
14 Missouri 8.818 0.735 13.747 0.000 10 - 2
15 Troy 8.652 0.666 13.225 0.000 11 - 2
16 Tulane 8.068 0.621 12.696 0.000 11 - 2
17 Iowa 7.913 0.609 15.316 0.000 10 - 3
18 Toledo 7.895 0.607 12.144 0.000 11 - 2
19 Louisville 7.853 0.604 14.850 0.000 10 - 3
20 SMU 7.747 0.596 12.249 0.000 11 - 2
21 LSU 7.605 0.634 15.699 0.000 9 - 3
22 Miami (OH) 7.528 0.579 11.855 0.000 11 - 2
23 North Carolina State 6.565 0.547 13.049 0.000 9 - 3
24 Oklahoma State 6.492 0.499 15.476 0.000 9 - 4
25 Notre Dame 6.438 0.536 13.374 0.000 9 - 3
26 Arizona 5.726 0.477 12.862 0.000 9 - 3
27 Kansas State 5.675 0.473 15.180 0.000 8 - 4
28 Memphis 5.479 0.457 12.364 0.000 9 - 3
29 Kansas 5.106 0.425 14.357 0.000 8 - 4
30 Clemson 5.081 0.423 14.215 0.000 8 - 4
31 Utah 4.622 0.385 14.342 0.000 8 - 4
32 Oregon State 4.564 0.380 14.208 0.000 8 - 4
33 Tennessee 4.473 0.373 14.366 0.000 8 - 4
34 North Carolina 4.133 0.344 12.512 0.000 8 - 4
35 Nevada-Las Vegas 4.123 0.317 13.265 0.000 9 - 4
36 New Mexico State 4.077 0.291 13.510 0.000 10 - 4
37 Wyoming 3.913 0.326 13.003 0.000 8 - 4
38 Boise State 3.631 0.279 14.917 0.000 8 - 5
39 Iowa State 3.630 0.302 15.488 0.000 7 - 5
40 Miami (FL) 3.615 0.301 15.006 0.000 7 - 5
41 West Virginia 3.484 0.290 12.576 0.000 8 - 4
42 Ohio 3.387 0.282 9.778 0.000 9 - 3
43 Appalachian State 3.236 0.249 13.724 0.000 8 - 5
44 USC 3.204 0.267 14.973 0.000 7 - 5
45 Duke 2.923 0.244 14.375 0.000 7 - 5
46 Air Force 2.814 0.234 11.044 0.000 8 - 4
47 Kentucky 2.612 0.218 14.590 0.000 7 - 5
48 UTSA 2.592 0.216 11.031 0.000 8 - 4
49 Jacksonville State 2.502 0.208 11.203 0.000 8 - 4
50 Texas A&M 2.365 0.197 13.996 0.000 7 - 5
51 San Jose State 2.288 0.191 12.783 0.000 7 - 5
52 Coastal Carolina 2.277 0.190 12.739 0.000 7 - 5
53 Fresno State 2.176 0.181 10.454 0.000 8 - 4
54 Northwestern 2.061 0.172 12.748 0.000 7 - 5
55 Maryland 1.985 0.165 13.965 0.000 7 - 5
56 Wisconsin 1.836 0.153 12.813 0.000 7 - 5
57 Bowling Green 1.727 0.144 13.941 0.000 7 - 5
58 Western Kentucky 1.495 0.125 13.082 0.000 7 - 5
59 UCLA 1.438 0.120 11.848 0.000 7 - 5
60 Georgia Tech 1.276 0.106 14.715 0.000 6 - 6
61 Rutgers 1.010 0.084 15.273 0.000 6 - 6
62 Texas Tech 0.969 0.081 14.563 0.000 6 - 6
63 Auburn 0.851 0.071 15.114 0.000 6 - 6
64 Texas State 0.520 0.043 10.909 0.000 7 - 5
65 California 0.510 0.042 14.228 0.000 6 - 6
66 Virginia Tech 0.457 0.038 13.800 0.000 6 - 6
67 Georgia State 0.237 0.020 13.296 0.000 6 - 6
68 South Alabama 0.176 0.015 13.299 0.000 6 - 6
69 Old Dominion 0.173 0.014 13.285 0.000 6 - 6
70 Marshall 0.169 0.014 12.857 0.000 6 - 6
71 UCF 0.065 0.005 13.000 0.000 6 - 6
72 Arkansas State -0.277 -0.023 12.700 0.000 6 - 6
73 Syracuse -0.401 -0.033 12.649 0.000 6 - 6
74 Minnesota -0.470 -0.039 15.266 0.000 5 - 7
75 Georgia Southern -0.489 -0.041 12.006 0.000 6 - 6
76 Utah State -0.584 -0.049 12.255 0.000 6 - 6
77 Boston College -0.637 -0.053 12.706 0.000 6 - 6
78 Illinois -0.744 -0.062 14.074 0.000 5 - 7
79 South Carolina -0.820 -0.068 14.495 0.000 5 - 7
80 Texas Christian -0.894 -0.074 14.838 0.000 5 - 7
81 Florida -0.923 -0.077 15.380 0.000 5 - 7
82 Mississippi State -1.144 -0.095 14.404 0.000 5 - 7
83 Rice -1.220 -0.102 12.466 0.000 6 - 6
84 BYU -1.335 -0.111 14.496 0.000 5 - 7
85 South Florida -1.519 -0.127 11.734 0.000 6 - 6
86 Louisiana -1.600 -0.133 10.859 0.000 6 - 6
87 Washington State -1.776 -0.148 14.089 0.000 5 - 7
88 Nebraska -1.838 -0.153 13.591 0.000 5 - 7
89 Army -2.006 -0.182 10.995 0.000 5 - 6
90 Navy -2.317 -0.211 10.518 0.000 5 - 6
91 Michigan State -2.431 -0.203 16.909 0.000 4 - 8
92 Purdue -2.571 -0.214 15.369 0.000 4 - 8
93 Eastern Michigan -2.906 -0.242 9.580 0.000 6 - 6
94 North Texas -3.232 -0.269 11.662 0.000 5 - 7
95 Northern Illinois -3.403 -0.284 9.962 0.000 6 - 6
96 Wake Forest -3.403 -0.284 13.974 0.000 4 - 8
97 Colorado State -3.429 -0.286 10.899 0.000 5 - 7
98 Houston -3.511 -0.293 13.888 0.000 4 - 8
99 Colorado -3.621 -0.302 13.309 0.000 4 - 8
100 Arkansas -3.631 -0.303 14.239 0.000 4 - 8
101 Central Michigan -3.927 -0.327 10.986 0.000 5 - 7
102 Western Michigan -4.091 -0.341 12.817 0.000 4 - 8
103 Virginia -4.186 -0.349 14.871 0.000 3 - 9
104 Hawaii -4.424 -0.340 12.684 0.000 5 - 8
105 Middle Tennessee State -4.472 -0.373 13.741 0.000 4 - 8
106 UAB -4.476 -0.373 12.723 0.000 4 - 8
107 Arizona State -4.493 -0.374 15.533 0.000 3 - 9
108 Ball State -4.506 -0.376 12.840 0.000 4 - 8
109 New Mexico -4.696 -0.391 12.010 0.000 4 - 8
110 San Diego State -4.713 -0.393 11.942 0.000 4 - 8
111 Tulsa -4.995 -0.416 13.544 0.000 4 - 8
112 Pitt -5.100 -0.425 14.286 0.000 3 - 9
113 Indiana -5.186 -0.432 15.118 0.000 3 - 9
114 Florida Atlantic -5.484 -0.457 11.386 0.000 4 - 8
115 Southern Mississippi -5.508 -0.459 14.011 0.000 3 - 9
116 Baylor -5.522 -0.460 13.804 0.000 3 - 9
117 Stanford -5.652 -0.471 15.119 0.000 3 - 9
118 Cincinnati -5.662 -0.472 13.624 0.000 3 - 9
119 Massachusetts -5.682 -0.473 14.110 0.000 3 - 9
120 Florida International -6.227 -0.519 11.037 0.000 4 - 8
121 Connecticut -6.389 -0.532 12.534 0.000 3 - 9
122 UTEP -6.555 -0.546 12.699 0.000 3 - 9
123 Vanderbilt -7.062 -0.588 14.570 0.000 2 - 10
124 Temple -7.161 -0.597 11.565 0.000 3 - 9
125 Louisiana Tech -7.183 -0.599 12.174 0.000 3 - 9
126 Buffalo -7.263 -0.605 12.801 0.000 3 - 9
127 Charlotte -7.290 -0.607 11.290 0.000 3 - 9
128 Sam Houston -7.418 -0.618 11.742 0.000 3 - 9
129 Louisiana-Monroe -8.041 -0.670 12.866 0.000 2 - 10
130 East Carolina -8.337 -0.695 13.691 0.000 2 - 10
131 Nevada -9.456 -0.788 11.814 0.000 2 - 10
132 Akron -10.644 -0.887 10.412 0.000 2 - 10
133 Kent State -12.430 -1.036 10.858 0.000 1 - 11

Explanation:

I was looking at a couple of computer CFB rankings, and the following occurred to me:

  • I can use a computer.
  • I know about football.
  • My opinions are better than other people's opinions.

So of course I had to do my own ranking system. Here are my principles:

  • Games are won or lost. Point differentials are meaningless. Really, your team is better because your 8th-string QB rushed for a couple garbage time TDs?
  • Wins and losses both matter. Equally.
  • The order in which games are played doesn't matter. No late-season bias. No inertia.
  • Beating a good team is better than beating a bad team, and similarly losing to a good team isn't as bad as losing to a bad team.
  • No judgement should be involved. No adjustable parameters. In other words, there's no seed from a preseason poll, nor should there be sorting by P5/G5 etc. The rankings themselves have to determine what is a good win.
  • The ratings used to generate rankings should be continuous rather than discrete and separate from the rankings themselves. The gap between #14 and #15, for example, may be small or large, and the value of beating these teams should reflect that.
  • Rankings should be self-consistent. If the final set of ratings is used to generate rankings, there should be no change.

And thus the foundations of the Self-Consistent CFB Ranker (SCCR) were laid. The first step in executing this vision is choosing a function to generate the ratings. A new rating system, Net Adjusted Wins (NAW) was invented for this purpose.

Net Wins

Net wins is simply wins minus losses, like the team record with the dash interpreted as subtraction. So a 8-4 teams has 4 net wins. A 1-11 teams has -10 net wins. In the days of ties, a 4-5-1 teams has -1 net wins.

Adjusted Wins

As stated above, in CFB some wins are better than others, and some losses worse than others. To represent this, an Adjusted Wins function was selected. The adjusted win value ($\omega$) for an opponent strength of $\beta$ is:

$\omega_{win}$ = $\exp(\beta / \gamma)$

where $\gamma$ is a scaling factor. The adjusted win value for a loss against the same opponent would be:

$\omega_{loss}$ = $-\exp(-\beta/\gamma)$.

Net Adjusted Wins

Combining the two concepts above, Net Adjusted Wins for any team is simply:

NAW = $\sum_{games}$ $\omega_{game}$.

Now, what should the strength, $\beta$, be for each team? Simply that team's NAW!

Comparing the $\omega_{win}$ and $\omega_{loss}$ functions, it can be seen that the magnitude of a win against a team with a high NAW will be similar to that of a loss to a team with a low NAW. Note that an average NAW (i.e., for a team with an even record) will be around 0. This means for an opponent with an average NAW, $\omega_{win} \doteq 1$ and $\omega_{loss} \doteq -1$. In other words, the average adjustment factor is roughly unity.

The only remaining parameter to set is $\gamma$. The choice $\gamma$ = max(abs(NAW)) is arbitrary, but turns out to work pretty nicely. It ensures that the adjusted values of wins remain roughly constant over the course of a season, and defines the maximum possible ratio of values of FBS wins (or losses) to be exp(2) = 7.389. By this win metric, a team would do much better to split a series with the best team in FBS (+2.3504 net wins) than to beat the worst team in FBS twice (+0.7358 net wins). This feels reasonably fair, and also has the benefit of converging well.

A few more calculation details. The algorithm is initialized with the unadjusted net wins for each team. The adjusted wins are calculated and NAW summed iteratively until self-consistency of NAW for all teams is achieved. Multiple games against the same opponent are counted separately, rather than cancelling. Ties (though no longer part of CFB) are counted as 0.5 wins + 0.5 losses, so increase NAW if the opponent has NAW above 0, and decrease it if the opponent has NAW below 0.

Also calculated is Average Adjusted Wins (AAW), which is NAW per game played. The NAW of the Completed Schedule (NCS) and NAW of Remaining Schedule (NRS) for each team are also output as estimates of strength of schedule and strength of remaining schedule.

One caveat about the "no inputs" thing: only FBS teams are tracked, and all non-FBS teams have NAW set to (minimum FBS NAW - 1.0).

Results are downloaded from Sports Reference (i.e. https://www.sports-reference.com/cfb/years/2021-schedule.html click on "Share & Export" then "Get table as CSV (for Excel)").

Team Reports:

If team names are given as arguments, a report on the specified teams will be output instead of the full rankings. This includes the games played by that team, the outcomes of those games, and how they affected the computed team NAW. If games remain on the schedule, those are shown separately, along with estimated NAW changes for win/loss outcomes.

For example, California after week 13, 2021:

California (4 - 6)

NAW AAW NCS NRS
Value -4.201 -0.420 8.933 2.047
Rank 100 102 125 9
Played Outcome Change
71 Texas Christian Loss - 0.997
44 Nevada Loss - 0.837
105 Stanford Win + 0.692
64 Washington State Loss - 0.947
20 Oregon Loss - 0.606
52 Oregon State Win + 1.132
108 Washington Loss - 1.523
96 Colorado Win + 0.754
127 Arizona Loss - 2.210
131 Non-FBS Win + 0.341
Remaining If Win If Loss
86 USC + 0.853 - 1.173
45 UCLA + 1.194 - 0.837

Examples:

2019

Let's take a look at the top 25 prior to bowl games for the 2019 season. I'll use the results as of December 8th to match the final CFP committee:

Rank Team NAW CFP Committee Rank
1 Ohio State 16.622 2
2 LSU 15.179 1
3 Clemson 12.756 3
4 Memphis 12.101 17
5 Oklahoma 11.840 4
6 Boise State 11.224 19
7 Georgia 10.840 5
8 Appalachian State 10.437 20
9 Oregon 9.867 6
10 Notre Dame 9.632 15
11 Wisconsin 9.452 8
12 Penn State 9.320 10
13 Baylor 9.180 7
14 Utah 9.117 11
15 Cincinnati 8.558 21
16 Florida 8.429 9
17 Michigan 8.099 14
18 Auburn 7.988 12
19 SMU 7.937 NR
20 Minnesota 7.762 18
21 Alabama 7.713 13
22 Air Force 7.537 NR
23 Navy 7.487 23
24 Iowa 7.092 16
25 Florida Atlantic 6.777 NR

This ranking results in 3 of the 4 playoff selection, and Oklahoma is only edged out by Memphis by a razor-thin margin. Evidently this ranking system is not the hot-take generator I had feared. In total 4 of the top-25 teams differ from the CFP committee's list. Dropped are 8-4 USC (22), 9-4 Virginia (24), and 8-4 Oklahoma State (25). Added are 10-3 SMU, 11-2 Air Force, and 11-3 FAU. Overall this ranking prefers G5 teams with more wins over P5 teams with fewer, relative to the CFP. I agree.

So 2019 is a nice, uncontroversial year. LSU were champs, they deserved to be in the CFP, and after all bowls SCCR agrees that they were the best.

2017

But what about 2017? Starting with the same point (December 3rd), who should have been in the CFP?

Rank Team NAW CFP Committee Rank
1 Clemson 14.609 1
2 Georgia 13.282 3
3 Oklahoma 13.282 2
4 UCF 12.599 12
5 Wisconsin 12.540 6
6 Ohio State 12.511 5
7 USC 11.728 8
8 Alabama 11.303 4
9 Auburn 10.581 7
10 Notre Dame 10.301 14

That's only a little different from the CFP as well.. According to SCCR, UCF should been given a chance to play for the title over Alabama.

Interestingly, the Colley Matrix still put UCF at 1 after bowl games, even though they didn't get to face off in the CFP. Since this ranking bears some similarity in philosophy to Colley, let's see if that's true for SCCR also.

Rank Team NAW
1 Alabama 16.426
2 Georgia 16.006
3 Ohio State 15.099
4 Wisconsin 14.802
5 UCF 14.489
6 Clemson 13.863
7 Oklahoma 13.681
8 Penn State 11.798
9 Notre Dame 11.595
10 Auburn 10.879

Sorry UCF, but SCCR agrees that Alabama were the 2017 national champions, with their playoff victories vaulting them to the top.

Comparison with Colley Matrix

It has come to my attention that there is already a self-consistent ranking method, the Colley Matrix (https://www.colleyrankings.com/index.html), which was part of the BCS system (prior to the CFP), and is still recognized by NCAA. No surprise that something similar has been done, as Daryl says: there's no such thing as an original sin. Anyway it seems some comparison is warranted. Please note that I am not an expert on the Colley system, but I will do my best to discuss it accurately. The similarities between the two are substantial:

  • Only wins and losses are considered (no score differential).
  • There is no sorting by conference or history (bias-free).
  • The order in which games are played is irrelevant.
  • The results are self-consistent.

However, there are also substantial differences between the two methods. First, to state the obvious, the two generate different rankings unless some miraculous coincidence has occurred. Here are some more details and examples:

Units.

SCCR outputs NAWs with units of wins, with wins against above-average teams being worth >1 win and wins against below-average teams worth <1 win, and with losses negative and opposite to wins. Thus as of week 5 2021, 4-0 Michigan is at #1 with 4.42142527 effective wins. Meanwhile the Colley matrix returns ratings which are more similar to win percentages. Colley also has Michigan at #1 for the same week, with a rating of 0.92392. In the Colley system, ratings are (almost) always between 0 and 1, so even an undefeated team with the highest strength-of-schedule will show a rating <1. In SCCR NAWs average around 0, and beating an average team yields exp(0) = 1 wins. In Colley, ratings average to 0.5, i.e. an even win-loss rate.

Strength-of-schedule adjustments for win/loss outcomes.

Both systems use the strengths of all opponents iteratively to determine the values of wins and losses. However, in Colley whether a particular game was won or lost does not affect the strength of schedule adjustment (to first order). In SCCR the win-loss state is directly accounted for in the NAW exponential function. This is best demonstrated by example. Again, let's take (the current at time of writing) week 5 2021. Rutgers is 3-1, having just lost to #1 Michigan. In SCCR Rutgers is ranked at #28 with NAW 1.98208119. In Colley, Rutgers is #16 with rating 0.7713. Now, let's imagine a hypothetical in which Rutgers had beaten Michigan, but lost a previous game against Temple. In Colley, Rutgers remains at #16 and has rating 0.7700. This is nearly identical to before. In SCCR, Rutgers rises to #25 (a jump of 3 positions) and has NAW 2.24361296 (+0.26153177 wins). This is because in SCCR the value of beating a very good opponent outweighs the penalty of losing to a middling opponent. On the other hand, in Colley, Rutger's rating only changes at all because of the changes in the strength-of-schedule of other teams (which is why it hardly budged).

Differing number of games completed.

As discussed in point 1, SCCR is effectively a cumulative resume rating system, while Colley is based on a rate. Therefore SCCR will prefer teams with larger numbers of games played (or more specifically, won) relative to Colley. I demonstrate this on the 2020 "regular" season (I had to use the Wayback Machine on the Colley website, and this only shows top 25 ranks and no ratings). Here are SCCR and Colley ranks for 2020 as of December 20th:

Rank Team NAW Colley Team
1 Coastal Carolina 11.935 Alabama
2 Alabama 11.690 Cincinnati
3 Clemson 10.739 Coastal Carolina
4 Notre Dame 9.867 Clemson
5 Cincinnati 9.789 Ohio State
6 Louisiana 9.096 San Jose State
7 BYU 8.899 Louisiana
8 Miami (FL) 7.371 Notre Dame
9 San Jose State 7.199 BYU
10 Iowa State 6.949 Miami
11 Oklahoma 6.939 Ball State
12 Texas A&M 6.507 Texas A&M
13 Ohio State 6.122 Indiana
14 North Carolina 5.504 Oklahoma
15 Oklahoma State 5.369 Tulsa
16 Ball State 5.338 Iowa State
17 North Carolina State 5.306 Georgia
18 Army 5.261 USC
19 Liberty 5.109 Buffalo
20 Tulsa 4.851 Colorado
21 Georgia 4.687 North Carolina
22 Florida 4.681 North Carolina State
23 Marshall 4.633 Army
24 Appalachian State 4.610 Oklahoma State
25 Indiana 4.608 Northwestern

Notice that 6-0 Ohio State has dropped from playoff position at #3 in the CFP rankings to #13 here (#5 in Colley), due to not having earned enough wins in their shortened season. They would have been replaced by the Chanticleers! Now tell me there's a better rating system.

Comparing the Colley rankings to SCCR rankings, the big gainers under Colley were B1G and PAC-12 teams like Ohio State, Indiana, USC, and Colorado, who all played shortened seasons. So as expected, SCCR prefers teams with more wins under their belt relative to Colley. While neither is intended as a predictive method, it is probably fair to say that Colley has more traits of a predictive method and SCCR comes closer to a pure resume ranker.

Note that AAW (NAW per game played) is also available within SCCR, if you prefer an efficiency metric. The top four teams by AAW in 2020 were: Cincinnati, Coastal Carolina, Alabama, and San Jose State.

What's a win worth?

In SCCR, the answer is the same for everyone: exp({opponent NAW}/{maximum NAW}). In Colley, the answer depends on how your year has been going. Here's an example. As I write this, it is Monday morning following week 13 of 2021. Iowa sits at #13 in SCCR with NAW of 7.42832202, and #10 in Colley with rating 0.81598. Meanwhile Ohio is #121 (-8.07105492) by SCCR and #123 (0.25856) by Colley. Let's imagine these two took it upon themselves to play an unscheduled match here on Monday morning while the rest of the teams rest. Iowa wins of course. By SCCR, Iowa gains 0.54494081 to total 7.97326283 wins and moves up to #11. Per Colley, Iowa loses 0.00411 rating points and drops to #11 with 0.81187. Punished for winning!

Now suppose that instead of Iowa, it was the California Golden Bears who beat Ohio tonight. California is currently #100 (-4.20083795) by SCCR and #102 (0.36630) by Colley. After this hypothetical win, they gain 0.52891463 wins to move to #96 (-3.67192332) in SCCR, and gain 0.03103 points to go to #115 (0.39733) in Colley.

So what do we learn? In Colley, a win against a bad team can decrease your strength-of-schedule adjustment by enough to outweight the value of the win (especially if you are undefeated), while in SCCR beating a given opponent is worth (approximately) the same amount to every team. As we can see, the win value in SCCR is not identically the same because the outcome adjusts the NAWs of schedule for all teams (specifically, California beating Ohio decreases Ohio's NAW by much more than Iowa beating them would). This effect would be diminished if the example was after a complete season, but unfortunately the Colley website only allows for hypothetical games to be added to the current season-in-progress.

About

An iterative method for ranking college football teams (or anything else) based on win/loss outcomes alone. Non-linear weighted wins and losses generate fair rankings that naturally account for signature wins and crushing losses.

Resources

License

Stars

Watchers

Forks

Languages