Bottom line: you can't beat the betting market on winners, spreads, or totals — we proved it on 1,359 games.
But DFS construction (stacking + leverage) is provably +EV, and it's biggest in soft home leagues:
~22% win rate → +160% ROI. So: don't bet sides; build smart DFS lineups.
1 · DFS construction edge proven
Real DraftKings data (2014-2018), 85 full slates, identical projections — only the build changes.
Graded on actual points vs a simulated field. dfs_contest_backtest.py
| Construction | Cash% | GPP top-20% | GPP win (top-1%) | Soft 12-man WTA | WTA ROI |
| NAIVE — max projection, no stack | 54.1% | 31.8% | 0.0% | 22.5% | +170% |
| STACK — QB + 2 + bring-back | 51.8% | 27.1% | 1.2% | 21.3% | +155% |
| LEVERAGE — stack + off-chalk | 51.8% | 25.9% | 3.5% | 21.8% | +161% |
Cash = beat the double-up line. Top-1% ≈ a GPP win. Soft 12-man WTA = your home league (must finish 1st of 12; random baseline 8.3%).
Read it: cash → don't stack (naive best); big GPP → leverage (top-1% 3.5% vs naive 0.0%); your home league → ~22% win, +160% ROI.
2 · Markets are efficient on sides real data
Continuous cross-season walk-forward, warm-up 2005-2020, evaluated 2021-2025 (1,359 games). backtest_walkforward.py
5-yr winners (SU)
63.4%
market favorite 66.4%
Against the spread
49.4%
below 52.4% break-even
Cold-start tax (Wk 1-4)
+8.4 pts
warm 58.1% vs cold 49.7%
Per season (warm model vs market):
| Season | Games | Our SU | Market SU | ATS | O/U | Score MAE | Cold SU |
| 2021 | 272 | 62.9% | 62.1% | 47.4% | 48.0% | 8.03 | 58.5% |
| 2022 | 271 | 64.2% | 65.7% | 49.8% | 45.9% | 7.17 | 60.9% |
| 2023 | 272 | 60.3% | 68.0% | 50.4% | 54.8% | 7.66 | 56.2% |
| 2024 | 272 | 65.8% | 71.3% | 51.5% | 50.2% | 7.46 | 62.1% |
| 2025 | 272 | 63.6% | 65.1% | 48.0% | 53.3% | 7.43 | 58.1% |
3 · 2025 re-run, warm model (no cold start) real data
Model trained 2005-2024, walked 2025 week by week predicting cold. replay_2025_warm.py
Regular-season ML (winner)
173-99
63.6%
Regular-season O/U
145-127
53.3% (noise — 5yr is 50%)
Weeks 1-4 (warm)
68.8%
vs 51.6% cold-start
Week by week:
| Week | ML (SU) | O/U | Market SU | Cum ML% | Cum O/U% |
| W1 | 11/16 | 7/16 | 13/16 | 68.8% | 43.8% |
| W2 | 12/16 | 8/16 | 11/16 | 71.9% | 46.9% |
| W3 | 13/16 | 11/16 | 12/16 | 75.0% | 54.2% |
| W4 | 8/16 | 9/16 | 10/16 | 68.8% | 54.7% |
| W5 | 4/14 | 9/14 | 5/14 | 61.5% | 56.4% |
| W6 | 9/15 | 8/15 | 11/15 | 61.3% | 55.9% |
| W7 | 10/15 | 10/15 | 12/15 | 62.0% | 57.4% |
| W8 | 10/13 | 9/13 | 11/13 | 63.6% | 58.7% |
| W9 | 8/14 | 6/14 | 8/14 | 63.0% | 57.0% |
| W10 | 9/14 | 6/14 | 8/14 | 63.1% | 55.7% |
| W11 | 9/15 | 8/15 | 11/15 | 62.8% | 55.5% |
| W12 | 13/14 | 8/14 | 10/14 | 65.2% | 55.6% |
| W13 | 10/16 | 4/16 | 9/16 | 64.9% | 53.1% |
| W14 | 8/14 | 10/14 | 7/14 | 64.4% | 54.3% |
| W15 | 11/16 | 8/16 | 10/16 | 64.7% | 54.0% |
| W16 | 9/16 | 7/16 | 10/16 | 64.2% | 53.3% |
| W17 | 8/16 | 6/16 | 9/16 | 63.3% | 52.3% |
| W18 | 11/16 | 11/16 | 10/16 | 63.6% | 53.3% |
| Wild Card | 4/6 | 5/6 | 3/6 | 63.7% | 54.0% |
| Divisional | 4/4 | 3/4 | 4/4 | 64.2% | 54.3% |
| Conf Champ | 2/2 | 1/2 | 2/2 | 64.4% | 54.2% |
| Super Bowl | 1/1 | 1/1 | 1/1 | 64.6% | 54.4% |
Ideas we killed (so we don't chase them)
Same rigor, honest results — all refuted on real data:
| Theory | Verdict |
| Beat the spread / totals with a model | ❌ 49% ATS / 50% O/U over 1,359 games — market is sharp |
| "Primetime favorites don't cover" | ❌ dogs 51.7% (n=261), below break-even — noise, not rigged |
| Chinese zodiac (Pig/Snake, Rat fade) | ❌ age confound — zero independent signal (flavor only) |
| Out-project the field on player points | ❌ no model beats the season-average baseline (MAE ~4.7) |