← All articles

This article is part of the SaskPoly story. Read how it all started.

The Loop, Part 2: The Ledger — Every Prediction Gets a Row

What a prediction actually is inside the loop: one binary question per game, an explicit probability argued from both sides, the market's price as a toll-inclusive rival, Kelly-sized stakes, and a Brier score that grades every number forever — the data model explained for people who have never placed a bet.

199 games. 199 rows. Every row is a prediction that was written down before the game — the question asked, the probability stated, the market's price recorded, the bet size derived, and later the outcome graded with a score that follows the number forever. This post is the anatomy of one row. It is the most important machine in the loop, because everything else — the picks, the card, the calibration, the lessons — is downstream of what gets written here.

The binary threshold: one yes/no question

Every game gets reduced to exactly one question: does the home team win? Yes or no. Nothing about the margin, nothing about the total, nothing about covering anything. A binary threshold, in the framework's vocabulary.

This sounds like a limitation. It is a discipline. "Will the Blue Jays win by two or more?" is a different question from "will the Blue Jays win?" — and as Part 3 will show, pricing one as if it were the other cost real money for a month before anyone noticed. A machine that cannot ask vague questions cannot hide vague thinking behind them.

The explicit probability: a number, not a feeling

Each row carries P_Your — our probability, stated as a decimal, before first pitch. Not a confidence rating, not a star count, not a hunch in prose. 0.583. Sixty-eight characters in the word version; the number is the whole point. If you say 58.3% and the home team wins 58 games out of a hundred in your predicted situations, you are calibrated. If you say "I'm pretty confident" you are unfalsifiable, and an unfalsifiable opinion is a story you tell yourself.

The probabilities come from transparent baselines, on purpose. Baseball rows get a pitcher-blind baseline built on home-field edge and season record. Football rows get an Elo rating — the same system that ranks chess players — walked over all 6,967 NFL games from 1999 to 2025 (nflverse), with the parameters (K=32, home edge worth 55 percentage points) chosen by a backtest, not by taste. Transparent beats clever while the model is young, because a transparent wrong number can be graded and fixed. A clever opaque one can only be believed.

The both-sides case: the machine argues with itself

Every row carries two written columns: Case_Yes and Case_No. What speaks for the home team, what speaks against it. Playoff stakes — a team with its back against the wall, a rival with a magic number of two — go into these cases as arguments, never as automatic adjustments. Motivation is real, but it is also the first thing a sharp market prices, and anyone selling you a bigger motivation adjustment than the market's is selling a story.

The market: a rival, not an oracle

Each row also records P_Market — the market's implied probability, scraped from the board every tick and stripped of the vig. (The vig is the house's cut, priced into both sides; if the explainer is needed, it lives here: /articles/moneyline-spread-total-explained.) The market gets treated with respect bordering on reverence, because it is the only probability estimator on earth that is paid for being right, every day, in public. Our Elo scores 0.228 on the validation seasons; the closing market scores 0.213. The market is better. The honest goal of a new model is not to beat it but to stay in its zip code while it learns where its own blind spots are.

The difference between the two numbers is the row's reason to exist:

  • Edge = P_Your − P_Market. We think 58.3%, the market implies 47.3%, the edge is 11.0 points.
  • EV prices that edge at the actual ticket: P_Your × (odds − 1) − (1 − P_Your). A row with positive edge and negative EV is a mirage — the price is too short — and the card rejects it.
  • Kelly sizing converts edge and price into a stake: Kelly = EV / (odds − 1), then quartered. Quarter-Kelly because the thesis's full Kelly assumes a settled, calibrated model, and this one is a cold start. Bet sizing is a function of edge quality, not of how the day feels.

The grade: a score that compounds

When the game goes final, the settle phase writes the outcome — 1 for a home win, 0 for a loss, 0.5 for the ties and voids — and computes the Brier contribution: (P_Your − outcome)². Say 58.3% and the team wins: 0.174. Say 58.3% and the team loses: 0.344. The mean across all rows is the model's report card: the ledger currently runs a mean Brier near 0.24, against the market's 0.21. That gap is not an embarrassment. It is the curriculum. The selection rules — the subject of Part 3 — exist precisely so the model's early, noisy edges don't get bet like the market's mature ones.

One property of the Brier score deserves emphasis for non-gamblers: it punishes confident wrongness brutally. A 90% prediction that fails costs 0.81. A 55% prediction that fails costs 0.20. The score structure enforces the longshot floor you will meet in Part 3 — a cold model flirting with longshots is not brave, it is volunteering for the expensive errors.

Why a spreadsheet

The ledger is a CSV — one file, 29 columns, human-readable with less. Chosen over a database on day one, and the choice keeps paying: any phase can be debugged by opening the file, any row can be corrected by hand through the web UI's grading buttons, and the schema is the exact template from the prediction-framework thesis this project implements. Rows are append-only once settled. Market columns may be backfilled on open rows when a matching line appears — matchups repeat on consecutive days, and the rule is the line's date must equal the game's date, or the odds of yesterday quietly become today's, which is how books get robbed and ledgers get poisoned.

199 rows now. Zero open. Every settled row feeds the calibration footer on the daily sheet, and around 100 graded rows the flat selection floors are scheduled to be replaced by empirical cutoffs — per sport, per stakes class — measured from this file. That is the whole thesis of the machine: the rules are scaffolding, and the ledger is the teacher.

Next: how the rows become a card, and the night the sheet discovered it had been pricing the wrong ticket all season. Part 3 — The Rules: /articles/the-loop-part-3-the-rules

Write the number down before first pitch. Everything after that is grading.