The Loop
A prediction machine that files a report on itself every six hours.
Private. Runs on a Mac mini, reports to one human.
Every six hours a daemon wakes up and walks nineteen stations: fetch schedules, injuries, and odds; price every game with an explicit probability; audit what it just wrote by re-deriving it from the raw snapshots; settle yesterday's bets with Brier scores; then draft the recap. Failures are data — a phase that crashes is recorded and the chain continues.
The core idea is the Binary Decision Framework: every prediction is a binary question with an explicit probability, a market comparison, an edge, and a permanent grade. The ledger is append-only. A machine that files a report on itself every six hours has nowhere to hide, which is exactly the design intent.
The models are deliberately transparent rather than fancy — Elo for NFL (K=32, home edge 55 points, walked over every game from 1999 through 2025), calibrated baselines elsewhere. The honest number: my model scores a Brier of 0.228 against the betting market's 0.213. The market is the better grader, said plainly. The edge I actually have is discipline, not clairvoyance.
An 8-billion-parameter model running locally drafts the articles, fed only a block of verified facts with instructions to invent nothing. Its failure modes are documented like everything else: probability swaps, invented funding rates, fabricated records. A human edits every draft before anything ships.
Hard rules, enforced in code and in habit: the loop informs wagers; it never places them. And it never auto-publishes. Anyone selling you a system that skips that step is selling a story.
Stack
- Python 3.11, stdlib-first
- clock.py daemon — 19 phases, one belt
- Append-only prediction ledger (CSV)
- Elo ratings, backtested 6,967 NFL games
- qwen3:8b on local Ollama for drafts
- Playwright scrape of the book of record
- Flask web UI + browser-based trading gates