# Yet Another CBB Rating System

It’s here! March Madness, that time of year where we all try to predict how a bunch of 20-year-olds playing a game filled with randomness will perform. It’s fun! But we sure don’t bet real money on it, cause that would be illegal!

Actually guys, it’s not as much fun for me again this year, because, for the 3rd consecutive season, my team was not invited to keep playing. Someone please fix this. Sigh…

Anyway, this year I decided to build my own quantitative rating and prediction system to help me fill out my bracket. Here’s how my system works:

I define a numeric rating, R(i), for each team i. I also define the probability of team i defeating team j on a neutral court as

P(i->j) = R(i) / (R(i) + R(j)).

I then create a cost function, defined over all games played during the season, which is the sum over

[P(i->j) – GP(i->j)]^2,

where GP(i->j) is an estimated game probability that depends only on the result of each individual game. The GP probability value for each game must be provided as an input to the algorithm.

Of course, coming up with a good value for GP(i->j) is tricky, since we only have one occurrence (one result) for each game. The simplest method for determining GP(i->j) is to assign 100% probability if team i defeated team j, and 0% otherwise. But this ignores home/away, so it’s not ideal.

For my system, I decided to build a model based on the home/away adjusted margin of victory for the game. If team i wins by a large margin, P(i->j) will be close to 100%, but if it’s a close game, the value will be closer to 50%. (The home/away factor adjusts the margin in favor of the road team by 3.5 points)

To compute the final ratings for all teams, I initialize all teams with an equal rating (1.0) and perform an iterative optimization that minimizes the overall cost function with respect to the ratings. I use gradient descent as the optimization procedure.

Below, I list my ratings for the top 100 teams in division 1. (My Marquette Golden Eagles just managed to sneak in at #99, woo!). Note that the value of a team’s rating carries no particular meaning by itself – it’s only useful when compared to the other team ratings.

 Rank Team Rating 1 Kansas 8.779 2 Michigan St 8.317 3 North Carolina 8.174 4 Villanova 7.717 5 West Virginia 7.504 6 Virginia 7.149 7 Louisville 6.637 8 Oklahoma 6.602 9 Purdue 6.035 10 Kentucky 5.737 11 Duke 5.483 12 Arizona 5.342 13 Xavier 5.200 14 Miami FL 5.199 15 Oregon 5.151 16 Indiana 5.136 17 Iowa St 4.919 18 Texas A&M 4.802 19 Baylor 4.700 20 Maryland 4.601 21 SMU 4.514 22 Utah 4.400 23 Iowa 4.390 24 California 4.266 25 Vanderbilt 4.246 26 Wichita St 3.983 27 Gonzaga 3.842 28 Connecticut 3.827 29 Pittsburgh 3.552 30 Butler 3.543 31 Seton Hall 3.538 32 VA Commonwealth 3.531 33 Notre Dame 3.496 34 Texas 3.487 35 USC 3.465 36 Cincinnati 3.444 37 Florida 3.443 38 St Mary’s CA 3.221 39 Creighton 3.182 40 South Carolina 3.154 41 Kansas St 3.117 42 Michigan 3.107 43 Syracuse 3.057 44 Texas Tech 2.990 45 Colorado 2.969 46 Wisconsin 2.953 47 St Joseph’s PA 2.882 48 Washington 2.825 49 Florida St 2.791 50 Valparaiso 2.700 51 Dayton 2.682 52 Yale 2.671 53 SF Austin 2.620 54 Oregon St 2.617 55 Georgia Tech 2.589 56 Clemson 2.589 57 Providence 2.559 58 Northwestern 2.529 59 Ohio St 2.515 60 Georgia 2.467 61 Hawaii 2.400 62 San Diego St 2.388 63 BYU 2.353 64 Arkansas 2.330 65 UCLA 2.309 66 Tulsa 2.297 67 G Washington 2.284 68 Virginia Tech 2.209 69 Arizona St 2.182 70 Georgetown 2.167 71 Houston 2.114 72 Ark Little Rock 2.110 73 Rhode Island 2.089 74 Nebraska 2.072 75 UC Irvine 2.046 76 Mississippi 2.045 77 Stanford 2.029 78 LSU 2.023 79 Princeton 2.012 80 NC State 2.006 81 Memphis 2.003 82 Monmouth NJ 1.994 83 Evansville 1.949 84 Alabama 1.925 85 St Bonaventure 1.921 86 UNC Wilmington 1.896 87 Richmond 1.896 88 S Dakota St 1.887 89 Temple 1.884 90 Mississippi St 1.881 91 Stony Brook 1.806 92 Oklahoma St 1.794 93 Akron 1.787 94 Tennessee 1.764 95 Davidson 1.751 96 William & Mary 1.749 97 Santa Barbara 1.732 98 James Madison 1.731 99 Marquette 1.727 100 Iona 1.674