Research Library

Every findings document in the repo, rendered. Sourced directly from the markdown under backtests/ and docs/ — nothing to register, a new file shows up here automatically. Negative results are kept deliberately: most of what's here is a hypothesis that didn't survive.

37 documents are private and not shown.
75 documents
nhl_eval · 2
college_hockey_eval · 3
qb_handedness · 1
fantasy_eval · 16
Do the Injury-Aware Multipliers Actually Improve Projections? 2026-09-26 · 6kb
Validation of commit 02fba14, which replaced the projection engine's injury multiplier table using results from backtests/nfl_context_signals/FINDINGS.md.
backtests/fantasy_eval/FINDINGS_INJURY_MULTIPLIERS.md
If an Injured Player Suits Up, What Does He Score? shipped · 9kb
Follow-up to FINDINGS_INJURY_MULTIPLIERS.md, which shipped an expected-value injury multiplier and left the conditional one — "if he is active, what should I expect?" — as an aside: ~0.82 / 0.92 / 0.97 relative to healthy for DNP / Limited / Full. Nothing in t…
backtests/fantasy_eval/FINDINGS_INJURY_CONDITIONAL.md
Depth-chart multiplier damp — re-measured after the input fix (2026-09-12) 2026-09-12 · 2kb
Verdict: keep 0.4. Mean error is flat across the damp; what moves is bias.
backtests/fantasy_eval/FINDINGS_DEPTH_DAMP.md
Snap Counts + Depth Charts Close ~30% of the ECR Gap 2026-07-19 · 13kb
Date: 2026-07-19 · Season: 2025, weeks 7–17 · Harness: snap_depth_experiment.py → snap_depth_experiment_results.json · Seed: 20260719
backtests/fantasy_eval/FINDINGS_SNAP_DEPTH.md
Cross-player usage redistribution: the effect is real, the projection gain is not rejected 2026-08-31 · 3kb
Date: 2026-08-31 · Verdict: ❌ REJECTED — usage_redistribution = False
backtests/fantasy_eval/FINDINGS_USAGE_REDISTRIBUTION.md
Backup QB: shade the receivers, not the quarterback shipped 2026-08-31 · 2kb
Date: 2026-08-31 · Verdict: ✅ SHIPPED, receiving only
backtests/fantasy_eval/FINDINGS_BACKUP_QB.md
Train / dev / holdout: what the accuracy numbers are actually worth 2026-08-30 · 2kb
Date: 2026-08-30 · Report: scripts/report_split_accuracy.py (re-runnable)
backtests/fantasy_eval/FINDINGS_EVAL_SPLIT.md
Two dead knobs: one was worth fixing, one was worth measuring and leaving off shipped 2026-08-30 · 2kb
Date: 2026-08-30 · Harness: evaluate_fantasy_mae.py --set <knob>=true
backtests/fantasy_eval/FINDINGS_PACE_AND_ROSTERS.md
Start/sit accuracy of the shipped surface shipped 2026-08-30 · 1kb
Date: 2026-08-30 · Harness: start_sit_live_accuracy.py (re-runnable)
backtests/fantasy_eval/FINDINGS_START_SIT_LIVE.md
Floor/ceiling were covering half the outcomes they claimed 2026-08-30 · 2kb
Date: 2026-08-30 Verdict: ✅ FIXED — empirical residual quantiles replace the simulated band
backtests/fantasy_eval/FINDINGS_INTERVALS.md
The team+position "soup" is not a bug — it beats the clean matcher rejected 2026-08-30 · 2kb
Date: 2026-08-30 Harness: scripts/evaluate_fantasy_mae.py --set unified_player_matching=true|false Verdict: ❌ REJECTED — keep unified_player_matching = False
backtests/fantasy_eval/FINDINGS_PLAYER_MATCHING.md
Volume features: do they add anything on top of the snap re-ranker? shipped 2026-08-30 · 3kb
Date: 2026-08-30 Harness: backtests/fantasy_eval/volume_features_experiment.py (re-runnable) Verdict: ✅ SHIPPED — small but consistent incremental gain
backtests/fantasy_eval/FINDINGS_VOLUME_FEATURES.md
TD models: not unpredictable, just pointed at the wrong output 2026-08-30 · 3kb
Date: 2026-08-30 Harness: backtests/fantasy_eval/td_probability_experiment.py (re-runnable) Verdict: ✅ PARTIAL — ships for rushing and receiving TDs, NOT for passing TDs
backtests/fantasy_eval/FINDINGS_TD_PROBABILITY.md
Our Fantasy Projections vs FantasyPros Expert Consensus (ECR) 2026-07-19 · 9kb
Our side is the strict walk-forward regeneration from scripts/evaluate_fantasy_mae.py --dump-projections (2,438 player-weeks): the engine is fed one historical week at a time and may only use data from before the week it projects. Unlike the 2024 db rows, this…
backtests/fantasy_eval/FINDINGS_VS_ECR.md
The Close Band Can Be Improved (+2.5pp, ~half the ECR gap) 2026-07-20 · 3kb
Date: 2026-07-20 · Harness: close_band_experiment.py · Sample: 12,510 close pairs of 56,046, 2025 weeks 5–17 · Seed: 20260719
backtests/fantasy_eval/FINDINGS_CLOSE_BAND.md
Start/Sit Decision Accuracy — 2025 2026-07-19 · 3kb
Date: 2026-07-19 · Harness: start_sit_accuracy.py · Sample: 64,150 within-(week, position) pairs, 2025 weeks 5–17 · Seed: 20260719
backtests/fantasy_eval/FINDINGS_START_SIT.md
nfl_game_quality · 1
pickem · 6
How well does the public pick? — field baseline, 2014–2025 2026-09-13 · 4kb
2026-09-13. field_baseline.py → field_baseline_results.json (gitignored). Source: NFL Pickwatch per-game pick shares, captured by scripts/nfl/capture_pickwatch.py into [redacted] (weekly cron, Tue 14:00 UTC). Lines and results come from nflverse, not…
backtests/pickem/FINDINGS_FIELD_BASELINE.md
Winning a 30-Person Confidence Pool 2026-07-20 · 11kb
Date: 2026-07-20 · Harness: pool_strategy_sim.py → pool_strategy_sim_results.json · 6,000 simulated seasons per regime · Seed: 20260720
backtests/pickem/FINDINGS_POOL_2026.md
Testing "always pick the favorite" — and why a Monte Carlo can't do it 2026-08-12 · 5kb
2026-08-12. calibration_test.py, 6,937 REG games, 1999–2025.
backtests/pickem/FINDINGS_CALIBRATION_2026.md
Season Prize vs Weekly Prize: Shoot for the Season 2026-07-20 · 5kb
Date: 2026-07-20 · Harness: pool_ev_analysis.py → pool_ev_analysis_results.json · 4,000 simulated seasons per regime · Seed: 20260720
backtests/pickem/FINDINGS_EV_2026.md
Best Pick'em Strategy for 2026: Pick Every Favorite 2026-07-20 · 6kb
Date: 2026-07-20 · Harness: strategy_search_2026.py → strategy_search_2026_results.json · Data: 2,119 REG games, 2018–2025 · Seed: 20260720
backtests/pickem/FINDINGS_STRATEGY_2026.md
Confidence Pick'em — Honest Rebuild (2018–2025) 2026-07-20 · 4kb
Date: 2026-07-20 · Harness: backtest_pickem.py → backtest_pickem_results.json · Sample: 2,119 completed regular-season games · Seed: 20260720
backtests/pickem/FINDINGS.md
pickem_tiebreak · 1
nfl_war · 1
injury_impact · 1
player_movement · 2
elway_review · 1
kicker_dst · 1
fantasy_model_audit · 1
bet_timing · 1
middles · 1
leg_correlation · 1
stable_filter_audit · 1
ev_clv_prereg_2026_09 · 1
clv_line_adjustment · 1
ev_record_2026_08 · 1
weather_ftn_value · 1
qb_weather · 1
nfl_context_signals · 1
preseason_signal · 1
nfl_prop_usage · 2
hr_derby · 1
backtests · 3
cfb_eval · 2
ncaab_eval · 1
tennis_eval · 1
split_miner · 1
strategies · 1
stacking_eval · 4
kelly_sim · 1
nfl_edges · 1
docs · 9
Strategy 002: 12-1 Cross-Sectional Momentum · 3kb
Jegadeesh & Titman, Returns to Buying Winners and Selling Losers (Journal of Finance, 1993). Still one of the most-replicated equity anomalies.
backtests/docs/002_momentum_12_1.md
Strategy 009: Insider Cluster Buying · 2kb
Cohen, Malloy & Pomorski, Decoding Inside Information (Journal of Finance, 2012). Also Lakonishok & Lee (2001), Jeng et al. (2003).
backtests/docs/009_insider_cluster.md
Strategy 008: Sell-in-May Calendar Effect · 2kb
Folk wisdom + Bouman & Jacobsen, The Halloween Indicator, "Sell-in-May-and-Go-Away": Another Puzzle (American Economic Review, 2002). Subsequent decades of replication.
backtests/docs/008_sell_in_may.md
Strategy 007: Short-Term Reversal (1-week loser-winner) · 2kb
Jegadeesh (1990), Lehmann (1990) — the original short-horizon reversal papers. The mirror image of 12-1 momentum: short-term returns reverse at 1-week/1-month horizons, while medium-term (12-1) returns continue.
backtests/docs/007_short_term_reversal.md
Strategy 006: Net-Net (Graham Deep Value) · 2kb
Benjamin Graham, The Intelligent Investor (1949) and Security Analysis (1934). The original quantitative value strategy. Tweedy Browne, Walter Schloss, and others used variants for decades.
backtests/docs/006_net_net.md
Strategy 005: VIX Term Structure · 2kb
Multiple — vol-arbitrage literature 2010s. Notable: Simon (2014), Donninger (2015), the "Hayek" / "Boggs" VIX-term-structure papers. Popularized in retail circles via SVXY / VXX strategies after the 2011 launch of VIX ETPs.
backtests/docs/005_vix_term_structure.md
Strategy 004: Piotroski F-Score · 3kb
Joseph Piotroski, Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers (Journal of Accounting Research, 2000).
backtests/docs/004_piotroski.md
Strategy 003: Post-Earnings Announcement Drift (PEAD) · 2kb
Bernard & Thomas, Post-Earnings-Announcement Drift: Delayed Price Response or Risk Premium? (1989). Replicated and refined for ~40 years.
backtests/docs/003_pead.md
Strategy 001: Magic Formula (Greenblatt) · 3kb
Joel Greenblatt, The Little Book That Beats the Market (2006).
backtests/docs/001_magic_formula.md