TL;DR: I use a table for True Wins based on the final score of each game. These “true wins” reflect how a team has performed on the field. Then, I adjust for strength of schedule.
I have been releasing Power Rankings each week and some people think they are inaccurate. Well, they are mathematically calculated and accomplish exactly what I designed them to accomplish. That is, I wanted to see exactly how each team has been performing so far this season. Since the teams are on the field to win the game, I decided to design the formula around the goal of winning the game. In short, stats like turnovers, total offense, total defense, etc. aren’t used at all. While they are a part of the game they don’t determine in the end who wins; the score does. If 3rd down efficiency and yards per play truly have an effect on the game, it will show up in the score. The coaches, players, and fans only care about final score. So, from now on, I do too.
I’ll start by typing out the first formula and then I will explain what each part is.
TEAMx = (OPP1wa*TEAM1win) + (OPP2wa*TEAM2win) + (OPP3wa*TEAM3win) … (OPP16wa*TEAM16win) + (OPP17wa*TEAM17win)
To show you how it looks with an actual team, let’s look at the Vikings first three weeks.
MINx = (JACwa*MIN1win) + (INDwa*MIN2win) + (SFwa*MIN3win) + …
In this formula:
- TEAMx is a number that’s supposed to measure a team’s quality
- OPPwa is the true win average of the opponent (true wins/games played)
- TEAMwin is the number of true wins acquired by the team that week
Now, it is very important to mention that when I talk about true wins, I’m NOT talking about actual wins. I’m talking about true wins. I already made a post on true wins here so I won’t talk about the theory behind them in this post in detail. I will however, show the true wins table:
|Game Score Differential||True Wins|
|Overtime||.5 for each|
|1-3||.6 for winner, .4 for loser|
|4-7||.7 for winner, .3 for loser|
|8||.8 for winner, .2 for loser|
|9+||1 for winner, 0 for loser|
So, if a team wins by 4-7 points, they receive .7 true wins for that week and the loser receives .3 true wins for that week. Again, I very much encourage you to check out my post on true wins before you judge it too much.
Back to our example with the Vikings, their sum really looks like this:
MINx = (JACwa*.5) + (INDwa*.4) + (SFwa*1) + …
(Because the JAC game went to OT, MIN lost to IND by 3, and MIN beat SF by 11).
Jacksonville has played 7 games and acquired 1.7 true wins, so JACwa = (1.7/7) = 0.24.
Indianapolis has played 7 games and acquired 2.7 true wins, so INDwa = (2.7/7) = 0.39.
San Francisco has played 8 games and acquired 5.3 true wins, so SFwa= (5.3/8) = 0.66.
Now, obviously to find MINx, we would have to do this for each of the eight weeks that have been played. Similarly, we can find every other TEAMx.
This “TEAMx” stat is what I used to do the Power Rankings for the first six or seven weeks. However, I have since started to move away from it. The problem is it uses true win average as a “base stat” for a team’s quality. This mean a team is rewarded more for beating a team like San Diego (SDwa=.5) than Dallas (DALwa=.4). This is a problem because it doesn’t take their strength of schedule into account. San Diego has played Oakland, Tennessee, Atlanta, Kansas City, New Orleans, Denver, and Cleveland. Their schedule seems not nearly as difficult as Dallas’: New York Giants (x2), Seattle, TampaBay, Chicago, Baltimore, Carolina. Using the TEAMx stat we can confirm that Dallas has actually been the better team so far this year. DALxa =.227 while SDxa = .139 (where TEAMxa = TEAMx/games played. This is necessary so that bye weeks don’t skew the results).
Anyway, Dallas clearly looks like the better team and thus a team that beats them should be rewarded more than a team that beats San Diego. What’s the solution? Now that we have the TEAMxa stat, let’s use that in place of TEAMwa of the original formula:
TEAMxx = (OPP1xa*TEAM1win) + (OPP2xa*TEAM2win) + (OPP3xa*TEAM3win) …
I call this TEAMxx (I’m not very creative in my names for stats). To rank the teams fairly, we still need to divide TEAMxx by games played to get TEAMxxa. Then we can sort teams in order of their XXA stat to receive power rankings.
For the last couple weeks of my rankings, I averaged a team’s position between the XA rankings and the XXA rankings to find their position. From now on, I am just going to use the XXA rankings. The problem with the XXA rankings is they look really odd when the sample size is too small (St. Louis was #2 after week 5). As the sample size grows, the XXA has adjusted and now shows which teams are better than others effectively.
Now, in order to use any stat for predictions (as I do with the xxa stat), one has to understand any imperfections and problems with it. Here are some problems that I’ve come up with so far:
- Needs a large sample size:
Now, when I mean large sample size, I don’t mean astronomically large. After 100 total NFL games, the rankings already start to take good shape. Each week the rankings look better in my opinion, as do the predictions that come from the rankings. I predict that the xxa stat will be very useful when predicting the last six weeks of the season and the playoffs.
- I haven’t corrected for everything:
Ideally, I should be correcting for strength of schedule a tad. For instance, the Atlanta Falcons have the highest win average in the league (ATLwa=0.8). However, I’m not adjusting for the effect that has on their opponents. When Atlanta beats up on another team, it lowers that team’s win average. But, I’m using that win average as a barometer for how good that team is. In the end, it hurts Atlanta’s XA stat a little bit. In the first few weeks this error is huge. By this point in the season, it is pretty small. By the end of the season, it really won’t even matter. Still, I plan on adjusting for this as soon as I have time to rework my Excel spreadsheet, so let’s look at how I need to do it:
We saw the Vikings first week looks like (JACwa*.5). Instead of using the win average, however, we should use the win average for games not including this week. Instead of JACwa, we should use:
(JACw – JAC1win)/(gp – 1) = JAC1waFIX (JAC’s win avg. fixed for week 1)
JACwa = 0.24. JAC1waFIX = 0.2.
We can see that the Vikings are getting rewarded for going to overtime with Jacksonville a little bit too much. When the fixed stat goes in instead of JACwa, MINx will go down a little.
Hopefully, during the Thursday night game, I will have time to sit at my computer and fix for this. Then I can delete this whole #2 and pretend like it never happened.