Fever BaseballFuture Value Radar (FVR) · On the record
RECORD: 0 HIT · 0 MISS · 9 OPEN · FIRST CALL RESOLVES AUG 12

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 receipts are linked at the bottom of this page, verbatim from the working files.

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:

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

Sprint calls — a forward test, labeled as one

Season-long calls resolve slowly, so the ledger also carries sprint calls: 28–56 day windows filed on the boards’ largest dislocations (a luck gap of at least 0.05 on 100+ balls in play). The bet is the engine’s core thesis on a clock — results converge toward contact quality. Sprints are filed algorithmicallyby this rule on Mondays and Thursdays — no cherry-picking — with a 24-hour founder veto for what the engine can’t see (injury news, trades). Vetoes stay on the public ledger. Season-long calls remain human-filed.

Thresholds are set by a published rule, not by feel. A season-to-date number is diluted — six weeks adds only about a third more sample — so the bar is 70% of the gap closing in-window, scaled by that dilution, floored at the noise floor (0.015). That puts a sprint threshold at roughly 1–1.5 standard deviations of six-week noise: winnable when the thesis is right, missable when it isn’t. Honest boundary: the season-scale effect is holdout-validated; the sprint window is a live forward test, and the sprint record — misses included — is how we’ll judge the calibration.

One hard rule: if a player stops playing mid-window, his number freezes and the call resolves against it at the close. No voids, no do-overs.

The rules we operate under

The receipts

The write-ups this page keeps referring to, published verbatim from the working files: