Methodology
Everything below is computed from public MLB play-by-play — ~30,000 MLB + AAA games, 2.1M+ plays, 9.5M+ pitches across 2015-2026 — by an engine we built from scratch. No proprietary feeds, no black boxes. The full research write-ups (including the ones where we were wrong) are public.
The pipeline, validated
We compute our own run expectancy, win probability, and leverage from raw play-by-play. Cross-checked against FanGraphs for 2024 qualified batters: RE24 correlation 0.975, WPA correlation 0.905. When our numbers differ from the field’s, we say so and say why.
The two validated signals
From 1.23M balls in play with launch data, two quantities matter most:
- EV95— a hitter’s 95th-percentile exit velocity. The most stable metric in our engine (year-over-year r = 0.88).
- The luck gap — actual results on contact minus what the launch physics say they should be, park- adjusted. Mostly transient, which is exactly what a regression signal should be.
We tested whether these predict future value beyond current performance — and we froze the entire protocol before looking at the test data: models, coefficients, scaling, success criteria, and what we would publish if it failed. One evaluation, published regardless.
On the held-out seasons (n = 721 qualified batter-seasons): the luck gap predicted -0.6234 WAR per SD (p <0.0001), EV95 predicted +0.2746 (p = 0.0165), and the combined signal separated top from bottom quintiles by +1.151 annualized WAR. All pre-registered criteria passed. One metric computation bug was found and disclosed in the results document — because a pre-registration you only cite when convenient is not a pre-registration.
Bonus finding
Along the way we re-derived a classic on our own pipeline: clutch performance is not a repeatable skill (year-over-year r = 0.043 across 2377 qualified batter pairs). We publish results like this even when they are not flattering to the idea of prediction, because that is the point of the site.
What the signals cannot do
- Batters only. Our pitcher metrics (a stuff model with year-over-year r = 0.87) are stability- validated but NOT outcome-validated — pitcher rows are watchlist, never calls.
- MLB only. The AAA pre-consensus board runs the same machinery on Triple-A Statcast, but that application is the frontier, not the proven core.
- Residual, not level. The signals rank who is likely to out- or under-perform their current value — they do not rank who is best.
- Means, not certainties. Effects are quintile averages. Individual calls will miss. The ledger counts them.
The rules we operate under
- Every call filed with metric, threshold, window, and timestamp before it counts.
- Resolution computed, never argued.
- The ledger is append-only; corrections are appended in public, never edited in.
- We take positions in a player’s cards only after the call is published, and disclose when we do.