FantasyOmatic
ARTICLEIntel

FantasyOMatic Defense Ratings vs Industry aFPA: A 24-Season Backtest

FantasyOMatic Research Tuesday, September 8, 2026 2 views 0 comments(Last deploy: )

Five companies publish a matchup number for the same defense and no two mean the same thing. Here is what 62,134 out-of-sample predictions say about each of them, about ours, and about the one habit that costs more than any table.

FantasyOMatic Defense Ratings vs Industry aFPA: A 24-Season Backtest

Five different companies publish a "matchup" number for the same defense, and no two of them mean the same thing. One is a level, one is a delta, one is a percentage, and two of them disagree about which direction is good. We took all five, rebuilt them from the same play data, and ran them against 24 seasons — 62,134 predictions, each one made using only the weeks that came before it.

Every one of them carries real signal. Every one of them is bigger than the effect it measures. Ours included.


Five numbers, five meanings

These are the constructions in circulation, as published:

SourceWhat it isWindowDirection
FantasyPros, FantasyDataFantasy Points Allowedseason to datehigh = generous
FantasyPros, numberFireAdjusted FPAseason to datepositive = favorable
4for4Schedule-adjusted aFPArolling 10 weekslow = tougher
Establish The RunDvP, a percentagelast 8 games, recency-weighted+10% = inflates scoring 10%
FTNFantasy Points Against, DVOA-adjustedrollingnegative = better defense
Read that direction column again. 4for4 publishes a level, so a low number is a hard defense. FantasyPros publishes a delta, so a negative number is a hard defense. Same three letters, opposite meaning. If you check two sources in the same sitting, you can talk yourself into exactly the wrong start.

Establish The Run's is multiplicative, which is a real disagreement rather than a formatting choice. A defense that inflates scoring 8% gives a 20-point player four times what it gives a 5-point player. The additive tables charge both the same.


Every number is bigger than the effect it measures

There is a way to test this that does not depend on anyone's opinion. Take the number a source printed before the game. Take what actually happened. Ask how much of the printed swing showed up in the result.

If a table says "+3.0 against quarterbacks" and quarterbacks really do gain about three points, that number is worth face value. If they gain one point, it is worth a third of what it says.

How much of a printed matchup number is real. FantasyOMatic by position, plotted against the range across every published table, with a line marking the point where a number is worth exactly what it says.
How much of a printed matchup number is real. FantasyOMatic by position, plotted against the range across every published table, with a line marking the point where a number is worth exactly what it says.

Share of the printed number that shows upOverstated by
Every published table0.17 – 0.392.6× – 6×
FantasyOMatic · QB0.392.5×
FantasyOMatic · RB0.452.2×
FantasyOMatic · WR0.283.6×
FantasyOMatic · TE0.156.7×
Nothing on that chart reaches 1.0. Not the industry, and not us.

At quarterback and running back our number is closer to honest than anything published — 2.5× and 2.2× against their 3.4× to 3.8× and 2.6× to 2.7×. At receiver it is a tie. At tight end we are the worst of the six. That is the real state of it, and tight end is the position we are actively rebuilding because of it.

The reason ours is smaller is structural. The published tables take each opposing player's points, subtract that player's own season average, and average the result. The trouble is that the player's average was itself set by the defenses he happened to face, so the yardstick is contaminated by the very thing being measured. Plant a known six-point defense in synthetic data and that method returns 6.48. It finds the effect, and it finds too much of it.

Our model solves for every player and every defense at once, in one system, under a penalty that stops a defense with four games behind it from claiming a six-point effect. On that same planted six-point defense it returns 2.71 — deliberately short, because in September it does not yet know enough to say six.


The mistake that costs more than any table

Here is the finding with the most money in it, and it has nothing to do with whose arithmetic is better.

The industry ships projections and matchup tables as separate products. A subscriber reads the projection, then looks up the matchup, then adjusts. That counts the opponent twice — because the projection already had it.

What stacking a second matchup table costs you. Each position shown twice: the projection with the matchup already inside it, and the same projection with a published table applied on top.
What stacking a second matchup table costs you. Each position shown twice: the projection with the matchup already inside it, and the same projection with a published table applied on top.

Accuracy against the player's own season average, weeks 6 onward:

