New to these reports? Start here
  • Dotted-underlined words have a plain-English definition — hover or tap them. Every term is also on the glossary page.
  • "Null" means we found nothing, not that something broke. Most reports here are negative results, on purpose — knowing an idea doesn't work is the point.
  • Two questions get asked separately. First, is the effect real? Second, is it already priced into the betting odds? An effect can be completely real and still useless to bet on.
  • A "calibration" row is a self-check. It runs the same method on something already known to be true. If that fails, the whole report is unreliable — so it's reported alongside the findings.
  • If a confidence interval includes zero, the real effect might be nothing at all, so no claim gets made.

Top-down pricing of NFL props: pass TDs, anytime TD, alternate lines (2026-10-10)

Same idea as the Q1 passing model: price a thin "child" market from sharper "parent" markets and see whether the books' child prices disagree in a way results reward. Scripts in this folder; shared harness common.py. Scored on the 65 graded 2026 games (weeks 1-4 + week-5 TNF), every book's closing quote, two-way quotes devigged against themselves; CIs are game-clustered bootstraps. Negative log-loss difference = model better.

Market Parents vs books vs Pinnacle Edge bets (EV >= 5%, best price) Books move toward model when it disagrees with the market
Pass TDs (game lines + pass yds) spread/total, pass yds +0.003 [-0.007, +0.014] +0.007 [-0.004, +0.018] 13-20, -9% 42% of 43
Anytime TD spread/total, rush + rec yds +0.004 [-0.008, +0.016] +0.004 [-0.008, +0.016] 9-64, -23% n/a (few two-way opens)
Alt spreads main spread -0.002 [-0.010, +0.006] -0.005 [-0.016, +0.005] 172-375, -3% 27% of 77
Alt totals main total +0.000 [-0.010, +0.011] +0.006 [-0.010, +0.022] 316-421, -8% 14% of 301

Verdict, most to least promising

  1. Alt spreads: weak. The only one that is at least as good as the books, best on rungs within 3.5 points of the main line (-0.007, CI spans 0). But when the model and the other books disagree, books move away from it (27% toward), and the edge bets lose. Books build ladders from the same main line and margin history; nothing here says they get it wrong. Worth re-running at season end, no more.
  2. Anytime TD: replicates the market, adds nothing. After correcting its level it ranks players exactly as well as Pinnacle (AUC 0.654 vs 0.655, correlationcorrelationHow closely two things move together, from -1 (opposite) through 0 (unrelated) to +1 (in lockstep). It does not by itself mean one causes the other. 0.95), so game lines + yardage lines reconstruct the sharp price. But it is not better, and its level ran low in 2026 (25% vs 28.6% actual), so its "edges" were all on Yes overrounds and lost. Possible use: a fair-value reference for shopping Yes prices at soft books, not a model.
  3. Pass TDs: nothing. Indistinguishable from the books, slightly worse in every comparison. (Pass TDs are under-dispersed, Pearson 0.81; probabilities are calibrated on history rather than Poisson.)
  4. Alt totals: nothing, and books move away from the model when it disagrees with the market.

Why Q1 is different: Q1 pass yards is posted by three books and rarely bet, so its line can drift from the full-game market eight books price. Every market here is priced by the same books from the same parents (the main line, the yardage lines), so top-down reconstruction lands on their own number.

Two traps caught on the way

  • biasbiasWhether the misses lean consistently one way. A projection can have a good average error size but still be biased if it is almost always too high. Bias is often the more fixable problem." data-def="Accidentally using information that was not available at the time. It makes predictions look brilliant and is the single most common way a backtest fools you.">Look-aheadlook-ahead biasAccidentally using information that was not available at the time. It makes predictions look brilliant and is the single most common way a backtest fools you. in the "line moved toward the model" test. The model was first built from CLOSING parent lines, so books' opens "moved toward it" 80-93% of the time: that was just the main line moving. Rebuilt from parents at each book's open, the effect is gone (14-58%). Any move test must use the model as it stood at the open (the Q1 page's Move column already does).
  • "Moved toward the model" alone is not evidence: books whose open is off-market move toward consensus, and a top-down model sits near consensus. The test that matters is the subset where the model and the other books point opposite ways (reported above).

Caveats

65 games. Log-loss CIs are roughly +-0.01, so a real edge of a few thousandths would not show yet. Historical fits use proxies for the yardage lines (season leave-one-out means), as the Q1 model did.

Q1 rushing / receiving models vs backfilled DK closing lines (2026-10-10)

q1_rushrec_cv.py. The 65 games of weeks 1-5 were backfilled from the Odds API's historical endpoint. The frozen models were fitted on these games, so each week is re-priced by a refit on the other four weeks.

Log losslog lossA score for probability forecasts that punishes confident wrong answers harshly. Lower is better., DK Model in-samplein-sampleMeasured on the same data used to build or tune the idea. Nearly always looks better than reality. Model leave-week-out Leave-week-out bets ≥5 pt edge
Rushing (232) 0.6856 0.7045 0.7160 60-63, −6.3u ± 10.6
Receiving (548) 0.6731 0.6824 0.6893 102-154, −35.3u ± 17.9

DK wins even against the in-sample model. The rushing model leans over (mean P(over) 0.532 vs 0.496 realized; 87 of 123 bets were overs). A ratio-of-the-full-game-center model with tiers misses information DK prices in. Expect the live forward test to lose; the frozen models stay as pre-registered.

On this page

Terms in this report

Source

backtests/nfl_topdown/FINDINGS.md
updated 2026-10-10 15:13