Quantitative Research
A production research platform for sports and futures markets, built on one rule: a model earns its place out of sample or it does not ship. What was adopted, what was rejected, and the numbers either way.
The method
01Walk-forward or nothing. Every projection for a week is rebuilt from data available entering that week; every study is judged on seasons it never saw.
02Keep the losers. A quarter-million graded legs include every miss, so calibration is measured, not asserted.
03The market is the reference. No model beat the closing line, so the game is the market's and the engine is scored against it — the books through 2026, the Kalshi exchange from here.
04Rejections are results. Most ideas fail out of sample. They are written down with their numbers so they are not retried, and so the doctrine the model writers follow is the evidence, not the hunch.
05Language models are analysts, not oracles. They write from structured dossiers under a schema, their calls are graded by code, and their reviews feed their next plan.
06Built with an AI pair. The engineering was done with Claude as a programming partner; the doctrine, the questions asked, and the verdicts are mine.
NFL Projection Engine
Walk-forward player & team projections, 2016–2026
A projection system for every skill player and team in the league, rebuilt week by week from only what was knowable before kickoff.
- ▶Market-anchored game, engine-owned players: each game's points come from the closing spread and total (no model beat the close out of sample); the engine owns how those points become attempts, carries, targets and yards — opponent-adjusted efficiency rates with Bayesian shrinkage, recency-weighted usage shares blended toward prior-season shares early in the year.
- ▶Every input earned its place: forecast wind (−1% passing yards per mph above 10, held out on 2024–26), yards-before-contact for backs, a fitted sack-rate blend, a tight-end tilt against stingy defenses, per-snap efficiency reversion for receivers, validated rookie usage priors — and a longer list that did not (below).
- ▶Roster-aware: injured weeks are excused rather than counted as zero usage; a traded player leaves one club's pool and carries his own share to the other from his first week there; a benched QB is read off the live depth chart, never by hand.
- ▶Replayable: any week since 2016 rebuilds from the data available entering that week, which is what makes every study below a real out-of-sample test.
Calibration & the Hit Ledger
257,000 graded legs, winners and losers, 2016–2026
Probability is a claim; a ledger is the audit. The system publishes its own calibration and has never been allowed to rewrite a graded result.
- ▶Empirical distributions, not assumptions: prop probabilities come from the measured distribution of actual-to-projected ratios, bucketed by projection size (a lognormal fit was tried first and failed calibration badly); small counts — passing TDs, interceptions — are Poisson, verified within three points at every rung.
- ▶A ledger that keeps the misses: every priced rung of every played game is stored with its probability, the market's price and what happened. A hit rate needs the losers; a hit list is just a filter.
- ▶The market as the reference: a 1,518-leg study showed the books better calibrated than the engine in every market, so the engine was anchored to them — and from October 2026 it is scored, unanchored, against the Kalshi exchange on the same legs, with Brier scores published by market as the weeks grade.
- ▶Streaming models with records: kicker and defense streaming rankings held out over 2021–25 (top-five picks 8.8 vs a 7.9 field at kicker, 9.0 vs 6.3 at defense).
Kalshi Exchange Integration
Regulated event-contract exchange, live trading flow
An end-to-end integration with a CFTC-regulated exchange: market data in, model prices against it, orders out.
- ▶Twenty series mapped to the engine's markets — every player ladder, anytime touchdowns, and the spread, total and winner for the full game, first half and first quarter — synced hourly and frozen at kickoff as each market's close.
- ▶Period lines priced from history: full-game lines off a 14,000-perspective residual pool around the closing line; half and quarter lines off a kernel over 7,000 games (a shifted pool blurred the lumps a short period lives on — a fifth of first quarters end tied), validated walk-forward 2019–25.
- ▶Combo pricing by RFQ: signed (Ed25519) requests, maker quotes read in under a second, per-leg contribution quoted by sub-combo, idempotent order records written before any accept so nothing is ever bought twice, fills reconciled against the exchange.
- ▶A board built for the exchange: every rung priced Yes and No on the engine's range bar, a scan for mispriced rungs (floors, inverted ladders, wide gaps, with size and liquidity guards), the biggest price moves over any window, and a slip that reprices itself on every change.
LLM Game Plans with Graded Reviews
Claude-written pre-game plans, scored against the box score
Language models as analysts, held to the same standard as the engine: structured inputs, enforced outputs, graded calls, lessons that compound.
- ▶A dossier, not a prompt: each plan is written from a structured JSON dossier — projections, engine inputs with their league baselines, season context reduced from play-by-play, both injury reports with snap shares, beat reporting, weather, roster moves, and the plans' own record this season by call type.
- ▶Doctrine from the studies: the system prompt carries what the research found (volume is sticky, efficiency reverts; opponent strength matters only after six games; the market is the reference) so the writer reasons inside the evidence rather than around it.
- ▶Write once, grade always: a plan is never rewritten after kickoff. Every call is graded by code, the post-game report reviews the plan it was written against, and the lessons are carried into the next plan on that team — a closed loop between prose and results.
- ▶Schema-enforced output with numbers attached by code, never by the model; an interception call must name a volume mechanism; a departed starting lineman the engine never tracked is named in the notes so the writer weighs what the numbers cannot.
NHL Pricing Foundation
Eight-step build, seven shipped, the eighth rejected
A second sport built on the same doctrine, to prove the method travels: walk-forward, out of sample, documented rejections.
- ▶From the puck up: an expected-goals model on league play-by-play since 2010, team efficiency with opponent adjustment, goalies and buildings, strength states, and skater on-ice ratings with projected lineups.
- ▶Every market from one walk: a ten-second score simulation prices moneylines, puck lines, totals and props off the same game state, with negative-binomial spreads and a pulled-goalie mixture for the last minutes.
- ▶Honest about the last step: style matchups (pace, shot profile) added nothing in the residuals — recorded as rejected, with the one finding worth keeping (own pace slightly over-credited).
Market Regime Lab
Futures microstructure, labeled regimes, LLM adjudication
The same discipline applied to intraday futures: labeled ground truth, causal evaluation, and outcomes measured in dollars.
- ▶Ground truth by hand: trading sessions labeled into regime segments under written conventions, an evaluation set built to teach and to score.
- ▶Causal replay: the Morpheus adjudicator replays sessions bar by bar with no look-ahead, scored against the labels (0.81–0.84 occupancy against a 0.62 mechanical baseline, ~90% of an oracle ceiling) — see the Projects page.
- ▶Execution harness: a playbook simulator walks the full method over any timeline, so a classification is measured in P&L; a break-even stop study quantified the trade (about 0.1R a trade for half the drawdown).
- ▶Live layer: real-time regime tracking on one-minute bars with a quarantine on the feed's recent window, bridged to NinjaTrader.
Data Platform
Django · Postgres · incremental syncs · versioned caches
The plumbing that makes the research reproducible: 7,000 games, 117,000 player-games, a quarter million graded legs, all rebuilt from stamped, versioned feeds.
- ▶Feeds: nflverse play-by-play, box scores, snaps, rosters and depth charts; Sleeper live injuries, depth charts and news; PFR advanced stats; FTN charting; Kalshi and the Odds API; a weather forecast feed; the NHL league API.
- ▶Incremental by design: every sync writes only the rows that differ and stamps the feed; priced weeks and the engine context are cached on a version built from those stamps, so a correction upstream reprices and a quiet pull costs nothing.
- ▶Feature flags for the paid side: site-wide switches silence any scheduled pull while leaving manual pulls to the operator, and hide the pages built on a feed that is off.
- ▶Tested: roughly 650 tests across the applications; the NFL engine and exchange flow alone carry 237.
The studies ledger
Each question, how it was answered, and whether it earned a place in the engine. Held-out seasons throughout; a "rejected" row is a finding, not a failure.
| Study | Verdict | What the data said |
|---|---|---|
| Forecast wind on passing | ADOPTED | −1% passing yards per mph above 10; 35–45 yards and 3–5 points in wind, rain or snow (2007–26); held out 2024–26. |
| Yards before contact for backs | ADOPTED | His own: it sticks for stayers (0.58) and vanishes for movers; a 0.27 tilt on his rush yards lifted week-ahead YPC. |
| Share shrinkage early in the season | ADOPTED | Yes: week-1 box scores say nothing about week-2 misses; shares now blend toward prior-season shares by games played. |
| Rookie usage priors | ADOPTED | Validated walk-forward; veterans on rookie-laden rosters were over-projected without it. |
| Tight ends vs stingy defenses | ADOPTED | Only one side of one position: stingy defenses vs tight ends (−0.36 MAE); QB and WR nothing, WR slightly inverted. |
| Receiver efficiency reversion | ADOPTED | No — volume is sticky, efficiency reverts; a per-snap fade tilt shipped, no team rebalance. |
| Kicker and defense streaming | ADOPTED | Implied points dominate kickers; low opponent implied points and favoritism dominate defenses; top-five picks beat the field 2021–25. |
| Alternate-spread fair value | ADOPTED | Cover rates at a cushion are flat across favorite, dog and home splits; priced off 13,000 margins around the close. |
| Offensive line (team and player) | REJECTED | Zero walk-forward lift from protection or continuity; pressure is a quarterback trait (year-over-year 0.51 for stayers, 0.31 for movers); a paid grading feed not justified. |
| Big misses against the number | REJECTED | Nothing; a havoc composite was zero signal. Never add veto rules from single games. |
| Game script from rankings | REJECTED | Nothing for the game; for players only the opponent half helps, and only after six games. |
| Quarterback interceptions | REJECTED | All within noise of zero out of sample; the miss is attempts volume for big underdogs, not the rate. Poisson holds. |
| Rookie-prior shrink after week 1 | REJECTED | His first box score is real information; leave it. |
| Surface and travel | REJECTED | Passing identical, rushing +3.7 yards a team on turf, nothing for points or the market; travel nothing. |
| Defensive matchup groups | REJECTED | Essentially zero; only the WR-vs-weak-linebacker checkdown funnel repeated. |
| NHL style matchups | REJECTED | Nothing in the residuals; own pace slightly over-credited. |
| Engine vs Kalshi | SCORING | Being scored weekly from October 2026, by market, hit rate and Brier, losers included. |
What is not claimed: an edge over the market. The engine's calibration is published and its record against the exchange is being scored in public as the weeks grade. The code is private; a walk-through on request.