Players Who POP: A New Method for Predicting Fantasy Football Scoring
Welcome to Players Who POP. In this multi-part series, I’ll dissect how I came up with a brand new methodology for predicting fantasy scoring with a major emphasis on team strength. In the process, I’ll introduce a brand new half-PPR expected fantasy points metric, nicknamed POP, that was derived using machine learning which can be used to identify players that stand out (ehr, pop) in each tier of current fantasy drafts.
This article goes into the methodology of building the model, and it gets into the proverbial weeds from a data science perspective. If that’s not your jam, not to worry. I’ll give you a brief preview of some of the model’s most interesting findings as a sneak peak. Then in the weeks to come, I’ll show how we can use POP to identify possibly under or overvalued players in your upcoming drafts.
Football Changes but Fantasy Remains the Same
Fantasy football has changed a lot over the years. From era to era, strategies ebb and flow alongside the outstanding players and popular play-calling strategies of the day. But there are some constants we can rely on heading into each season. We know team strengths will vary, sometimes drastically, from the previous season. We know that the most productive players will change. We know that we know very little (see my last article for a brief philosophical turn on the subject).
These truths have led to diverging strategic approaches to predicting fantasy football. Some lean on their immense knowledge of football itself – the coaches, players, and their tendencies – while others lean heavily on their spreadsheets and an endless array of analytics. Most of us, however, find ourselves somewhere in between, balancing both schools of thought as best we can while we carve out the best tiers and ranking possible for our specific league (made as easy as ever with the 2024 Ultimate Draft Kit).
I’ll admit, in the past, particularly when it comes to finding misvalued flex players each season, I’ve been closer to the typical “spreadsheet warrior.” At times in my fantasy football life, I’ve been the one fiendishly collecting metrics and perfecting my conditional formatting, thinking I’d be the first to discover some holy grail metric that fundamentally shifts how we predict running backs, receivers, and tight ends, and change the face of this wonderful game forever.
I’ve since been greatly humbled. My strategies, like others’, have changed over time and can now be succinctly summarized by the infamous meme below:

“… Just Use Fantasy Points.”
That’s a phrase any analyst who’s spent significant time trying to predict future fantasy scoring will quip to you. Intuitively, the best preseason predictor of a flex player’s fantasy points per game the following season is, anticlimactically, fantasy points per game last season. And it’s not even close (more on that in the model derivation section below). High-quality projection data, like the projections offered by the UDK, can get us even closer to predicting what will happen in the next season. But to create a machine learning model predicting next-season fantasy points, it would be considered ridiculous to omit previous-season fantasy points as a primary input.
Apparently I didn’t get the memo.
This offseason, I set out to create a statistical model that effectively predicted fantasy points per game but de-emphasized previous season fantasy scoring. The exercise hoped to create a worthwhile metric possibly capable of picking up on different signals than a simple linear model would on its own. My hunch was that some weighted combination of player volume and team strength could help get us there. My trials and tribulations in creating the metric itself are described in the sections below, but the result of the process is previous opportunity-based projection – or POP for short. POP is derived from a machine-learning model, called a random forest, that has been optimized to predict future fantasy points per game. The model maintains decent interpretability (as it ultimately relies on the interplay of just two metrics). And, as the exercise dictated, the model forgoes utilizing previous season fantasy scoring, yet achieves comparable levels of efficacy to simpler models.
Players Who POP: Sneak Peak

