Elo & You: How This Rating System Affects Fantasy Football
I love to play chess, despite not being very good.*
A nice aspect about chess is that ratings are closely tracked. Every player has a rating that indicates their strength, and after every game that rating is updated. Specifically, these ratings are adjusted according to the Elo system. Named after Arpad Elo, this forms the bedrock of modern chess rankings. You might have even spotted Elo in famous flicks like The Social Network!
Elo has risen to heights beyond chess: it pumps out rankings for all sorts of tournaments and competitions, including for all of the major sports. The prominent analytics website 538 leverages an Elo approach for many of its predictions and, in this article, we’re going to dive into how that approach can impact fantasy. If you’re interested in reading more about Elo in fantasy, PFF also incorporates the metric; I’ll be referencing Elo a lot this year, so it’s good to understand the fundamentals. All data, unless otherwise specified, is from nflfastR.
How does Elo work?
As alluded to above, Elo is a dynamic rating system that works to identify player/team strength at a specific time. At a high level, every team enters every game with an Elo rating. This rating is just a number (usually between 1000 to 2000), with a higher number representing a stronger team. After the game, depending on what occurred, the ratings of the two teams are updated.
This ‘updating’ is the crux of what makes Elo work. Naturally, the team that wins gets a bump in Elo, and the team that loses sees their ranking fall. How much those rankings adjust depend mainly on (1) the team strengths and (2) the point differential.
First, let’s talk about team strength. Put simply, you earn a lot of Elo for beating teams much better than you, but don’t earn a lot of Elo for beating teams much worse (and vice versa). Let’s think of a specific example. Imagine the Super Bowl Champion Los Angeles Rams, with an Elo of 2000, played the hapless Jacksonville Jaguars, with an Elo of 1000. If the Rams win, we would increase their Elo, but not by much (similar with the Jags: their Elo would go down a bit). We didn’t learn much from this game: the Rams were supposed to beat the Jags, and we shouldn’t change our opinion all that much. In this case, we might see the new Rams Elo be 2010 and the new Jags Elo be 990.
However, if the Jags beat the Rams, we would have a big Elo shakeup. This makes sense: something very surprising happened, so we have to update our rankings accordingly. The Jags are either far better than we thought, or the Rams far worse (or a bit of both). The new ratings might be 1800 for the Rams and 1200 for the Jags, way larger moves than in the other case.
Second, point differential matters. Simply put, if you blow out a team (or get blown out) you are going to earn more Elo points than if you won by a single point. This, again, is intuitive: if a team wins by a ton of points in convincing fashion, this is a strong signal of their team quality and their rating should be updated accordingly.
These two factors, along with a couple of other parameters, define the updating process for Elo. There are many variations to this calculation and, as mentioned above, we’ll be using the 538 approach as a jumping-off template; you can get all you need about the actual Elo formula here. We will use this formula with a couple of tweaks, which you can read below.**
How can Elo work for fantasy?
Traditionally, Elo is used for standard sports. Two teams play, they each score some points, and one team wins. In this setting, we want to be focused on individual players, which is what fantasy football is all about!
To do this, we will define the ‘matchups’ as an individual player (RB, in this article) vs. a team defense in a single game. The player ‘wins’ if he scores more than the average RB Half PPR fantasy points (8.0), and the team defense ‘wins’ if the RB scores lower than that 8.0 mark. The ‘point differential’ is just the score over/under that 8.0 mark; so, if an RB scores 15 points, we say he ‘beat the defense by 7.0 points’.
With this matchup paradigm and the formula from above, we can get Elo rankings for running backs and rushing defenses over time. We assume that every player and team starts with an initial Elo of 1200 and update from there.
Why is Elo useful for fantasy?
Before we get to the gravy (some actual Elo rankings), let’s take a minute to reflect on why this might be an important metric for fantasy football. Specifically, fantasy managers are constantly trying to gauge player/defense value, strength and form. It’s crucial mid-season to know which RBs to trust or not trust, and which defenses to avoid or target. Elo helps us with these exercises in a couple of ways:
- Automatic strength of schedule adjustments: you wouldn’t want to bet all your chips on a player that just dominated some shoddy run defenses, nor would you want to fade a great player that just faced really tough matchups. This is also true on the defensive side: perhaps a run defense looks susceptible on paper, but only because they just faced a murderer’s row of top RBs. Elo takes into account these performances vs. expectation and works to isolate a true signal of player or defense quality.
- Steady as she goes: as we will see, Elo rankings are slow to update. They won’t immediately crown an RB who ripped off a couple of great weeks; it takes a long track record of quality performance to earn a top rating. Similarly, they won’t flake on an elite player just because of a couple of busts (although, if the busts continue, that rating will certainly tank). One great example is Rashaad Penny, an unlikely league-winner at the end of the 2021 season. While he increased his Elo rating significantly (230 points from Week 13 on) the model still rates him at just above average (1271). While it was an impressive stretch, and Penny’s stock should reflect that, Elo doesn’t allow things to get out of control.
- Predictive power: More on this in a future article, but it stands to reason that a great predictor of future Elo is past Elo.
Without further ado, let’s look at some of the results…
Here are the Elo rankings for all of the ‘elite’ RBs – players who have hit 1500+ Elo – in the past three years. Again, think of this as a signal of that player’s fantasy quality at a specific moment in time.
There are a couple of interesting takeaways here. First, the elite (top 2-3) at the position aren’t consistent over each year. Christian McCaffrey and Ezekiel Elliott are atop the pile in 2019, then Dalvin Cook and Alvin Kamara in 2020, and finally Austin Ekeler and Jonathan Taylor in 2021. Second, notice that these Elo rankings aren’t one-to-one with fantasy rankings: for example, Dalvin Cook was not the highest scoring fantasy player in 2020, but he had the highest Elo. Again, this is because of baked in ‘opponent strength’. Over the last few games of the 2020 season, Dalvin faced the New Orleans Saints, Tampa Bay Buccaneers and Chicago Bears, all tough sledding as far as run defenses go.
Finally – most disappointingly – we see how swift the fallout can be. In 2021, David Johnson and Le’Veon Bell, previously alpha dogs at the position, fell to below 1100 Elo, or well below the average RB strength. This is no real surprise (you can read fellow writer Marvin Elequin’s deep dive into the ‘Life Cycles‘ of RBs), but it’s sobering for forward-loking projections on top RBs.
You can back this out from the charts, but here are the top Elo RBs in this period, both in terms of peak rating and number of days above the elite 1500 mark:
Unsurprisingly, CMC comes in at the best single-week Elo rating of the past decade: he was absolutely unstoppable during his record-breaking 2019 campaign. That season was so strong that his Elo still hovers around 1450 two years later, and he’s the 1.01 or 1.02 in redraft leagues.
LeSean ‘Shady’ McCoy comes in with the most weeks above 1500 Elo at 47, with Le’Veon Bell and Ezekiel Elliott making the podium. This makes sense: all three players were dominant for long stretches, and their slow-moving Elo rankings stayed above 1500. Remember, 47 games (LeSean McCoy‘s mark) is still less than three full seasons.
A huge surprise on this list is Derrick Henry, who has just 14 games in the ‘elite Elo zone’. There are a couple of factors at play here. Again, Elo is slow-moving, so it takes a while for the ranking to breach 1500. When it finally did for King Henry, he didn’t stay healthy long enough to get some real accumulation. He will come into this season with a high Elo rating (likely above 1500) and should add significantly to his total in the 1500+ zone.
We can take one final look at Elo rankings for rush defenses, both for the good and the bad. The peak defenses, unsurprisingly, feature a lot of Pittsburgh and Baltimore; what’s more, the best defenses are almost a thing of the past (no top defensive performance since 2016). This gels with the modern, aggressive, high-scoring NFL.
On the flip side, the ‘worst’ run defenses are hilarious: the 2021 New York Jets, who’s 2013 unit was among the best, absolutely dominate the chart. In case you didn’t hear, it was a good idea to start running backs against the Jets last year!
Hopefully this walkthrough of Elo made sense. I plan to use the rating system frequently in-season to get a gauge of player/defense strength, which should be useful for start/sit and trade decisions. Stay tuned for Elo articles on positions other than RB and what it means for fantasy. As always, let me know what you think on Twitter.
*In fact, I have a couple of standing games going with some great members of the #FootClan; hit me up if you ever want a game.
**The formula from 538 is:
elo_new = elo_i + k * m * (s – mu)
m = (log(abs(pd) + 1) * 2.2) / (.001 * (elo_win – elo_lose) + 2.2)
mu = 1 / (1 + 10 ^ ((elo_j – elo_i) / 400))
s = 1 if win, 0 if loss
elo_i = player/team Elo
elo_j = opponent Elo
elo_win = Elo of winning team/player
elo_lose = Elo of losing team/player
I’m using a higher value of K (30) so that the ratings move around a bit more and we see more spread in the data. Further, while I’m using the same cross-year adjustment for players (revert back to the initial Elo by 1/3) I make this adjustment much more extreme for team defenses (almost back to the starting Elo). I think this is intuitive: while RB quality changes a bit between seasons, team rushing defense quality can change a lot, since it consists of multiple players, multiple coach schemes, etc.