TCUL Ranking System

History

Historically TCUL leagues have used a basic algorithm for ranking teams. This formula used win percentage (games won / games played) with head to head records and score differential being tie breakers. This is would be fine if every team played every other team but alas with our large leagues that isn't possible. On Tuesday we have 24 teams and 8 week regular season. With the growth of the Thursday league we are now at the point of 16 teams and a 10 week regular season (Tuesday has 2 weeks of scrimmage at the start of the season).

Our rankings serve one purpose -- to seed teams into pools for the playoffs. Ranking teams was manual and time consuming which meant we didn't have a way of providing feedback during the season. We often have several teams clustered around the edges of pools and the rankings were not clear cut. It is quite possible that a team with a tough schedule could have a couple of close losses to top teams and find themselves out of the Championship pool. This is compounded in Fall League where the teams are split into pools based on preseason assesements but include cross pool play.

RRI

We decided to come up with a ranking system that would solve as many of these issues as possible. We wanted an algorithm that accounted for strength of schedule. As luck has it, the UPA has an RRI algorithm that is based on college hockey's KRACH algorithm. Details on these can be found at In general, these algorithms take your winning ratio (# of wins/# of losses) times your strength of schedule. The difference between the two, is that a straight KRACH algorithm counts wins and losses as 1's and 0's. With the RRI algorithm, we calculate the win based on the likelihood of winning if the two teams played a rematch. The winning confidence score (WCS) is calculated as follows: If team A wins 15-to-12, then the odds of team A winning any given point are 15/27. This is not the same as the odds of team A being the first to 15 (it is the probability of team A winning a game to 1). Now, for team A to win a rematch by the score of 15-to-x we need 2 things to happen:
  1. team A gets ahead 14-to-x
  2. team A scores the last point
The odds that (1) occurs is given by a binomial distribution (I'm using notation as on a TI-92 calculator, nCr(a,b) is a binomial coefficient):

nCr(14+x,x) * p^14 * (1-p)^x
Here, p is the odds that team A wins a point (p = 15/27 in the example above). The odds that (2) occurs is simply p. So, the odds that team A wins 15-to-x is (multiply the probabilities of (1) and (2)):

nCr(14+x,x) * p^15 * (1-p)^x

Now, the odds that team A wins a rematch is the sum of the odds of team A winning 15-to-0, 15-to-1, ..., 15-to-14 which is:

sum(nCr(14+i,i) * p^15 * (1-p)^i,i,0,14)

Here is a table of team A's odds of winning a rematch given first game scores of 15-to-x.

B's scoreprobability A wins rematch
01.00000
11.00000
21.00000
30.99998
40.99974
50.99822
60.99280
70.97961
80.95483
90.91620
100.86379
110.79974
120.72755
130.65117
140.57431
150.50000

Does it Work?

We tested both of these algorithms during the 2006 Winter League. Please notice that RRI and KRACH methods give somewhat different rankings. In the Winter Rec League for example, the top two seeds are inverted. The RRI method ranked Huzzah over Reproduction Overdrive despite Reproduction Overdrive having an unblemished record including a win over Huzzah. Why was this? The first key is that when these two teams played the game was decided by a single point. In the RRI method, this gives each team about 1/2 a win. A rematch would be a toss up. The KRACH method penalizes the loser of the close game. The other key indicator is the strength of schedule -- with Huzzah playing the tougher schedule. In spite of the tougher schedule, Huzzah also had a higher scoring percentage (points for/points against). Going into the playoffs, it seemed like the RRI method gave truer results overall and this was born true when Huzzah beat ROD in the finals rather convincingly.

Interpretations

When interpreting RRI rankings, you need to keep a few things in mind:
  1. Early in the season, the rankings may not be all that meaningful. It takes some times to build connections between all teams (i.e. A is connected to their opponents, their opponnents' opponnents, etc)
  2. If a league plays strictly within a pool, cross pool rankings are meaningless as there are no connections between pools.
  3. Rankings go up and down not just based on your team's performance but also based on the subsequent performance of teams you've already played.
  4. You can be unbeaten and still be ranked lower than someone you've beaten
If you have any questions regarding rankings or if you are a statistics geek and would like to help validate our interpretation of the RRI and KRACH algorithms, please contact tcul@mnultimate.org