While I’ll spend significant time in future posts parsing through multiple zones of current fantasy drafts and identifying possibly mispriced players throughout, here’s a sneak peek of some of the most interesting model results compared to average draft position (ADP).
Note: ADP is from July 26, 2024, on Underdog
Kyren Williams (FLEX ADP: 29th | POP Score: 2nd)
There will certainly be more words written about Williams when covering the top rounds. All I’ll reveal now is this: I believe Williams is the most misvalued running back in the first five rounds of fantasy drafts. The model doesn’t know about the team’s selection of Blake Corum, sure, but those fading Williams better hope they’re right about pushing Williams outside the first two rounds of fantasy drafts because of a late day-two rookie.
DeVonta Smith (FLEX ADP: 25th | POP Rank: 95th)
I’m a massive fan of Smith heading into his fourth season, and players who break out in the way Smith has over the last two seasons typically have fantastic career trajectories. But Smith truthers should hope the Eagles’ new offensive coordinator, Kellen Moore, has a better plan to get Smith more consistently involved in 2024. Smith had a strong finish to the season in fantasy scoring, but it wasn’t due to an influx of opportunity. He had five targets or fewer in three of his last five games of 2023 including the playoffs. Incidentally, he tied his career high with 12 targets in the team’s wild-card round loss to Tampa Bay.
Joshua Palmer (FLEX ADP: 100th | POP Rank: 48th)
The Chargers’ new head coach, Jim Harbaugh, and offensive coordinator, Greg Roman, are going to run the ball. We know this. But that doesn’t mean quarterback Justin Herbert, who ranked top-five in QBR and expected fantasy points per game, is suddenly going to stop throwing entirely. It’s extremely rare that we get a possible number-one option for a historically efficient quarterback (on a team that is projected by Vegas to be at least moderately successful) in the double-digit rounds of fantasy drafts, yet that’s very much in the range of outcomes for Palmer.
Deriving POP Score
We’re going to be nerding out pretty hard from here on out, but I’ll make sure to keep things explainable enough. Stick with me, it’s worth it. But in case things like “hyperparameter tuning” and “comparing r-squareds” aren’t your idea of fun, I’ll try to be succinct in describing the need for a unique expected points methodology, how POP score came to be, and add some pretty charts along the way.
As stated above, the best predictor of future fantasy points per game is previous fantasy points per game. A regression analysis on a dataset that included dozens of metrics for every qualifying flex player since 2011* (over 2,200 players and over 69,000 player games) shows that the coefficient of determination (r-squared) of fantasy points per game from one season to the next is 0.59. That means 59% of a player’s fantasy points per game can be explained by that singular metric.
*Qualifying threshold: 50 total expected fantasy points
This is actually somewhat comforting! It means that every other possibly meaningful factor about fantasy football – be it quarterback changes, coaching decisions, touchdown variability, or even the weather – when combined, all of those factors wouldn’t be as important as the players’ previous fantasy scoring, at least according to the model. If we need “one metric to rule them all” as you prepare for drafts, this (alongside a good set of projected fantasy points, of course) is your king. But it’s nowhere near perfect, either. Many intelligent analysts have recognized this previously. There have been several high-quality attempts to narrow down fantasy points into a more predictive opportunity metric. The various expected fantasy points models and Mike Clay’s oFP are examples. In turn, a bevy of fantasy “buy-low” models sprouted, seeking to indicate players who’ve drifted furthest from the model’s prediction, and discussing their candidacy for regression.
So, Why a New Expected Points Model?
While it’s true using fantasy points alone to predict performance is both intuitive and explainable, it has several obvious flaws. The most glaring issue is that the model has no consideration whatsoever of team factors. And, maybe less intuitively, it doesn’t account for the fact that football production is made up of two primary factors: opportunity and efficiency. Especially for running backs, wide receivers, and tight ends (quarterbacks are a bit more complicated), myriad previous research indicates individual opportunity metrics are much more predictive year-over-year than efficiency metrics.
It would likely be effective, then, to deconstruct fantasy scoring into its requisite parts. While it might not be quite as predictive as the simple linear model described above, at the very least we can effectively weigh a player’s (more predictive) opportunity factors over the (more random) efficiency metrics. If this is the case, a simple linear model is no longer appropriate, so I sought out a different, more effective methodology. After significant backtesting and statistical rigor, a new metric was born: previous opportunity-based projection, or POP.
Model Methodology: In Order to POP, One Must First Stack
A popular concept in machine learning called “stacking” (apt for use with fantasy football, I’d say) involves utilizing one model’s predictions as an input for another predictive model. Thanks to incredible work within the NFL data community, gaining access to clean, expansive NFL player data has never been easier, and with the nflreadr package, we now have access to a series of “sub-model” predictions that we can use when creating our own predictive metric:
- Expected Rushing/Receiving Yards
- Expected Receptions
- Expected Rushing/Receiving Touchdowns
- Expected 2Pt Conversions
Interestingly enough, stacking has already been used to derive some of the metrics above. For instance: expected receiving yards are partially derived from expected air yards and expected yards after catch models, further validating this methodology in creating our POP metric.
From there, one could simply cross-reference the metrics above with their league scoring settings, and voila: we’ve derived our very own version of expected fantasy points. Instead, though, I borrowed a methodology from 4for4’s Kevin Zatloukal, where he showed how “over-parameterized” random forest models can be surprisingly effective. Significant time was spent on feature engineering with particular care given to the inclusion of team strength and team-based expectation metrics, ensuring models had the ability to adjust predictions based on a variety of team factors during training. Again, I challenged myself not to use a player’s fantasy points at all (as we already know that would be the largest predictor of future scoring in any model we design) and took great strides to avoid data leakage, which can be a major problem in sports analytics and machine learning in general.
Similar to Zatloukal, after paring down metrics with high collinearity, and then narrowing the model down to the dozen most predictive metrics, I tried an iterative approach, testing every combination of two metrics to see if the model lost significant predictive performance. Luckily it did not. The two best-performing metrics for predicting player fantasy points per game were share of team expected fantasy points and more surprisingly, teammate fantasy points per game (in games the player was active). Exciting! Right away, this passes the smell test: this model (unlike a simple model) knows that team strength – measured in teammate fantasy production – does in fact play a factor in an individual’s fantasy success, albeit at roughly one-third the importance of a player’s opportunity according to variable importance tests.
An important note. When the above model uses expected fantasy points share as a single metric, we’re specifically stacking all of the sub-models mentioned above. We are not using a preexisting expected fantasy points metrics like the one expertly analyzed in our Expectation Report series. In our case, it’s essentially a uniquely weighted volume metric.
Model Statistics:
The (11185-tree) random forest model was tuned using five-fold cross-validation and achieved a mean average error of 2.4 and an r2 of 0.42 on out-of-sample data, comparable (albeit slightly under) to the predictive power of the linear model.

Here is a visualization of the predictions of the final random forest model:

We can see several clear “cut-offs” identified by the model. Players whose teammates score 50 fantasy points or fewer tend to have trouble breaking past 16 (half-PPR) fantasy points per game. Meanwhile, as a player’s share of the team’s expected fantasy points per game exceeds 20%, it’s hard for the player not to crest a POP score north of 19. We’ll investigate some of the model’s nuances more closely as this series progresses.
What’s Next
We’ll dig into each zone of average draft position, looking at key discrepancies in a player’s POP score rank and their average draft position. There will be players where projections and draft position are able to consider factors the model cannot, but the analysis remains worthwhile nonetheless.
Because how else are we supposed to find the good players on good teams, by watching the games?
Don’t be ridiculous.


Comments
Great info! Keep it coming