The ROC tool is fully functional, but it’s still in beta. We encourage all to use it & to provide any feedback to help us to make it even better by sending a Twitter DM to @ContestedCatch with your comments. Thank you!
You can find the ROC here.
The ROC Score, or Receiver Opportunity Composite Score, is designed to be a single metric with which to measure a player’s receiving opportunity.
But, before I elaborate on the “What” & “How” of the ROC Score, let’s look at the “Why”:
I believe there are 3 main tiers of Fantasy Football (FF) players in terms of how they predict future production:
Introductory-level FF players look up baseline production from prior weeks to establish who is “good” & “bad”, then use that to inform their future decisions.
Better FF players look at basic volume & efficiency, in order to judge how sustainable that production was from prior weeks.
Elite FF players broaden the scope of “volume” beyond just targets, to include measures like air yards (AY), Red Zone (RZ) targets, AY share & target share, in order to evaluate opportunity. AY & RZ targets are measures of how valuable those targets are; AY share & target share add context to how much of an offense runs through that player, relative to their teammates. These are some of the key facets of opportunity, which is more important than past production for informing future decisions.
What can separate YOU from the pack is looking beyond production, & instead, diving deeper into opportunity. The latter is much stickier than the former when looking forward, which is what you must always be doing when making FF decisions.
Those that focus on a player’s rank are focusing on past production — you should, instead, focus on what that player will do, and thus, how they may rank in the future. For instance, saying that “Player X is WR8 right now” is fine, it’s true, but it’s much more important to consider their opportunity during that time, how likely that opportunity is to continue, & how much they over- or under-produced that opportunity, in order to judge what they will do in the coming weeks.
That’s where the ROC comes in.
What is the ROC Score?
The ROC Score is a Contested Catch metric that weights receiver opportunity as both a share of the offense, ie target share and air yard share, and raw volume, ie targets, air yards, and red zone targets, in order to better predict fantasy points in the coming weeks. It is best used as an in-season tool, and can be particularly helpful for identifying buy-low or sell-high candidates. Players who are out-producing their ROC Score would be likely to regress in the coming weeks, while players who are under-performing their ROC Score are likely to see a bounce in fantasy production.
Let’s look at an example:
Player X was the WR8 through 8 weeks in 2019.
Based on that alone, you’d think they were worth a WR1 price, right?
That’s what novice players may think.
Let’s look closer at the opportunity of Player X, compared to Player Y, who was WR9 through 8 weeks:
Player X (top) vs Player Y, Wks 1-8, 0.5 PPR Scoring:

Everything that’s a part of opportunity shows that Player Y has a significantly better chance of producing high-end numbers in the 2nd half of the season. Player X may be “good” but opportunity matters — it’s the underlying driver of fantasy production, in addition to their raw ability. Here’s why we must dig deeper in opportunity so as to better predict future production:
Player X (bottom) vs Player Y, Wks 9-16, 0.5 PPR Scoring:

