MLB Model Record

Our MLB moneyline model picks winners at 55.6%. The market's closing line does it at 55.5%.

Moneyline calibration predicted vs actual home-win rate · point size ∝ games · walk-forward 2025-03-18 to 2026-07-02
40% 40% 50% 50% 60% 60% 70% 70% 80% 80% Model predicted home-win % 35–40% bucket · n=148 · predicted 38.0% · actual 39.9% 40–45% bucket · n=349 · predicted 42.8% · actual 45.9% 45–50% bucket · n=692 · predicted 47.6% · actual 51.3% 50–55% bucket · n=974 · predicted 52.5% · actual 54.0% 55–60% bucket · n=831 · predicted 57.3% · actual 53.9% 60–65% bucket · n=468 · predicted 62.1% · actual 59.8% 65–70% bucket · n=197 · predicted 67.1% · actual 65.0% 70–75% bucket · n=62 · predicted 72.1% · actual 85.5% 75–80% bucket · n=6 · predicted 77.2% · actual 100.0%

Each dot is a probability bucket. On the dashed line the model is perfectly calibrated. Dots above it mean the home team won more often than predicted; below, less often. Bigger dots hold more games.

Vertical axis is the actual home-win rate — it shows where the win probabilities can and can't be trusted.

Probability-bucket calibration
PredictedGamesPredictedActual
35–40% 148 38.0% 39.9%
40–45% 349 42.8% 45.9%
45–50% 692 47.6% 51.3%
50–55% 974 52.5% 54.0%
55–60% 831 57.3% 53.9%
60–65% 468 62.1% 59.8%
65–70% 197 67.1% 65.0%
70–75% 62 72.1% 85.5%
75–80% 6 77.2% 100.0%
By the model's pick
SplitGamesPick accuracy
Model favors home2538 56.8%
Model favors away1243 52.4%
By month
MonthGamesAccuracy
2025-0367 62.7%
2025-04391 59.9%
2025-05411 54.3%
2025-06397 54.2%
2025-07369 53.4%
2025-08421 55.8%
2025-09378 54.2%
2025-1042 50.0%
2025-111 100.0%
2026-0376 59.2%
2026-04392 56.1%
2026-05419 57.0%
2026-06394 51.5%
2026-0723 56.5%
Moneyline — the numbers
Model accuracy (backtest)
55.6%
Market close accuracy
55.5%
Flat-stake ROI at close
-7.0%
Backtest games
4,723
Backtest is walk-forward on 2025-03-18 to 2026-09-13. ROI is a flat 1u on the model's pick at the closing price — negative, and NOT a claimed edge.
Live settled picks
800
Live accuracy
56.0%
Avg confidence
56.5%
Live record — small sample, accumulating daily as games settle.
Prop models projections + distributions, not betting signals

Pitcher Strikeouts

Projects a starter's strikeout total.

Log loss0.7164
Brier0.2442
O/U accuracy51.5%
Market accuracy57.3%

vs the market: trails the market · flat-stake ROI at close -8.0%.

Settled to date: 1139 of 1,569 projections · live settlement began 2026-07-03.
Model window 2026-05-29 to 2026-08-07 · 783 graded · measured 2026-09-07.
Market comparison window 2026-05-29 to 2026-08-07 · 783 closing lines.
Model detail

