Swing Decisions & Contact Value
Splits every hitter’s run value into what he swings at (decision value per 100 pitches, about half of it runs) and what happens when he does (contact value per 100 swings, in runs).
What it predicts
For each pitch: expected run value of taking (called-strike probability × count run values) vs. a league-average swing at that pitch (location, count, velocity, movement).
Inputs
- Pitch location relative to the batter’s own zone; count; batter and pitcher handedness
- Pitch velocity and movement (for the swing model)
- Denoised outcome run values (same batted-ball binning as Keystone Stuff)
Method
- Called-strike classifier fit on takes; swing-value regressor fit on swings (gradient-boosted trees)
- Cross-fit by season so a hitter’s own outcomes never inform his expected values
- Decision value = chosen action minus the alternative; contact value = actual minus expected on swings
- Scale: because each choice is scored against its alternative, decision value counts every run gained about twice (centered on the league it is about 2 × Σ(swing − league swing chance) × (swing value − take value)). Every runs figure uses a measured factor: each batter-season’s actual run value (1,000+ pitches, 2024–26) regressed on both values gives about half a run per unit of decision value and about one per unit of contact value, refit each build. The diagnosis line stays in decision-value units
- Both models know the batter’s and pitcher’s hands, so values are platoon-neutral: 0 = league average for hitters of the same side facing the same hand. The Hitting Lab adds the league’s value for each side-and-hand matchup back when the question is who should face a lefty
- Estimates pool 2026 with 2025 at 0.7 weight and regress toward average by ballasts measured on 2024 → 2025 (pitches for decisions, swings for contact); a split against one hand is the overall estimate plus his own difference, shrunk on its own ballast
- Each estimate carries a posterior SD (normal-normal, per-pitch and per-swing variance from 2025). A diagnosis needs 100 pooled plate appearances against the hand; the line is −0.55, about the bottom fifth; a tag is tentative when the chance he is really past the line is under 70%
- Sub-causes: an approach problem is chasing or passivity (chase rate vs. hittable pitches taken); a contact problem is missing or a lack of damage (zone contact vs. exit velocity and bat speed), by percentile among each season’s regulars. The metrics are pooled like the estimates (2026 + 0.7 × 2025, by PA); a split under 250 pooled PA reads his numbers against all pitchers; only the damage metric that is low is named; a cause is tentative when the two seasons disagree
- Club tables: decisions (in runs, by the measured factor), contact and the lineup’s handedness mix, each measured against the league for that pitcher hand, so the 30 clubs sum to zero
- Forward test on the page: 2024–25 estimates against 2026 results, against raw values, chase rate, zone contact and the overall-only estimate. The swing models are cross-fit by season, so the 2024–25 values come from models trained partly on 2026 pitches; the models don’t know the batter, so the leak is league-level only
How well it works
Computed by the pipeline from the data on this site
- Year-over-year stability (1,000+ pitches both seasons)
- 2024→2025: decisions r = 0.81, contact r = 0.69, chase r = 0.842025→2026: decisions r = 0.73, contact r = 0.61, chase r = 0.83
- Forward test: 2024–25 estimates scored on 2026 (error and correlation against the next season’s value; the estimate vs. last season’s raw number)
- All pitchers (247 hitters, 300+ PA): decisions r = .77 vs. .73 raw (RMSE 0.54 vs. 0.63); contact r = .63 vs. .57 (RMSE 1.02 vs. 1.30)Against left-handers (231 hitters, 100+ PA): decisions r = .64 vs. .54 raw (RMSE 0.79 vs. 0.99); contact r = .52 vs. .31 (RMSE 1.40 vs. 2.47)
- Decision value in runs (decision value per pitch against run value, hitters with 1,000+ pitches)
- 2024: 0.51 runs per unit (r² 0.91, 322 hitters) · 2025: 0.52 runs per unit (r² 0.90, 307 hitters) · 2026: 0.47 runs per unit (r² 0.93, 307 hitters) The site uses 0.49: a unit of decision value is about half a run, so decision value isn’t quoted as runs without it.
- Face validity
- 2024–26 leaders in decision value include Juan Soto and Aaron Judge, the hitters the public metrics also rank best.
Data: 3 seasons of MLB Statcast (2024–2026), 2,130,654 pitches; forward test on hitters with 300+ PA.
What it can't see
- Assumes a league-average swing. Elite hitters’ “hittable” pitches differ from everyone else’s.
- Doesn’t know the hitter’s plan, scouting report, or pitch-recognition cues.
- A split against one hand adds little beyond the hitter’s overall estimate; contact estimates are still slightly too spread out.
- Sub-causes are percentiles of raw (pooled) metrics, not regressed estimates; split-level percentiles are compared with all-pitcher distributions.
- Called-strike probability reflects the umpire zone; ABS challenges shift it at the margins.
How we'd measure impact
- Team decision and contact value vs. LHP, before and after interventions
- Hitting coaches’ agreement rate with diagnoses on video review