One public strongest play a day, backed by a timestamped audit trail. The goal is not hype; it is to show the process, the record, and the line context that shaped each decision.
For each starting batter we take a 3-year weighted xwOBA baseline (current season 45%, prior 35%, two years ago 20%) and run it through a Pythagorean run-expectancy model. That's how many runs the lineup should produce against an average pitcher in an average park.
Opposing starter quality (xERA tier + velocity trend) and handedness splits. Bullpen availability scaled by expected inning share. Park run factor. Game-time weather (wind direction + speed, temperature). 14-day form. Schedule strength.
For every game we compute three numbers: moneyline edge (percentage points), runline edge (runs vs the spread), and total edge (runs vs O/U). We also track closing-line value so we can see whether the market moved in our direction after the pick was locked. Anything inside ±1pp / ±0.5 runs we treat as noise.
The 60% stat, precisely: across the 2026 season, in games where the market moved its totals line by at least half a run before first pitch, our model's number was already on the side the market moved toward in 86 of 143 cases (60%). We snapshot our projection against the price available the moment lineups confirm, then compare it to the closing line — that entry-vs-close CLV is recorded on every play, win or lose. Being on the right side of the move means the market keeps agreeing with us after we publish; it does not by itself guarantee winning bets, which is why the full graded record is published alongside it.
Rest, bullpen workload, wind, park, recent form. We backtested the common "angles" against 32,000+ historical games (Princeton + SBR + OddsPortal, 2010-2025) — and standalone, almost none beat the vig. So we surface situational factors as supporting context, never as the thing that makes the pick. The stats model makes the pick; the context just tells the story around it.
Composite = 35% projection edge + 25% confidence + 25% situational alignment + 15% edge size. Then a Kelly bet/pass gate filters out picks that look real but don't clear minimum confidence + edge thresholds.
At 9 AM ET we pull actual game results from MLB Stats API, settle yesterday's pick (win / loss / push), and update the public record. No quietly deleting losses. No "we were 50-0 in May" charts.
Free users get the matchup + the running public record. Pro unlocks today's actual pick — the lean, the edge size, and the Kelly bet/pass verdict — plus the full Betting Analysis grid (every game's ML/RL/Total leans with edge and confidence), Game Deep Dives with pitcher matchups and lineup projections, and a Pick Tracker with personal P&L. It's all the same engine output — we don't hide "premium picks," paid just sees the full board instead of the headline.
Most pick services flood you with plays because volume hides the losses — if you "won 6 of 10," nobody notices the 4 losses. We post one play because that's what the model is actually highest-confidence on. If today's board is weak, the Kelly gate says PASS and we don't tweet a pick. That happens. It's the honest version.
Public aggregates only count picks that were actually published and settled. Internal statuses such as published_pick, unpublished_logged_pick, voided_before_game, and system_error keep the audit trail readable without quietly deleting rows. That is the difference between a transparent record and a marketing chart.
Live dashboard with today's matchup, supporting context, and the running public record — free. Today's actual pick unlocks at Pro.
Open the dashboardMLB betting model guide | Public record policy | Kelly Criterion and PASS | The Lab
For entertainment purposes only. Not financial or betting advice.