College Football Ranking Algorithm

By | December 8, 2010

Ranking college football teams is a major challenge. The official system, the BCS, has resulted in many controversies and much debate. The difficulty arises due to the relatively small number of opponents any given team plays. There are 120 FBS teams, and each team only plays 12 opponents, only around 10% of all possible combinations.

Many have tried to solve this problem with computers by naturally extending a human's ranking approach by taking into account as much information as possible. These models tend to have biases, even if it is inadvertent, as there are usually parts of the model that require combining independent variables with human chosen weights.

I set out to try to create a ranking algorithm that used all the teams wins and losses only, and no other information. The basic idea is that winning or losing a game should be worth a particular amount, based on how good the opposing team is. There are four extreme cases to look at: winning or losing against the best or worst ranked teams. Winning against the best ranked team, or losing to the worst ranked team should have the largest possible effect on the team's rank. Winning against the worst ranked team, or losing to the best ranked team should have the minimum possible effect.

With that premise in mind, here is the algorithm I settled on:

  1. Set every team to a rating of 1.
  2. Create a temporary list of teams, setting all teams to have a rating of 0.
  3. For each team, and for each game played by that team:
    1. If it was a win, add the rating of the opponent to the team's rating in the temporary list or,
    2. if it was a loss, subtract one minus the rating of the opponent.
  4. Normalize the ratings in the temporary list to the maximum rating of 1.
  5. Replace the team list with the temporary team list.
  6. Go to step 2.

The algorithm is iterative to allow teams records to influence even only distantly related teams (by games with common opponents). After a number of iterations, the resulting ratings will converge to a solution (running another iteration will not change the values significantly). In my observation this happened after around 5 iterations, which was far fewer iterations than I expected.

Here are the results for the top 10 after one iteration after the end of the 2010 regular season:

 Rk Team                      W L     Rating
 -- --                       -- --        --
  1 Auburn                   13 0      1.000
  1 Oregon                   12 0      1.000
  1 TCU                      12 0      1.000
  4 Boise St.                11 1      0.924
  4 Nevada                   12 1      0.924
  4 Ohio St.                 11 1      0.924
  7 Michigan St.             11 1      0.917
  7 Stanford                 11 1      0.917
  7 Wisconsin                11 1      0.917
 10 Oklahoma                 11 2      0.859

This is not very interesting, as it is just a simple ranking by overall wins/losses. However, the second iteration becomes more interesting:

 Rk Team                      W L     Rating
 -- --                       -- --        --
  1 Auburn                   13 0      1.000
  2 TCU                      12 0      0.897
  3 Oregon                   12 0      0.892
  4 Oklahoma                 11 2      0.860
  5 Michigan St.             11 1      0.859
  6 Ohio St.                 11 1      0.846
  7 Arkansas                 10 2      0.845
  8 LSU                      10 2      0.843
  9 Boise St.                11 1      0.843
 10 Missouri                 10 2      0.836

Here is an example of what the rating calculation looks like. This is Stanford after the second iteration:

Game                       Opp Rk    Delta
--                             --       --
W Notre Dame                   23    0.677
W Southern California          36    0.582
W Arizona                      46    0.559
W Washington                   56    0.520
W Oregon St.                   61    0.493
W Arizona St.                  65    0.456
W California                   73    0.414
W UCLA                         84    0.348
W Wake Forest                 102    0.249
W Washington St.              108    0.185
L Oregon                        3   -0.108
W Sacramento St.              120    0.000

Stanford's rating on the third iteration will be equal to the sum of the deltas in the above table. The games are sorted by their influence on the team's rating (the delta). As you can see, the loss to Oregon did not matter much, because Oregon's rating is so high. Sacramento St. is not a FBS team, so it is given a rating of 0. Beating a non-FBS team does not matter, but losing to a non-FBS team would be a huge blow to the rating.

Here is the top 25 after the algorithm has converged:

 Rk Team                      W L     Rating
 -- --                       -- --        --
  1 Auburn                   13 0      1.000
  2 Oregon                   12 0      0.931
  3 TCU                      12 0      0.906
  4 Oklahoma                 11 2      0.895
  5 Stanford                 11 1      0.880
  6 Arkansas                 10 2      0.864
  7 Missouri                 10 2      0.863
  8 LSU                      10 2      0.858
  9 Michigan St.             11 1      0.857
 10 Ohio St.                 11 1      0.841
 11 Wisconsin                11 1      0.839
 12 Boise St.                11 1      0.833
 13 Oklahoma St.             10 2      0.830
 14 Texas A&M                 9 3      0.815
 15 Nevada                   12 1      0.802
 16 Nebraska                 10 3      0.780
 17 Alabama                   9 3      0.780
 18 Virginia Tech            11 2      0.776
 19 Utah                     10 2      0.757
 20 South Carolina            9 4      0.750
 21 Florida St.               9 4      0.708
 22 Hawaii                   10 3      0.689
 23 West Virginia             9 3      0.682
 24 Mississippi St.           8 4      0.681
 25 Notre Dame                7 5      0.661

Looks a lot more sane than many voters in human polls!

This algorithm is somewhat similar to Google's PageRank algorithm. Here is a paper that describes PageRank well, and also implements PageRank for ranking NFL teams.

If you want to play around with this algorithm, or just want a starting point for your own ranking algorithm, here is the C# project. The project is designed to parse the CSV files published by the NCAA.

2 thoughts on “College Football Ranking Algorithm

  1. Barry

    I played with this. Using it to rank youth football teams. However, I got some unexpected results. NaN's, Infinity's, etc. The season isn't complete, in fact we're only in week 3. Not sure if that mattered or not. I realize it'll require more games played to have a power rating or ranking system that reflects reality ... but was wondering if the problem might be the fact we're not dealing with a complete season, as in your examples.

    Thanks!

    Reply
    1. Dillon Post author

      Hi Barry, it's been a long time since I've looked at this code, but yes, I believe you are right. The iteration will not converge if the graph of teams/games is not strongly connected. There are ways to modify the data to avoid this problem, but I didn't implement them. The basic idea is to add equally weighted edges everywhere they don't exist. However, this is not easy to implement in my code.

      If I were to write this again today, I would use an adjacency matrix, and just directly compute the limit of the sequence. If you use this formulation, then it's easy to add the missing edges to make it converge, though I don't know how useful the resulting data will be without a strongly connected graph.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *


*