QBRBWRTE
Our projection, matchup already inside+1.22%−0.83%+0.47%−0.24%
The same projection, plus a published table on top−8.67%−6.01%−3.88%−6.42%
A raw average plus that table, no model at all−3.28%−1.13%−1.43%−2.38%
Stacking a table on a projection that already holds the matchup costs 4 to 10 points of accuracy — roughly three times the damage of using the table on its own. The third row is the tell: you are better off with no model and one table than with a good projection and one table.

The matchup is already in the This Week number. On any player page, the projection breakdown shows it as its own row, so you can see exactly how many points the opponent is worth before you decide anything. Do not add anyone else's on top.


Does adjusting for schedule even help?

This is the claim the whole category rests on, so we split it by era rather than averaging 24 seasons into one comfortable figure.

Schedule adjustment only clearly pays at receiver. Improvement in how well an opponent-adjusted ranking predicts the rest of the season, compared with raw points allowed, 2013 to 2025.
Schedule adjustment only clearly pays at receiver. Improvement in how well an opponent-adjusted ranking predicts the rest of the season, compared with raw points allowed, 2013 to 2025.

How much better an opponent-adjusted ranking predicts the rest of the season than raw points allowed:

Position2002 – 20122013 – 2025
WR+38.6%+54.4%
TEnoise+16.4%
RB+20.6%+3.2%
QB+5.0%−1.7%
Only wide receiver is a current-era fact, and it is stronger now than it used to be. At running back, schedule adjustment barely outranks raw points allowed in the modern passing game. At quarterback it is slightly worse than raw.

There is a matching finding at tight end that we would rather state than bury: before 2013, no method here — ours, theirs, or raw points allowed — detects anything at tight end at all. The 24-season tight end result is a modern-era finding wearing a long label.


Where we disagree with the public table

When our ranking of a defense differs sharply from the raw public number, one of them is wrong. Over 24 seasons, at wide receiver, ours has been the right one about 57% of the time — with a confidence interval running from 50% to 64%.

That interval clears a coin flip, and it is deliberately printed with the number. It is a wide-receiver result. We tested the same thing at quarterback, running back and tight end and found nothing that separates from chance.


What we checked and did not find

A study is only worth the claims it retires.

  • "FPA doesn't account for opponent strength" is only true of the raw tables. 4for4 and Establish The Run already adjust. It is a fair criticism of the number on a generic fantasy site, not of the whole category.
  • Ranking defenses is close to a commodity. After putting every method on a common scale, we do not rank defenses better than the adjusted tables do at any position. What differs is how big the printed number is, and at tight end they are ahead of us.
  • Adjusting the player for the defenses he has faced is worth about 0.2 points. We built it, measured it, and it changes essentially no lineup decisions. It stays in the model because it is correct, not because it is an edge.
  • No matchup number wins you close calls on its own. On pairs of players projected within a point of each other, every construction — ours included — lands within about a point of the others.

What to do with this

  • Pick one source and learn its sign convention. Mixing a 4for4 level with a FantasyPros delta is how a good matchup becomes a bad start.
  • Do not stack a matchup table on a projection that already has one. It is the single most expensive habit measured here.
  • Trust the receiver matchup most. It is the position where opponent adjustment clearly predicts the rest of the season, and it is where our disagreements with the public table have been right.
  • Treat any September matchup number as provisional — ours and everyone's. Four games is not enough for a six-point claim, and a number that admits it is more useful than one that does not.
  • Discount what you read elsewhere by about two-thirds. A published +6 has behaved like a +2.

The Matchup Matrix (All-Pro) ranks every remaining opponent for every player on your roster using the opponent effect described above, in fantasy points rather than a rank. The free matchups page and the projection breakdown on any player page show the same number without the season-long view.


Talk this over with AI Coach

The AI Coach (Hall of Famer) can pull the opponent effect for any player on your roster and tell you how much of your projection it accounts for — which is the only version of this question that decides a lineup.

AI Coach is available on the Hall of Famer season pass.


The fine print

Every number here comes from a walk-forward test: at each week, the model saw only the weeks before it. The industry constructions were rebuilt from the same play data rather than scraped, so the comparison is of methods, not of data quality, and each was given a slightly better version of its own method than the one it ships. Standard errors are clustered on the defense-week, because players facing the same defense in the same week are not independent observations. Half-PPR scoring. The study is reproducible and gets re-run after this season; anything that stops holding up comes out.

A matchup number you can defend at face value beats a bigger one you have to discount in your head.

Don't share this with anyone in your league.

Share with the people you want to see win.

Discussion

Sign in to join the discussion

No comments yet. Be the first to share your take.

Fantasy data provided by Yahoo Fantasy