What is XFP?
Fantasy production is driven by opportunity and execution. XFP (Expected Fantasy Points) is a reflection of the fantasy points a player would end up with on average, given the opportunity they received, independent of the outcome. We use statistical modeling in order to quantify this opportunity, using things like the yard line of the play, whether it was a run or pass, depth of target, etc. By summing play-level predictions, we can measure a player's expected production over a game, season, or career. The core insight: XFP isolates opportunity quality, allowing us to identify players who are getting good usage but have been unlucky (positive regression candidates) or those riding unsustainable efficiency (negative regression candidates). By supplementing a player's XFP and FP history with advanced stats, we can better calibrate our expectations for a player in the coming season.
What is Adj GP?
Adj GP (Adjusted Games Played) accounts for partial games due to injury or rest. Take for example a situation that's common in the NFL: a QB only plays one quarter in a meaningless week 18 game, or a receiver gets benched for bad behavior halfway through a game. If trying to get a gauge on their true fantasy value over the course of the season, and their true usage over the course of a season, only considering "active" status isn't the best way to capture it. By only considering quarters where the player played at least 1 snap, we can cut through some of the noise of raw game counts. Why do we do it? Well, the proof is in the pudding: XFP and FP per Adj Game has better predictive power than XFP and FP by the raw game totals (+0.7% overall). Across the site, anywhere you see GP — know it's a better reflection of reality.
How to Use XFP
- Identifying Regression Candidates: Players with very high OEX% relative to their career averages (actual > expected) may regress downward; those with very low OEX% may bounce back.
- Evaluating Role Changes: When a player leaves a team, we can see exactly how much opportunity is up for grabs.
- Context: Compare XFP/G to see who's getting more opportunities, then look at OEX% to see which teams and players have been able to execute.
- Avoiding Box Score Traps: For instance: A player's target count alone doesn't tell you if those targets were downfield throws or dump-offs. XFP properly quantifies the target value.
- Team Tendencies: Evaluate how a team spreads their opportunity — pass vs run, inside the red zone, team shares, etc.
Model Architecture
Rather than building one monolithic model, xfpGM uses position-specific models for each play type. Click to see features:
Design goals: Our models aim to capture all plays that generate fantasy points without missing edge cases (sacks, laterals, 2PT conversions). We deliberately avoid features that indicate team strength outright — no team identifiers, no opponent adjustments in the model itself. The goal is pure opportunity measurement.
Public Model Limitations
The nflverse ffopportunity model is excellent and freely available, but has some limitations that xfpGM addresses:
- No fumbles lost — Fumbles lost are not factored into XFP calculations
- No laterals — Lateral plays (which can result in significant yardage) are excluded
- No 2-point conversions — 2PT attempts and conversions are not included
- Sack plays excluded — Sacks are not counted toward QB XFP in the public model. This is a significant oversight: theoretically, there could have been points on the play had the sack been avoided. xfpGM includes all sack plays in QB passing XFP.
xfpGM vs Public XFP
We compared xfpGM against the publicly available XFP model (via NFLFastR) across multiple dimensions. All results are weighted by sample size across positions (619 player-seasons, 2016-2024).
| Study | Finding | Winner |
|---|---|---|
| XFP Stability (YoY) | xfpGM +0.9% | xfpGM |
| XFP → Future FP | xfpGM +0.5% | xfpGM |
| OEX Consistency | xfpGM +1.4% | xfpGM |
| Adj GP vs Raw GP | Adj GP +0.7% | Adj GP |
619 player-season pairs | Min 8 GP both years | FP/G thresholds: QB≥15, RB≥8.5, WR≥8.5, TE≥7 | Half-PPR | OEX trimmed ±25%
Bottom line: xfpGM wins on XFP stability (+0.9%), future FP prediction (+0.5%), and OEX consistency (+1.4%). Combined with Adj GP (+0.7%) and more complete play coverage (sacks, fumbles, laterals, 2PT), xfpGM provides a fuller picture of player opportunity and skill.
Related Metrics
For definitions of XFP, OEX%, Adj GP, and all other metrics used on this site, see the Data Catalogue, or check out any tooltip ? across the site tables.