Sports Betting Model
The finding is that there is no edge. That is still a finding.
- Status
- PrototypeAn early working build.
- Updated
- Role
- Research Design, Experiment Design, Architecture, Development Orchestration
- Built with
Overview
This is a local four-page research application for college football prediction. It holds eight generations of models, seven registered studies, a 3,174-game full-season backtest, two market scanners and a paper ledger — and its headline result, stated on the front page rather than buried, is that a larger model has not established a betting edge.
That is the point of it. It is not a tipping service and it does not place bets, move money or run a monitor. It is an apparatus for asking whether a model can beat a market price, built so that the answer is allowed to be no.
Designed So the Answer Can Be No
The market is an extremely strong baseline, and the ordinary way to lose to it is to let yourself see the outcome first. Nearly every structural decision here is about closing one of those doors.
Experiments are registered before they run. Rerunning a completed registration is intentionally rejected rather than overwriting it, so a failed candidate is preserved next to the one that shipped. Predictions are written once, to an append-only store, and separately from the result observations that later grade them. Raw line observations are kept apart from the references a study selected.
Every replay has a stated cutoff and honours it. Week 2 is built from completed Week 1 results; no result, box score, drive or advanced statistic from the week being predicted reaches its inputs, and coefficients stay fitted on earlier seasons. A single book is used throughout, which removes the option of picking the friendliest line after seeing what happened.
And a promotion gate exists that candidates actually fail. The 2026 Week 1 retrospective is labelled a reconstruction built after kickoff rather than prospective performance. The opening-week study across 2022–2025 concluded that the unchanged market reference beat every trained candidate on later score error. A half-centered “reduced compression” distribution missed the 1% default-promotion gate and sits in the interface marked experimental instead of becoming the default.
Eight Generations of Being Wrong Usefully
The original experiment built 78 chronological pregame features — rolling opponent-adjusted offense and defense, Elo, home and neutral status, rest, pace, history — and ran regularized regression plus gradient boosting, with blend selection on 2023, refitting through 2023 and separate 2024 calibration. On 808 inspected 2025 FBS games it reached a Brier score of 0.1863 against Elo’s 0.1955.
It also lost to the market on score error: margin RMSE 16.32 against the market’s 15.01, total RMSE 15.78 against 15.55. That framing — beating a naive baseline while losing to the price — is the shape of nearly every result since.
V3 separated a 44-feature opponent and pace score model from the spread and total probability models evaluated at a supplied line, and improved on the earlier forecasts without establishing an advantage over market prices. V4 tried conservative football adjustments to market spreads and totals; neither correction passed the original development support gate, and its closer agreement with an input market is explicitly not counted as evidence of an edge. V5 became the deployed probability model. V6 moved to a closing-team-total score backtest that only admits pairs the model prices near a coin flip. V8’s total correction produced the best number the project has — 57.29% on a known top-20 weekly cohort against V5’s 54.59% — and still failed its consistency gate with a confidence interval straddling zero.
Each of those lives in the interface with its own tab, its own registered protocol document and its own findings write-up, including an independent audit of V4 and an investigation into where V3’s errors came from.
The Price Side
Two scanners sit next to the models, and they have the same temperament.
The exchange scanner inspects real executable ask depth on Kalshi and Polymarket — fees included, cost stated for one contract, nearby alternate lines kept separate rather than pooled — with settlement payoff tables and moneyline, spread and total predicates. The sportsbook comparison handles integer push states and cent-rounded stakes, and records hypothetical fills in a ledger that refuses to reserve the same liquidity or capital twice.
Quotes expire after 30 seconds. No live pair is ever labelled guaranteed arbitrage; positive profit under normal results stays conditional when postponement and cancellation rules differ between the two sides. A retrieval time from a screen-scraped sportsbook column is treated as exactly that, and never as proof of the price you would actually be filled at.
The recommendation panel draws the distinction that matters most: PASS means the bet is unsupported, WAIT means the quote is unavailable or stale. Because no current model passes the betting-support gate, a positive exploratory value never becomes a recommendation. The gate is upstream of the interface, so it cannot be talked around by a good-looking number.
Current State
It runs locally — a Python server and a static React build, launched from one PowerShell script, with cached data, a trained model and the built interface already in place. Standing scope is FBS versus FBS only, across every prediction target, scan, evaluation and history view.
History covers 2022–2025 in full plus 2026 Week 1, and the prediction page is currently on 2026 Week 2 with all 49 FBS matchups. That is the interesting part now: for the first time the model is making forecasts about games that have not happened, frozen before kickoff, in a system built specifically to stop itself from cheating. The 2025 season is already a known benchmark. Everything else needs future weeks to say anything at all.
Milestones
2026 Week 1 frozen
51 FBS matchups forecast against a common result cutoff, written once and never refit — the first slate treated as evidence rather than as a backtest.
V8 registered and not promoted
A market-history total correction moved the 2024–2025 top-20 weekly record to 57.29% against V5's 54.59%, then failed the development consistency gate and kept an improvement interval that includes zero.





