Today's slate
Every probability published for 2026-07-21, before first pitch, graded tonight. These change hourly as lineups post. The evidence that they are calibrated lives on the record.
Strikeout board
0.202 running Brier over 342 line-gradesOne distribution per probable starter. The three lines below are fixed thresholds we set — 4.5, 5.5 and 6.5 for every start — not sportsbook lines; this engine consumes no odds feed. P(over) derives from the full strip by summation, never estimated separately. Each starter publishes when the opposing lineup posts, so the opposing-starter and matchup features are built against the nine he will actually face; if a lineup is not posted 60 minutes before first pitch, the prediction publishes from a roster-filtered projection instead. The archive records which (opp_nine_source). (An earlier lineup-aware feature was withdrawn 2026-07-19 — see the engine-era note on the record — but the publish trigger it describes is unchanged.)
LAD at PHI #
Hits board
0.201 running Brier over 1882 gradesA full hits distribution per starting batter against the announced starter. From 2026-07-19, batter predictions publish only from posted starting lineups, as each team's card posts (typically 1 to 4 hours pre-game). The 2026-07-18 slate was the transition and was still 94% projected, so it is NOT part of the posted-only era despite following 7/17. A side whose lineup never posts pre-game gets no predictions that day. The 7/17 rows were projection-based, as declared at the time; the provenance of every row is labeled in the archive (lineup_source), so this claim is checkable rather than asserted.
Los Angeles Dodgers at Philadelphia Phillies #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Andy Pages | LAD | vs Zack Wheeler | 68% | 24% |
| Kyle Schwarber | PHI | vs Justin Wrobleski | 67% | 24% |
| Freddie Freeman | LAD | vs Zack Wheeler | 66% | 22% |
| Shohei Ohtani | LAD | vs Zack Wheeler | 66% | 22% |
| Trea Turner | PHI | vs Justin Wrobleski | 65% | 28% |
| Bryson Stott | PHI | vs Justin Wrobleski | 65% | 24% |
| Brandon Marsh | PHI | vs Justin Wrobleski | 64% | 27% |
| Mookie Betts | LAD | vs Zack Wheeler | 64% | 21% |
| Bryce Harper | PHI | vs Justin Wrobleski | 64% | 24% |
| Tommy Edman | LAD | vs Zack Wheeler | 63% | 23% |
| J.T. Realmuto | PHI | vs Justin Wrobleski | 62% | 21% |
| Kyle Tucker | LAD | vs Zack Wheeler | 61% | 21% |
| Alec Bohm | PHI | vs Justin Wrobleski | 61% | 24% |
| Edmundo Sosa | PHI | vs Justin Wrobleski | 60% | 18% |
| Max Muncy | LAD | vs Zack Wheeler | 59% | 21% |
| Derek Hill | PHI | vs Justin Wrobleski | 58% | 19% |
| Alex Call | LAD | vs Zack Wheeler | 53% | 18% |
| Eliezer Alfonzo | LAD | vs Zack Wheeler | 47% | 10% |
Minnesota Twins at Cleveland Guardians #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Chase DeLauter | CLE | vs Kendry Rojas | 67% | 25% |
| Brayan Rocchio | CLE | vs Kendry Rojas | 63% | 23% |
| Steven Kwan | CLE | vs Kendry Rojas | 63% | 19% |
| Travis Bazzana | CLE | vs Kendry Rojas | 61% | 22% |
| Austin Hedges | CLE | vs Kendry Rojas | 55% | 17% |
| Rhys Hoskins | CLE | vs Kendry Rojas | 54% | 16% |
| Petey Halpin | CLE | vs Kendry Rojas | 51% | 14% |
| David Fry | CLE | vs Kendry Rojas | 50% | 13% |
| Gabriel Arias | CLE | vs Kendry Rojas | 49% | 12% |
Tampa Bay Rays at Toronto Blue Jays #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Vladimir Guerrero Jr. | TOR | vs Drew Rasmussen | 69% | 25% |
| Ernie Clement | TOR | vs Drew Rasmussen | 66% | 26% |
| Nathan Lukes | TOR | vs Drew Rasmussen | 65% | 24% |
| Kazuma Okamoto | TOR | vs Drew Rasmussen | 62% | 22% |
| George Springer | TOR | vs Drew Rasmussen | 61% | 22% |
| Brandon Valenzuela | TOR | vs Drew Rasmussen | 60% | 20% |
| Daulton Varsho | TOR | vs Drew Rasmussen | 58% | 19% |
| Andrés Giménez | TOR | vs Drew Rasmussen | 51% | 14% |
| Jonatan Clase | TOR | vs Drew Rasmussen | 51% | 16% |
Baltimore Orioles at Boston Red Sox #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Taylor Ward | BAL | vs Eduardo Rivera | 68% | 25% |
| Pete Alonso | BAL | vs Eduardo Rivera | 68% | 26% |
| Gunnar Henderson | BAL | vs Eduardo Rivera | 66% | 25% |
| Leody Taveras | BAL | vs Eduardo Rivera | 58% | 21% |
| Jackson Holliday | BAL | vs Eduardo Rivera | 55% | 16% |
| Coby Mayo | BAL | vs Eduardo Rivera | 55% | 17% |
| Tyler O'Neill | BAL | vs Eduardo Rivera | 55% | 18% |
| Christian Encarnacion-Strand | BAL | vs Eduardo Rivera | 55% | 17% |
| Chadwick Tromp | BAL | vs Eduardo Rivera | 53% | 15% |
San Diego Padres at Atlanta Braves #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Michael Harris II | ATL | vs Walker Buehler | 69% | 25% |
| Ozzie Albies | ATL | vs Walker Buehler | 69% | 24% |
| Matt Olson | ATL | vs Walker Buehler | 69% | 24% |
| Drake Baldwin | ATL | vs Walker Buehler | 67% | 26% |
| Mauricio Dubón | ATL | vs Walker Buehler | 65% | 26% |
| Austin Riley | ATL | vs Walker Buehler | 60% | 22% |
| Brewer Hicklen | ATL | vs Walker Buehler | 59% | 23% |
| Jim Jarvis | ATL | vs Walker Buehler | 58% | 22% |
| Mike Yastrzemski | ATL | vs Walker Buehler | 58% | 18% |
San Francisco Giants at Kansas City Royals #
| Batter | Team | Opposing starter | P(1+ hit) | P(2+ hits) |
|---|---|---|---|---|
| Jung Hoo Lee | SF | vs Luinder Avila | 71% | 23% |
| Rafael Devers | SF | vs Luinder Avila | 70% | 25% |
| Casey Schmitt | SF | vs Luinder Avila | 69% | 29% |
| Heliot Ramos | SF | vs Luinder Avila | 69% | 28% |
| Bryce Eldridge | SF | vs Luinder Avila | 65% | 26% |
| Willy Adames | SF | vs Luinder Avila | 65% | 23% |
| Carter Jensen | KC | vs Tyler Mahle | 64% | 22% |
| Starling Marte | KC | vs Tyler Mahle | 64% | 23% |
| Jac Caglianone | KC | vs Tyler Mahle | 63% | 24% |
| Drew Gilbert | SF | vs Luinder Avila | 63% | 20% |
| Michael Massey | KC | vs Tyler Mahle | 63% | 22% |
| Lane Thomas | KC | vs Tyler Mahle | 63% | 23% |
| Salvador Perez | KC | vs Tyler Mahle | 62% | 20% |
| Vinnie Pasquantino | KC | vs Tyler Mahle | 62% | 22% |
| Nick Loftin | KC | vs Tyler Mahle | 62% | 21% |
| Jesus Rodriguez | SF | vs Luinder Avila | 61% | 18% |
| Christian Koss | SF | vs Luinder Avila | 60% | 18% |
| Tyler Tolbert | KC | vs Tyler Mahle | 60% | 19% |
Home run board
0.108 running Brier over 941 gradesP(1+ home run) per starting batter, the classic low-base-rate market. About 13% of graded starters have homered, so probabilities live in the 2 to 30% range, exactly where calibration is hardest to fake. Fully posted-lineups-only from 2026-07-19; the 2026-07-18 slate was a transition (94% still projected), and 7/17 was projection-era. Park HR context is a model feature, built from our own data and strictly prior. Probability bars on this board are drawn on a 0 to 40% scale for legibility; the printed number is the truth.
Los Angeles Dodgers at Philadelphia Phillies #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Brandon Marsh | PHI | vs Justin Wrobleski | 27% |
| Kyle Schwarber | PHI | vs Justin Wrobleski | 26% |
| Shohei Ohtani | LAD | vs Zack Wheeler | 25% |
| Trea Turner | PHI | vs Justin Wrobleski | 22% |
| Mookie Betts | LAD | vs Zack Wheeler | 19% |
| Bryce Harper | PHI | vs Justin Wrobleski | 17% |
| Freddie Freeman | LAD | vs Zack Wheeler | 17% |
| Alec Bohm | PHI | vs Justin Wrobleski | 16% |
| Derek Hill | PHI | vs Justin Wrobleski | 16% |
| Andy Pages | LAD | vs Zack Wheeler | 14% |
| Edmundo Sosa | PHI | vs Justin Wrobleski | 14% |
| Max Muncy | LAD | vs Zack Wheeler | 14% |
| Bryson Stott | PHI | vs Justin Wrobleski | 13% |
| Tommy Edman | LAD | vs Zack Wheeler | 13% |
| Kyle Tucker | LAD | vs Zack Wheeler | 12% |
| Alex Call | LAD | vs Zack Wheeler | 12% |
| J.T. Realmuto | PHI | vs Justin Wrobleski | 12% |
| Eliezer Alfonzo | LAD | vs Zack Wheeler | 9% |
Minnesota Twins at Cleveland Guardians #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Rhys Hoskins | CLE | vs Kendry Rojas | 15% |
| Gabriel Arias | CLE | vs Kendry Rojas | 13% |
| Chase DeLauter | CLE | vs Kendry Rojas | 12% |
| David Fry | CLE | vs Kendry Rojas | 12% |
| Travis Bazzana | CLE | vs Kendry Rojas | 11% |
| Austin Hedges | CLE | vs Kendry Rojas | 11% |
| Brayan Rocchio | CLE | vs Kendry Rojas | 10% |
| Petey Halpin | CLE | vs Kendry Rojas | 9% |
| Steven Kwan | CLE | vs Kendry Rojas | 4% |
Tampa Bay Rays at Toronto Blue Jays #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Brandon Valenzuela | TOR | vs Drew Rasmussen | 19% |
| Kazuma Okamoto | TOR | vs Drew Rasmussen | 15% |
| Vladimir Guerrero Jr. | TOR | vs Drew Rasmussen | 14% |
| George Springer | TOR | vs Drew Rasmussen | 14% |
| Daulton Varsho | TOR | vs Drew Rasmussen | 11% |
| Jonatan Clase | TOR | vs Drew Rasmussen | 9% |
| Nathan Lukes | TOR | vs Drew Rasmussen | 9% |
| Andrés Giménez | TOR | vs Drew Rasmussen | 8% |
| Ernie Clement | TOR | vs Drew Rasmussen | 6% |
Baltimore Orioles at Boston Red Sox #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Pete Alonso | BAL | vs Eduardo Rivera | 15% |
| Coby Mayo | BAL | vs Eduardo Rivera | 15% |
| Taylor Ward | BAL | vs Eduardo Rivera | 13% |
| Tyler O'Neill | BAL | vs Eduardo Rivera | 12% |
| Gunnar Henderson | BAL | vs Eduardo Rivera | 10% |
| Christian Encarnacion-Strand | BAL | vs Eduardo Rivera | 8% |
| Leody Taveras | BAL | vs Eduardo Rivera | 8% |
| Chadwick Tromp | BAL | vs Eduardo Rivera | 7% |
| Jackson Holliday | BAL | vs Eduardo Rivera | 6% |
San Diego Padres at Atlanta Braves #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Matt Olson | ATL | vs Walker Buehler | 17% |
| Drake Baldwin | ATL | vs Walker Buehler | 16% |
| Michael Harris II | ATL | vs Walker Buehler | 14% |
| Austin Riley | ATL | vs Walker Buehler | 14% |
| Mike Yastrzemski | ATL | vs Walker Buehler | 14% |
| Ozzie Albies | ATL | vs Walker Buehler | 11% |
| Jim Jarvis | ATL | vs Walker Buehler | 11% |
| Brewer Hicklen | ATL | vs Walker Buehler | 11% |
| Mauricio Dubón | ATL | vs Walker Buehler | 10% |
San Francisco Giants at Kansas City Royals #
| Batter | Team | Opposing starter | P(1+ HR) |
|---|---|---|---|
| Heliot Ramos | SF | vs Luinder Avila | 20% |
| Rafael Devers | SF | vs Luinder Avila | 20% |
| Jac Caglianone | KC | vs Tyler Mahle | 19% |
| Salvador Perez | KC | vs Tyler Mahle | 17% |
| Bryce Eldridge | SF | vs Luinder Avila | 16% |
| Casey Schmitt | SF | vs Luinder Avila | 16% |
| Lane Thomas | KC | vs Tyler Mahle | 15% |
| Carter Jensen | KC | vs Tyler Mahle | 15% |
| Willy Adames | SF | vs Luinder Avila | 13% |
| Nick Loftin | KC | vs Tyler Mahle | 10% |
| Jesus Rodriguez | SF | vs Luinder Avila | 10% |
| Starling Marte | KC | vs Tyler Mahle | 9% |
| Vinnie Pasquantino | KC | vs Tyler Mahle | 9% |
| Christian Koss | SF | vs Luinder Avila | 8% |
| Tyler Tolbert | KC | vs Tyler Mahle | 7% |
| Jung Hoo Lee | SF | vs Luinder Avila | 7% |
| Michael Massey | KC | vs Tyler Mahle | 7% |
| Drew Gilbert | SF | vs Luinder Avila | 7% |
Totals board
2.452 running CRPS over 15 graded gamesThe full run-total distribution per game, published before first pitch and graded by CRPS — the proper score for a whole distribution. Every P(over) below is a summation over the published strip, never a separate model, which is what stops this board and the run distributions from contradicting each other.
What clearing the launch gate does and does not mean
The gate is a floor, not a skill test. Our launch threshold was a backtest CRPS below 2.5678. A null model that knows one binary fact — which team is at home — and nothing else scores 2.5604 against that same gate. So clearing it means "not worse than knowing nothing", not "has an edge".
Any edge over climatology is marginal at best. On the 558-game holdout the model scored 2.5466 against climatology's 2.5678, and the paired-bootstrap 95% interval on that gap, [-0.0413, -0.0007], excludes zero by only 0.0007 — less than this engine's own seed-to-seed variation. We read that as suggestive, not established. The live record is what will settle it. It clears the pre-registered floor on 100% of 100 refits — that is refit reproducibility, not a confidence statement.
The companion winners market is not published: it cleared its gate on only 73% of 100 refits, so it failed and is being held. That miss is written down rather than quietly retried.
LAD at PHI #
| Mean | Run-total distribution | P(over 7.5) | P(over 8.5) | P(over 9.5) | Source |
|---|---|---|---|---|---|
| 9.26 | 60% | 52% | 43% | posted/posted lineups |
SF at KC #
| Mean | Run-total distribution | P(over 7.5) | P(over 8.5) | P(over 9.5) | Source |
|---|---|---|---|---|---|
| 9.43 | 63% | 55% | 45% | posted/posted lineups |
| Line | Graded | Brier | Climatology | Gap |
|---|---|---|---|---|
| Over/under 7.5 | 15 | 0.2309 | 0.2430 | -0.0121 |
| Over/under 8.5 | 15 | 0.2589 | 0.2504 | +0.0085 |
| Over/under 9.5 | 15 | 0.2826 | 0.2458 | +0.0368 |
These lines are fixed at the same values for every start, not set to each pitcher's coin-flip point the way a market would. That places them well for a typical starter and badly for the extremes — an ace is a near-certain over at all three, a soft-tosser a near-certain under — so line Briers are flattered at both ends relative to what market-set lines would produce. Log-loss and the calibration curves score the whole distribution and do not have this problem. Benchmarking against de-vigged closing lines is goal CL-1 in the benchmarks, and is not live yet.
Probabilities, not picks. Not betting advice.