Player Y was the WR7 during the 2nd half, while Player X was WR23.
Let’s lift the curtain now.
Player X is Amari Cooper.
Player Y is DeAndre Hopkins.
This isn’t a perfect example, because Cooper was fighting through lower body injuries during the 2nd half of the season, which certainly hurt his ability to produce. Also, as I’ll discuss, the ROC is meant to be used in a 3-5 game sample — perfect for evaluating buys and sells during the season. So these 8 game samples are a bit long. But, the point remains:
Through 8 weeks, Hopkins was 3rd amongst WRs in ROC Score, while Cooper was 22nd.
In the 2nd half, Hopkins was 5th in ROC Score, while Cooper was… 22nd.
I hope, at least from this example, you can see how important it is to consider opportunity as a primary way of evaluating FF prospects. Production is looking back; opportunity is how we look forward.
Now that you’ve seen an example, here’s a little more detail on the ROC:
ROC Scores are out of 100 based on the distribution of 4 game ROC Scores, but over shorter samples, scores can exceed this scale. We recommend using the ROC Score over a 3-5 week sample to identify players whose receiving production is not aligned with their opportunities. The ROC Score was developed using play-by-play data available from the nflfastR package.
After this explanation, I hope you have a better idea of what the ROC is and how to use it, but it’s important to understand what our ROC Score doesn’t do, too. The ROC Score doesn’t:
- Take injuries or missed games into account – players that miss games will have lower ROC scores. If you wish to see the ROC Score for an individual receiver in the games they played, you can filter out the missed weeks in the window at the top of the tool’s screen.
- Differentiate between positions – Wide Receivers, Tight Ends, and Running Backs are all treated equally. But because RBs frequently have negative Air Yard targets, this can down weight their ROC score. Because of this, we only show WRs and TEs in the Over/Under Producer tables.
- Look at defenses faced or upcoming.
- Consider rushing production or scoring.
- Account for trades.
With all this said, it’s clear that the ROC isn’t the full picture — rather, it’s a way to consolidate various measures of receiving opportunity into one number, in order to compare a player’s opportunity to others. Then — this is where you come in — context is added to fill in the rest of the picture.
While the ROC Score is best used for in-season analysis, the ROC tool as a whole can be applied more broadly to better quantify changes in situation, in order to sift through narrative & figure out what the numbers say.
Over- & Under- Producers Using the ROC Score
One of the main use cases for the ROC is to analyze a player’s production & how well that matches up with their opportunity. The ROC does this for you, by showing the top over- & under-producers. These are effectively “Buys” & “Sells”. Buy low on players with good opportunity, whose production hasn’t caught up yet. Sell high on players that are far out-producing their opportunity, before they regress and their value depresses.
A few notes:
We’ve excluded RBs from these lists, as their propensity to incur negative AY & high RAC leads the tool to believe that their production is unsustainable. In cases like Austin Ekeler, who dominated as a receiver in 2019, this may be the case — he’s likely to regress in efficiency & scoring despite being a baller. But, it’s also just a reality of how RBs are used in the passing game. Having multiple RBs in the Over-Producers table won’t help you when we know their usage is different from other pass-catchers, and a majority of their fantasy value is derived from the run game.
Along this same vein, players that dominate in RAC, such as Cooper Kupp & Chris Godwin, will show up frequently as over-producers. RAC ability is to be sought after, as it is likely easier to maintain solid RAC production than to, say, continue catching deep balls. However, players with huge RAC production are likely going to regress. We saw that with both Kupp & Godwin in the 2nd half. Other factors were at play, with Godwin seeing similar target volume but fewer AY & TDs, while Kupp saw a stark decrease in volume & efficiency.
Generally speaking, good players command more opportunity, and opportunity begets production. While there may be some players who consistently over- or under-perform their opportunity throughout a season, most players will see their production regress to be more in line with historic production of similar opportunity score. Using Chris Godwin’s as an example, he still very much out-produced his opportunity, which fell from the 3rd overall ROC Score in weeks 1-8 to 33rd overall in weeks 9-14 (season ended due to injury), but only fell from 3rd in points to 5th. He’s very #good at the game & it’s reasonable to expect him to out-produce his opportunity going forward.
What’s Next?
Time for you to go use it! Take a look at this season’s data so far, or mess around with last season’s data if you’re curious.
A few weeks into the season, we’ll have weekly content discussing results from the ROC, including Buys & Sells, plus identifying ROC Stars: players that dominate opportunity!
Summary
If you’ve read this far, I hope you can see the value in the ROC Score & this tool. It’s a concise way to measure & compare a player’s opportunity to others. Add in the context of the player’s situation, and we can use the ROC as an effective tool to identify buys & sells, and more. Looking at opportunity in this way will help you gain an advantage over other FF players by better informing your analysis of the past & make better decisions going forward.
As always, please let us know what you think, how we can help you & if you have any feedback about the ROC by sending a DM to @ContestedCatch.
If you love the ROC: Please consider sharing — I know, it’ll suck to give away an edge to your league mates! — via Twitter & the like. I’d love for the ROC to become a tool used by FF players all over to improve their analysis & decision making. We can only do that by getting this tool out there for others.
Best of luck!
-Will Lever