Graph Rating Methodology

A more in depth description will be available eventually. Until then, this dense description will act as a placeholder.

First, a weighted directed graph of the league is created. Each node in the graph corresponds to a team in the league. Teams that have played each other are connected by an edge with a weight equal to the teams' head-to-head point differential. Note, if there is an edge pointing from team A to team B with weight w, then there is also an edge pointing from team B to team A with weight -w.

Next, distances between each pair of teams are calculated using the graph by averaging the path weights of all paths of length s connecting a pair of teams. The path length s is chosen so that all teams are connected by at least one path, but computation time increases exponentially with s, so there is a practical limit on s.

Finally, the distances between every pair of teams are used to generate a rating for each team. Multiple options have been considered to use these distances to generate rating such as taking an average distance from a reference for each team or multidimensional scaling. Currently an average is used. The expected margin of victory between two teams playing head to head can be estimated as the difference between the teams' ratings.

The code for generating the graph and calculating the distances between teams can be seen here