INFORMATIONAL pitcher-strikeouts prop model (mlb_k_props_v1) — framework first instance (batter hits / pitcher outs / HR / SB reuse the same base). Projection = pitcher K%/BF (recency-weighted, shrunk to league) matched via log5/odds-ratio against opponent team batting K% (LHP/RHP platoon adjusted) and a shrunk home-park K factor, times a recency-weighted workload; priced with a Negative-Binomial (Var=mu+alpha*mu^2, alpha=0.08) chosen over Poisson because per-start Ks are overdispersed (Var/Mean~1.3). Strictly walk-forward: a start informs only later games. Hyperparams tuned on 2015-2022 walk-forward log loss; 2023-2025 held out (clean-window MAE=1.84K, over/under logloss=0.682, acc=0.559). Headline accuracy/log_loss/brier and wins/losses are the market-window over/under backtest vs captured closing lines; market_* are the devigged (Shin) closing line on the SAME games; roi_flat_at_close is a flat 1u on the model-favored side at the closing price — NOT a claimed edge (small n; judge forward performance on CLV). LIMITATIONS: team-level opponent K (pregame lineups unavailable); 2026 opponent-K is a starter-only proxy (event files end 2025); era drift in workloads/K rates handled by recency weighting. STATCAST (roadmap item #1): re-measured with the deployed params; no tuning, no dispersion reselection, no Statcast promotion this run.

Pitcher Outs

Projects outs a starter records (≈ innings × 3).

Log loss0.6901
Brier0.2485
O/U accuracy53.5%

vs the market: not enough evidence — insufficient (n=330 < 500).

Settled to date: 1140 of 1,570 projections · live settlement began 2026-07-03.
Model window 2023-01-01 to 2025-12-31 · 14,578 graded · measured 2026-09-07.
Market comparison window 2026-07-03 to 2026-08-07 · 330 closing lines.
Model detail

INFORMATIONAL pitcher-outs-recorded prop model (mlb_outs_props_v1) — second instance of the MLB prop framework (shares base.py with pitcher strikeouts). Projected outs = a pitcher outs/start durability EWMA (league-shrunk) adjusted multiplicatively by opponent batting OBP (tougher lineups end starts earlier), the club's starter-leash / hook tendency, and the pitcher's recent baserunners-allowed effectiveness — all recency-weighted, so era drift toward shorter modern starts is absorbed. Priced with a DISCRETIZED GAUSSIAN N(mu, sigma=3.3) rather than Poisson/NB: outs-per-start is bounded at 27, piles up at the 18-out quality-start ceiling, and is UNDER-dispersed at the high means where starters live (conditional Var<mu), a regime the Negative-Binomial cannot reach (its method-of-moments alpha here clips to 0). Strictly walk-forward: a start informs only later games. Mean hyperparams tuned on 2015-2022 walk-forward anchor-line log loss; 2023-2025 held out. HEADLINE accuracy/log_loss/brier and wins/losses ARE the out-of-sample 2023-2025 walk-forward record at the half-line nearest each projection, a DIFFERENT population from the market fields — clean-window MAE=3.03 outs, over/under logloss=0.690, acc=0.535. market_accuracy/market_log_loss/roi_flat_at_close come from the 2026-07-03 to 2026-08-07 captured-closing-line window (n=330, devigged with Shin): model acc=0.539 LL=0.730 vs close acc=0.579 LL=0.670, flat ROI -0.85% — the model TRAILS the closing line here and the sample is below the CLV evidence floor. Forward performance is judged on CLV, not on either record. LIMITATIONS: team-level opponent OBP (pregame lineups unavailable); 2026 opponent-OBP is a starter-only proxy (event files end 2025); rain/ejection/injury-shortened outings are irreducible noise the Gaussian absorbs as SD. STATCAST (roadmap item #1): re-measured with the deployed params; no tuning, no sigma reselection, no Statcast promotion this run.

Batter Hits

Projects a batter's hit total.

Log loss0.6702
Brier0.2386
O/U accuracy59.4%
Market accuracy59.3%

vs the market: matches the market log loss · flat-stake ROI at close -6.4%.

Settled to date: 14416 of 19,920 projections · live settlement began 2026-07-03.
Model window 2026-05-28 to 2026-08-09 · 9,661 graded · measured 2026-09-07.
Market comparison window 2026-05-28 to 2026-08-09 · 9,661 closing lines.
Model detail

INFORMATIONAL batter-hits prop model (mlb_hits_props_v1), batter-market anchor of the shared batter-prop spine (TB/HR/SB reuse its feed+state). mu = E[AB] (own EWMA) x per-AB hit rate (EWMA shrunk to league) x league bats-vs-throws platoon split x opposing-starter hit-suppression (EWMA h/BF, damped ^0.25 because starters face ~60% of PAs) x shrunk home-park factor. Count priced with alpha=0.0 chosen by held-out calibration at the 0.5/1.5/2.5 lines ("Poisson-binomial-ish": hits are a sum over a random AB count). Strictly walk-forward; hyperparams tuned on 2015-2022 only; 2023-2025 held out (MAE=0.70 hits, LL=0.643, acc=0.639). Headline metrics + wins/losses are the 2026 market-window backtest vs captured closing lines settled from the new ESPN mlb_batter_game_stats ingest; market_* is the devigged (Shin) close on the SAME picks; roi_flat_at_close is flat 1u on the model-favored side at the close — NOT a claimed edge (judge forward on CLV). LIMITATIONS: no pregame lineup feed (recent-regulars roster heuristic: >=5 starts in 21 days); platoon credited vs starter hand for the whole game line; 2026 rookies lack bats/throws (platoon factor 1.0); 2026 opponent context is starter-only. STATCAST (roadmap item #1): xBA rolling feature searched (2023) but NOT promoted -- sc_xba_weight stays 0.0, i.e. unchanged from the pre-Statcast model; re-measurement run; no sweep

Batter Total Bases

Projects a batter's total bases.

Log loss0.6565
Brier0.2319
O/U accuracy62.7%
Market accuracy58.7%

vs the market: trails the market · flat-stake ROI at close -4.2%.

Settled to date: 14268 of 18,967 projections · live settlement began 2026-07-03.
Model window 2023-2025 walk-forward hold-out · 126,986 graded · measured 2026-09-07.
Market comparison window 2026-07-02 to 2026-08-09 · 4,007 closing lines.
Model detail

INFORMATIONAL batter total-bases prop model (mlb_tb_props_v1) on the shared batter spine: mu = E[hits] x bases-per-hit (player power EWMA shrunk to league) x damped park HR factor; NB alpha=0.35 by held-out calibration at the 1.5/2.5 lines (TB is strongly overdispersed — a HR is 4 TB on one swing). Tuned 2015-2022; 2023-2025 held out: MAE=1.37 TB, anchor LL=0.656, acc=0.627. NO MARKET BACKTEST: batter_total_bases odds capture was only enabled 2026-07-03 (forward capture running; judge on CLV as it accumulates) — market_* fields are null, headline numbers are the walk-forward hold-out at posted-line anchors, NOT vs a market. Settlement needs the ESPN plays feed (2B/3B attribution); games without it stay unsettled. Anchor accuracy is inflated by the many sub-1.5-mu batters priced under at 1.5 — read LL/Brier first. STATCAST (roadmap item #1): sc_hh_weight searched (2023) but NOT promoted -- stays 0.0, unchanged from the pre-Statcast model (no 2024-2025 validation improvement).

Batter Home Runs rare event

Projects P(a batter hits a home run).

Log loss0.3602
Brier0.1046
Market accuracy82.9%

Base-rate accuracy (rare event at the 0.5 line) — read log loss / Brier.

Settled to date: 14416 of 19,920 projections · live settlement began 2026-07-03.
Model window 2023-2025 walk-forward hold-out · 126,986 graded · measured 2026-09-07.
Market comparison window 2026-07-02 to 2026-08-09 · 1,846 closing lines.
Model detail

INFORMATIONAL anytime-HR prop model (mlb_hr_props_v1) on the shared batter spine: P(HR>=1) from mu = E[PA] x per-PA HR rate (EWMA, heavily shrunk: prior=800 PA) x HR platoon split x shrunk park HR factor x opposing-starter HR-suppression^0.5. Poisson-family pricing (alpha=0.0 by held-out calibration; HRs are rare per game so Poisson is near-adequate). Tuned 2015-2022; 2023-2025 held out: LL=0.360, Brier at 0.5. Top predicted deciles calibrate as pred/emp d8:0.15/0.15; d9:0.17/0.17; d10:0.23/0.20. ACCURACY CAVEAT: at the fixed 0.5 line the model almost always says "no HR", so accuracy ~= the base no-HR rate — LL/Brier and the decile table are the real evidence. NO MARKET BACKTEST: batter_home_runs capture enabled 2026-07-03; market_* null; judge forward on CLV. 2026 GAP: starter HR-allowed is not captured in 2026, so the pitcher HR term stops updating after 2025. STATCAST (roadmap item #1): sc_barrel_weight searched (2023) but NOT promoted -- stays 0.0, unchanged from the pre-Statcast model (no 2024-2025 validation improvement).

Batter Stolen Bases rare event

Projects P(a batter steals a base).

Log loss0.2243
Brier0.0596
Market accuracy90.1%

Base-rate accuracy (rare event at the 0.5 line) — read log loss / Brier.

Settled to date: 14268 of 18,967 projections · live settlement began 2026-07-03.
Model window 2023-2025 walk-forward hold-out · 126,986 graded · measured 2026-09-07.
Market comparison window 2026-07-02 to 2026-08-09 · 2,433 closing lines.
Model detail

INFORMATIONAL stolen-base prop model (mlb_sb_props_v1), the LOWEST-SIGNAL market of the four (said plainly): P(SB>=1) from mu = player SB/game (EWMA over started games, heavy shrinkage prior=30 games; speed/attempt profile from the per-game Retrosheet sb columns — the same attempt attribution as mlb_running_events aggregated per player-game) x opposing battery control (team-level SB-allowed/game EWMA vs league)^1.0. alpha=0.35 by held-out calibration at 0.5. Tuned 2015-2022; 2023-2025 held out: LL=0.224. Decile calibration pred/emp d8:0.08/0.10; d9:0.11/0.13; d10:0.16/0.18. Whether a steal is even attempted depends on unobserved game state (score, baserunners, battery tempo) — treat as context, never a signal; accuracy at 0.5 is ~ the base no-SB rate. NO MARKET BACKTEST: batter_stolen_bases capture enabled 2026-07-03; market_* null; judge forward on CLV. 2026 SB comes from the ESPN plays feed (validated 0.735/team-game vs 0.68 league 2025); games without a plays feed stay unsettled. NO STATCAST FEATURE: our Statcast aggregation (roadmap item #1) does not include sprint speed, so SB has no rolling feature yet.