Every IDP column tells you to start the underdog’s defenders, because a losing defence is on the field longer and tackles are volume. The field time is real and measurable. It is also worth about a tenth of a point — while the favourite’s pass rushers quietly bank the sacks. Measured the only way that can separate game script from simply having a good defence: the same defender, his own favourite weeks against his own underdog weeks.
One column decides whether this article says what it says or the exact opposite of it, and a flipped join produces a table just as clean and just as convincing. So the convention is stated, checked three ways, and left in the open for you to re-check.
market.nflteam.spread is stored from this team’s point of view: a positive number means the team was favoured by that many points. Negative means it was getting them. nflverse publishes the line home-positive; the store negates it for the away side. Three checks, all pointing the same way:
| Check | n | Result | Reads as |
|---|---|---|---|
| Spearman(spread, head-coach points) | 13,934 team-weeks | +0.420 | favoured |
| Win rate, favoured by 6+ | 449 team-weeks | 77.3% | favoured |
| Win rate, getting 6+ | 449 team-weeks | 22.0% | underdog |
| Mean margin, favoured by 6+ | 449 team-weeks | +9.27 | favoured |
Head-coach points in this league are max(0, margin) — a coach scores the win and nothing for a loss — so a favourite scores more by construction, and +0.420 is the fingerprint of a correctly-oriented column. Run the same regression with the sign flipped and it reports −0.36 where this piece reports +0.36. That is not a hypothetical: it is one line of the reproduction script, printed on every run so nobody has to take it on trust.
Full-time defenders only — 60% or more of his team’s defensive snaps that game — with a no-stat-line week scored as zero rather than dropped. Mean BWAFF points, by how big a favourite or underdog his team was.
| Pos | dog 6+ | dog 2.5–6 | pick’em | fav 2.5–6 | fav 6+ | fav 6+ minus dog 6+ |
|---|---|---|---|---|---|---|
| DE | 6.96 | 7.30 | 6.84 | 7.63 | 8.12 | +1.16 |
| DT | 4.99 | 5.45 | 5.85 | 5.66 | 5.93 | +0.94 |
| LB | 9.15 | 9.49 | 9.09 | 9.44 | 9.47 | +0.32 |
| CB | 6.92 | 7.00 | 7.07 | 7.62 | 7.34 | +0.42 |
| S | 7.72 | 8.05 | 7.74 | 8.36 | 7.90 | +0.18 |
| ALL | 7.38 | 7.64 | 7.50 | 7.98 | 7.93 | +0.55 |
Read at face value this reverses the heuristic at every position. It is also close to worthless as evidence, for a reason visible in the data itself.
“Favourite” is not a neutral label for game script. It is, to a very large degree, a label for having a good defence — and a good defence scores more IDP points for reasons that have nothing to do with the scoreboard.
| Band | Team-weeks | Market-implied points allowed | Season points allowed / game |
|---|---|---|---|
| dog 6+ | 449 | 27.02 | 24.72 |
| dog 2.5–6 | 617 | 24.50 | 23.41 |
| pick’em | 332 | 22.63 | 22.53 |
| fav 2.5–6 | 617 | 21.02 | 22.28 |
| fav 6+ | 449 | 18.37 | 21.30 |
Across the 192 team-seasons in this window, a team’s mean spread correlates with its season points allowed per game at −0.555 — favourites concede less. And points allowed correlates with its own defenders’ mean BWAFF score at −0.394 — better defences score more IDP. Both legs of the confound are present and large. A cross-sectional table therefore cannot tell you whether a defender scored because his team was ahead or because he plays for the Ravens.
Adding implied_opp_total as a covariate looks like a control and is not one: it is defined as total/2 − spread/2. Put both in a regression and you have asked the same question twice; the standard errors blow up and the coefficient means nothing.
Compare a defender only against himself. Player-season fixed effects hold his team, his defence, his role and his talent constant by construction, because they do not change from week to week inside one season. What is left varying is the game.
Identical rows to the raw table above. The only change: each defender’s own full-time average for that season has been subtracted, so every number is points above or below what that specific man normally does.
| Pos | dog 6+ | dog 2.5–6 | pick’em | fav 2.5–6 | fav 6+ | fav 6+ minus dog 6+ |
|---|---|---|---|---|---|---|
| DE | −0.21 (528) | −0.25 (805) | −0.26 (429) | +0.05 (798) | +0.72 (537) | +0.93 |
| DT | −0.34 (485) | −0.10 (671) | +0.13 (328) | +0.16 (630) | +0.22 (406) | +0.56 |
| LB | −0.02 (866) | +0.01 (1163) | −0.37 (639) | +0.13 (1218) | +0.10 (882) | +0.12 |
| CB | −0.03 (967) | −0.06 (1390) | −0.07 (781) | +0.24 (1390) | −0.15 (1046) | −0.12 |
| S | −0.08 (860) | +0.09 (1198) | −0.22 (647) | +0.21 (1229) | −0.17 (918) | −0.09 |
| ALL | −0.11 (3706) | −0.05 (5227) | −0.18 (2824) | +0.17 (5265) | +0.07 (3789) | +0.18 |
The reversal survives at defensive end and defensive tackle, shrinks at linebacker, and disappears entirely at corner and safety. At CB the raw table showed +0.42 for a big favourite; measured against the man himself it is −0.12. Every point of that apparent edge was the confound — corners on good defences, not corners in good game scripts.
Player-season fixed effects on all 21,609 full-time defender-weeks that sit in a player-season with three or more of them. Standard errors clustered on team-season: eleven defenders share one game and one game script, so their errors are not independent and pretending otherwise inflates every t-statistic here.
| Specification | β per point | Clustered t | Per 12 points |
|---|---|---|---|
| pooled, no player effect | +0.0350 | 4.46 | +0.42 |
| within player-season | +0.0304 | 3.24 | +0.36 |
| + own snap share | +0.0317 | 3.38 | +0.38 |
| + home/away | +0.0335 | 3.47 | +0.40 |
| + game total | +0.0266 | 2.60 | +0.32 |
| + week number | +0.0304 | 3.23 | +0.36 |
| + all four | +0.0312 | 2.94 | +0.37 |
The first row is the confounded one, kept in for scale: dropping the player effect moves the answer from +0.36 to +0.42, so the confound is worth 13% of the pooled slope league-wide — which sounds mild until you split it by position, where it is all of the apparent edge at CB and S and none of it at DE.
The same statement runs the other way round if you prefer it that way. Within a defender’s own season, the market-implied points his defence was expected to concede predicts his score at −0.0469 a point (clustered t −3.58): weeks the market expected his defence to be comfortable were weeks he scored more.
| Season | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|
| per 12 points | +0.33 | +0.26 | +0.18 | +0.60 | +0.55 | +0.32 |
| clustered t | 1.14 | 1.18 | 0.77 | 2.25 | 2.05 | 0.86 |
The heuristic’s reasoning is not folklore — it is correct, and it shows up in the data exactly where it should. It just gets paid in the wrong currency.
The underdog’s defence really is on the field longer. Within a player’s own season, a 12-point swing towards being favoured costs his defence 1.75 team defensive snaps (clustered t −3.49) and costs him 0.106 solo tackles a game (t −2.89). Both signs are the ones the column predicts, and both are measurable rather than noise.
Then BWAFF scoring does the rest. A solo tackle pays one point. A sack pays five, an interception ten, a forced fumble six, a tackle for loss two on top of the tackle. The favourite’s defenders are chasing a team that has to throw.
| Component | Per 12 pts | Clustered t | BWAFF value | Points contributed |
|---|---|---|---|---|
| solo tackles | −0.106 | −2.89 | 1 | −0.106 |
| assisted tackles | −0.023 | −0.70 | 0.5 | −0.011 |
| sacks | +0.038 | 4.85 | 5 | +0.190 |
| tackles for loss | +0.044 | 3.93 | 2 | +0.088 |
| passes defended | +0.033 | 2.78 | 2 | +0.067 |
| interceptions | +0.006 | 1.08 | 10 | +0.057 |
| fumble recoveries | +0.005 | 1.55 | 6 | +0.032 |
| forced fumbles | +0.003 | 0.70 | 6 | +0.019 |
| enumerated total | +0.335 | |||
| measured directly | +0.364 |
The extra tackle volume the whole heuristic is built on is worth −0.106 points, and the sacks alone are worth +0.190. The named components account for +0.335 of the +0.364 measured directly; the remainder is the long tail BWAFF also pays for — safeties, defensive scores, blocked kicks — too rare to estimate one at a time.
Points per 12-point swing towards being favoured, within player-season, clustered on team-season. It is a pass-rush effect and nothing else.
Real, and it is the same names every time — the men who get to rush a quarterback who has to throw
| Pos | Snap ≥0.6 that game per 12 pts | t | n | Prior 3 weeks ≥0.6 per 12 pts | t | n |
|---|---|---|---|---|---|---|
| DE | +0.92 | 2.71 | 3,247 | +1.31 | 3.24 | 2,377 |
| DT | +0.70 | 2.24 | 2,658 | +0.59 | 1.69 | 1,887 |
| LB | +0.52 | 2.11 | 4,924 | +0.74 | 2.52 | 3,601 |
| CB | +0.10 | 0.45 | 5,802 | +0.16 | 0.62 | 4,158 |
| S | +0.00 | 0.01 | 4,978 | −0.09 | −0.34 | 3,660 |
| ALL | +0.36 | 3.24 | 21,609 | +0.46 | 3.31 | 15,683 |
The right-hand pool is the honest one for a start/sit call, because “played 60% of the snaps” is only knowable after the game. Substituting the same test on a defender’s trailing three-week snap share — a thing you can check on Saturday — the effect gets larger, not smaller: +0.46 league-wide, +1.31 at defensive end. Safety turns mildly negative. Nothing about the story changes; the confidence in it goes up slightly.
It is a tiebreak, not a rule, and the size is the whole caveat. A full-time defender averages 7.57 points a week with a standard deviation of 6.25. The biggest position effect here, +0.92 at defensive end, is 13% of a DE’s mean week — and the gap between a 25th-percentile DE season and a 75th-percentile one is 4.86 to 9.20 points a game. Talent is roughly five times the size of game script. Benching a better defensive end to start a worse one because the worse one is favoured is a losing trade at every plausible talent gap.
Six of six seasons agree on the sign and only two clear significance alone. The per-season effect ranges +0.18 to +0.60 with no trend. This is one league’s scoring, six seasons, in-sample, and it is not a forecast that 2026 behaves the same way.
A defender is attributed to one team per season. The store carries team_by_season, not a per-week club, so a man traded in October carries his old team’s spreads for the rest of the year. That is measurement error in the regressor, which biases towards zero — it can hide an effect, not manufacture one.
And it cannot see alignment. Spec 01 lists box/slot/wide as the standing gap in this data, and it matters here: “defensive end” in a box score mixes true edge rushers with players who slide inside, and the effect measured is almost certainly concentrated in the former. This piece does not contradict spec 01’s finding that snap share is a rostering feature rather than a start/sit one — snaps are used here only to define the pool, never as a predictor — and it agrees with it that corner is where every signal dies.
DE · DT · LB
When two front-seven defenders are genuinely close, take the one whose team is favoured. Across the full realistic range of spreads — 36% of team-weeks carry a line of 6 or more — that is worth up to +0.92 a week at end, and up to +1.31 in the pool you can identify on Saturday. It costs nothing to apply.
CB · S
+0.10 and +0.00, at t = 0.45 and t = 0.01. The raw table’s apparent edge at these positions was entirely the fact that favourites have better secondaries. Any spread-based rule at corner or safety is noise dressed as a system, and half the IDP starting slots sit here.
And stop chasing the blowout loss. What this data settles firmly is the direction: the league-wide effect is positive in all six seasons, and the largest underdog-favouring point estimate anywhere in this piece is safety’s −0.09 at t = −0.34, which is another way of writing zero. There is no position and no season where starting the underdog’s defender is the better side of the coin. The upside of getting this right is small; the cost of holding it backwards is the same size, and it has been getting paid.
Sign convention. market.nflteam.spread is this-team-positive: positive means favoured. Verified at Spearman +0.420 against head-coach points across 13,934 team-weeks, at a 77.3% win rate for 6-point favourites, and at a +9.27 mean margin for the same group. The reproduction script prints all three plus the inverted-sign result before it prints any finding.
The universe. Every player-week with an nflverse defensive snap record, a listed position of DE, DT, LB, CB or S that season, a club that is not free agency, and a closing spread for that club that week — 54,936 defender-weeks over 1,936 defenders and 2,464 team-weeks. Restricted to weeks 1–14 (1–13 in 2020) because that is where the weekly BWAFF series ends; zero-filling week 15 would invent a zero for every player in the league. idp.player.bwaff_idp_points_week stores no zero rows, so a defender who played and recorded nothing is scored 0 rather than dropped — 563 of the 22,693 full-time weeks, 2.5%.
The estimator. Player-season fixed effects, applied by subtracting each player-season’s own mean from both the score and the spread, on player-seasons with three or more qualifying weeks. This holds team, defensive quality, scheme, role and talent constant by construction, because none of them vary within a player-season. Standard errors are cluster-robust on team-season (192 clusters); the naive ones are only marginally smaller here, but eleven defenders sharing one game script is exactly the dependence that makes an uncorrected t-statistic a lie. implied_opp_total is deliberately not used as a covariate alongside the spread — it is a linear function of the spread and the total, so the pair is collinear by definition; it appears instead as a standalone mirror specification.
Three things it cannot see. In-game leverage — the spread is a pre-kickoff price, not what the score actually did, so this measures expected game script and not realised game script. Injury and rest news after the line closed. And defensive alignment, which spec 01 has listed as the gap since it was written.
Confidence 0.55 — realised, not forecast. This measures what happened across six seasons of one league’s scoring. The design removes the confound it was built to remove and nothing more; a covariate nobody thought of is still a covariate nobody thought of.