Product / Model Cards
Model cards Pitch Lab · Opportunity Finder

Keystone Stuff

Pitch quality from physical traits alone, graded so 100 is that season’s league average and 10 points is one standard deviation.

Supports: Which pitches to add, cut, or reshape, and which pitchers the market undervalues. Refresh: Nightly in season; retrain each offseason Open Pitch Lab

What it predicts

Count-neutral expected run value per pitch, pitcher perspective. Batted balls are replaced by the average outcome for their exit-velocity × launch-angle bin, which removes defense and sequencing luck.

Inputs

  • Velocity, spin rate, spin axis, extension, release height and side (arm-side normalized)
  • Induced vertical and horizontal break; arm angle
  • Vertical approach angle, adjusted for plate location so the model cannot see location
  • Velocity, movement, and axis differentials vs. the pitcher’s primary fastball

Method

  • Gradient-boosted trees (scikit-learn HistGradientBoosting) on 2024–26 MLB Statcast
  • Leave-one-season-out cross-fitting: every graded pitch comes from a model that never saw that season
  • A production model trained on all seasons grades hypothetical pitch designs and the Stuff landscape, and grades every season of a player’s own history when Keystone compares his seasons (cross-fit folds differ by season, which would show drift that isn’t his). A change is the production model’s; a level is anchored to the published season grade, so a pitcher-season has one Stuff number everywhere on the site
  • The production model was fit on every pitcher it grades, so a Stuff drop is also graded by two pitcher-held-out models (each fit on half the pitchers, grading the other half). Pitch Lab flags a drop of 5+ points only when both agree, and puts runs at stake on the smaller of the two changes
  • Aggregated to pitch-type and pitcher level, then scaled within each season: 100 = that season’s league average (scaling all seasons together left 2026 grades about 2 points high)
  • Forward test: a model trained on 2024 only grades 2025; that grade tracks 2026 results about as well as 2025 results do (see the Pitch Lab and Track Record). The cross-fit grades’ own next-season correlation is optimistic, because the 2025 fold’s model was trained on 2026
  • Unseen pitchers: trained on half the pitchers and tested on the other half, the forward correlation is lower than for pitchers the model has seen, so on a thin sample Stuff is a useful early read, not a better one than results
  • Hypothetical shapes (pitch designs, the landscape) get the approach angle their release, velocity and rise imply (a least-squares fit on real pitches), never a blank the model didn’t see in training
  • Landscape reality check: a map’s best shapes are compared with the real pitches at that shape and velocity (±2 mph) from similar slots, graded by the same model pitch by pitch. A mark above their 90th percentile, or with fewer than five of them, is labeled on the page as the model extrapolating or untested
  • Dead weight: a weak pitch with below-average expected results moves toward his best pitch only against a batter side where that pitch wins by 2+ standard errors (his own results against the side, combined with Stuff and the league’s platoon split for the pitch), valued with those side values, never below 35% fastballs
  • Pitch design: a new pitch is built from his own fastball plus comparable pitchers’ typical differences, graded against the pitch it would compete with (never his primary fastball; first his weakest pitch of the same kind that breaks the same way) under the production model and every cross-fit model, and queued only when it wins by 5+ under all of them and grades no higher than the comps’ 90th percentile, both on their published grades and with the comps graded the same way; otherwise it is labeled fragile. Only for arsenals of four or fewer main pitches, never a pitch he has thrown 100+ times, with 15+ comparable pitchers

How well it works

Computed by the pipeline from the data on this site

Split-half reliability (pitcher level, 250+ pitches per half)
2024: r = 0.99 (465)2025: r = 0.99 (466)2026: r = 0.99 (462)
First-half Stuff → second-half actual run value
r = 0.46 vs. r = 0.43 for first-half results (267 pitchers)
Agreement with FanGraphs Stuff+ (independent model)
r = 0.85 (469 pitchers)
Pitch-level correlation, out of season
2024: r = 0.0422025: r = 0.0442026: r = 0.044
Forward test: a model trained on 2024 pitches only grades 2025, scored on 2026 run value (324 pitchers)
Stuff r = .49 vs. r = .45 for 2025 results (difference +0.03, 95% interval −0.07 to +0.13)
Year over year (same pitchers), r · cross-fit: the grading model had seen the season it’s scored on, so these measure stability, not prediction
2024→2025: Stuff r = 0.81 vs. results 0.45; Stuff → next actual r = 0.56 (not a forecast)2025→2026: Stuff r = 0.82 vs. results 0.45; Stuff → next actual r = 0.60 (not a forecast)

Read it this way: graded by a model that never saw the season it forecasts, Stuff predicts next season’s run value about as well as, and a shade better than, last season’s results (r = .49 vs. .45, inside the noise). Its edge is stability: a pitcher’s Stuff repeats at r ≈ .81, his results at about .45, so it diagnoses which pitches to change long before results settle. Single-pitch correlations are low by nature; the signal is in the aggregate.

Data: 3 seasons of MLB Statcast (2024–2026), 2,130,654 pitches.

What it can't see

  • Location and command are excluded by design. A pitcher can have great stuff and poor results because of where he throws.
  • Sequencing, tunneling, and deception aren’t modeled.
  • No biomechanics, so it can’t say whether a design is physically safe for a given arm.
  • Pitch-type labels come from MLB’s classifier. Misclassified pitches blur the grades.
  • Minor-league grades exist only where Hawk-Eye tracks (Triple-A, parts of the FSL).
  • A built pitch design tends to grade high: the typical shape on his fastball out-graded every comp’s real pitch for about two in five of the ideas that passed the every-model test, so those are labeled fragile, and the best of several candidate pitch types is chosen, which flatters the winner a little more.
  • A grade isn’t exact: refit the model on different seasons and a pitcher’s grade, and his change since last season, move a few points. The Pitch Lab publishes the measured spread and marks a Stuff alert inside it as borderline.
  • For a pitcher whose slot or shape has few neighbours, the published grade leans on his own other seasons: the Pitch Lab marks a leader that a model which never saw him grades 15+ points lower.

How we'd measure impact

  • Prospective: run-value change for pitchers given a model-informed plan vs. matched controls
  • Retrospective: share of dead-weight flags whose pitch the pitcher later reduced, and the results that followed
Keystone is an independent portfolio project. It is not affiliated with Major League Baseball or any club. Data: MLB Stats API, Baseball Savant, FanGraphs. Used under their terms for individual, non-commercial use.