And, just as deliberately, what it refuses to do.
Six seasons of MLB results, starting pitchers, Statcast batted-ball data, and game-time weather feed 25 leakage-safe features — every rolling statistic uses only information available before the game it describes. A calibrated logistic regression produces win probabilities; those are compared against vig-removed consensus odds from nine sportsbooks; disagreements above threshold become flags; flags that clear all eight gates become simulated 1-unit paper bets, logged with their odds, probability, expected value, and the model's top reasons. Final scores grade every bet automatically.
Calibration analysis on held-out 2026 games shows predicted probabilities in the 30–70% band track observed win rates. Outside that band the samples are thin and the model measurably overconfident — so the policy simply refuses to bet there. The betting gates are derived from the project's own validation findings, not borrowed thresholds.
A second model that predicts run totals failed to beat the naive always-predict-the-average baseline in cross-validation. The system reads that verdict from the model's own saved report card and disables O/U betting automatically — the model exists, and is not allowed to act, until it earns it. There is also no real-money automation anywhere: the ledger's job is to establish, in public, whether the edges are real. Sizing stays at a flat 1 unit; quarter-Kelly stakes are recorded in parallel for comparison but never used, because Kelly trusts the model's probabilities and that trust is exactly what's being tested.
Cross-validated accuracy is ~0.55 against a 0.52 home-team baseline — a real but thin signal, nowhere near guaranteed to survive closing-line vig. Some prediction inputs fall back to training-mean placeholders when lineups or weather aren't posted (a fallback scheme rebuilt after a placeholder bias was caught flagging every road team on one slate — graded honestly in the project log). The sample of settled bets is small; nothing here is a conclusion yet. That's what the ledger is for.