xfpGM
Players
Teams
Coaches
Tools
Research
FAQ

Research

XFP Model Validation

How XFP predicts future fantasy production

The Premise

Fantasy points are a product of two things: opportunity and execution. If opportunity is defined as Expected Fantasy Points (XFP) — the points you'd expect given the plays a player was involved in — then execution is defined by OEX% (Over Expectation %), which measures how much better or worse a player converted that opportunity into actual fantasy points.

Most experienced drafters intuitively know to avoid players who had unsustainable results (sell high) and buy players who had bad execution (buy low). This research aims to stress test that intuition.

xfpGM 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:

  • 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.
  • 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

xfpGM addresses all of these, providing a more complete picture of expected fantasy production.


XFP Is Stable

A good opportunity model should produce stable, predictable metrics. If a player's XFP/G fluctuates wildly year-over-year — beyond actual role changes — the model may be capturing noise rather than true opportunity.

The test: How well does XFP/G in Year N predict XFP/G in Year N+1?

XFP/G → Next-Year XFP/G
30%R²
XFP/G Year-over-Year Stability by Position

About 30% of a player's per-game opportunity this year can be explained by last year's opportunity alone. That's strong for a single-variable predictor in a sport with this much roster turnover, coaching changes, and injury variance. The R² for a team's win percentage year over year in the NFL doesn't even beat this! Opportunity in fantasy football is largely a function of role and scheme, not luck — making XFP/G a reliable anchor for projecting future opportunity.

Takeaway: XFP is sticky. A player's opportunity level persists year-over-year because it's driven by structural factors — snap share, target share, rushing attempts — that don't change randomly. An R² of 30% from a single variable is strong given NFL roster churn and coaching turnover. For fantasy drafters, XFP/G is a stable foundation for projections.

XFP Predicts Future Scoring

Stability is good, but the real question for drafters is: does XFP predict actual future fantasy points?

The test: How well does XFP/G predict next year's FP/G? And how does that compare to using actual FP/G as the predictor?

FP/G → Next FP/G
26.8%
Actual scoring
XFP/G → Next FP/G
20.9%
Opportunity only

XFP — a measure of pure opportunity that strips out execution entirely — captures most of the predictive signal in actual fantasy points (21% vs 27% R²). The gap is just 6 percentage points. This means the majority of what makes FP/G predictive is already embedded in XFP. The execution component (OEX) adds some signal, but opportunity is doing the heavy lifting.

When we strip out players whose usage shifted dramatically — big jumps in snap share, target rate, or role changes — we see this even more clearly. For players whose future XFP/G stayed within ~25% of the previous year's:

FP/G → Next FP/G
44.3%
Actual scoring
XFP/G → Next FP/G
44.7%
Opportunity only

With stable usage, XFP/G is just as predictive as actual fantasy points — the gap disappears entirely. The full-sample gap is driven by role volatility (breakouts, demotions, new teams), not a weakness in XFP as a metric.

Takeaway: XFP captures the signal that matters most for projection. About 80% of FP/G's predictive power comes from the opportunity component alone. When you draft based on opportunity profiles, you're anchoring on the most stable, predictive component of fantasy production.

OEX: The Execution Residual

If XFP measures opportunity, OEX% (Over Expectation %) measures everything else — the execution component. A player with +10% OEX scored 10% more fantasy points than their opportunity predicted. It captures skill, efficiency, and luck in one number.

The natural question: does execution repeat?

OEX% → Next-Year OEX%
6.2%R²

Mostly, no. OEX has low year-over-year repeatability — execution is far noisier than opportunity, and most of what looks like over-performance in a given year doesn't carry forward. But that doesn't mean OEX is all noise. Our research identifies specific situations — like coaching continuity and team context — where execution is meaningfully more likely to repeat.

Takeaway: Don't bank on OEX repeating broadly, but it's not pure randomness either. See our OEX Stability deep dive for the full analysis of when and where execution carries forward.

Adjusted Games Played

Traditional fantasy analysis uses raw games played (GP) as the denominator for per-game stats. But this treats a player who left in the first quarter the same as one who was active the full game.

Adjusted Games Played (Adj GP) counts only quarters where a player recorded at least one snap. A player who plays 3 quarters gets 0.75 Adj GP, not 1.0 GP. This better isolates true per-game production by negating the noise from in-game injuries or rest in meaningless games.

The test: Does FP/Adj GP predict next year's FP/G better than FP/raw GP?

Adj GP Benefit by Position
Takeaway: Using quarters played instead of games played removes noise from partial games. FP/Adj GP improves next-year prediction by +3.8% overall, and XFP/Adj GP sees an even larger +6.5% improvement — led by QB (+13.8%). Adj GP is a free upgrade to any per-game metric. Learn more on our Adj GP explainer.

Takeaways

  • Opportunity is structural, not random. XFP repeats year-over-year at 30% R² — meaning roughly a third of a player's expected usage carries over independent of execution. That makes XFP/G a strong baseline for projections.
  • Opportunity captures most of the predictive signal. Actual FP/G is a slightly better predictor of next-year FP/G than XFP/G (27% vs 21% R²). But among players whose usage stayed consistent, XFP/G is equally predictive — execution doesn't add anything on top.
  • OEX is mostly noise, but has pockets of signal. Overall execution repeatability is low (6% R²), but specific contexts — coaching continuity, team strength, position — produce meaningfully higher signal. See the OEX stability research for the full breakdown.
  • Adj GP improves everything. Counting quarters instead of games eliminates noise from partial appearances, boosting predictive power across all metrics — especially for QBs.

Methodology

845 player-season pairs (2016-2024 → 2017-2025) | Min 8 Adj GP both years | Year N XFP/G thresholds: QB≥11, RB≥8, WR≥8, TE≥5.5 | Year N+1 uses 90% of Year N thresholds to reduce survivorship bias | Half-PPR scoring | OEX trimmed ±25%

Read next: OEX Stability →

← Back to Research