Keystone Location & Pitching
Location grades where pitches were thrown for the count, on one height-based zone; Pitching combines that with Stuff. Each season is centered on its own league.
What it predicts
The same count-neutral expected run value as Stuff (batted balls replaced by the average outcome for their exit velocity and launch angle).
Inputs
- Location: horizontal position relative to the batter (inside/away), height on a height-based strike zone (27% to 53.5% of the batter’s listed height, the 2026 ABS zone, used for every season so 2024–25’s taller stance-based zone doesn’t read as a different place), balls and strikes, pitch family, same- or opposite-handed matchup
- Pitching: every Stuff input plus the location and count inputs
- Location values are centered within pitch family and batter-side matchup, so throwing more breaking balls isn’t counted as “command”
Method
- Location: gradient-boosted trees fit within each season and cross-fit by game (three folds), so each season’s value surface is that season’s own called zone. Location’s inputs don’t identify a pitcher, so fitting within a season doesn’t learn individuals. A model trained on other seasons misgraded 2026’s high pitches
- Pitching: gradient-boosted trees, leave-one-season-out (its physical inputs do identify pitchers)
- Pitch-level predictions averaged by pitch type and pitcher, then scaled within each season: 100 = that season’s average, 10 points = 1 SD. On the old pooled scale and stance-based zone, 2026 averaged about 91 and every pitcher’s Location fell about 15 points from 2025
- Location calibration check every build: in each season, actual minus predicted run value is near zero in every height band from below the zone to above it (Pitching isn’t held to it; see blind spots)
- Validated against walk rate, next-season walk rate, K−BB% and FIP, side by side with Stuff
- Time-ordered test: Stuff and Pitching trained on 2024 only; Location fit within 2025 (cross-fit by game), so it sees no 2026 pitch. All three grade 2025 and are scored on 2026. Location predicts next season’s walk rate but not its runs; Pitching adds nothing to Stuff for next season’s runs
How well it works
Computed by the pipeline from the data on this site
- Does Location measure command?
- r = −0.69 with same-season walk rate (Stuff: 0.11; 469 pitchers)
- Reliability: split-half, within season
- 2024 Location 0.66 · Pitching 0.832025 Location 0.66 · Pitching 0.812026 Location 0.71 · Pitching 0.83
- Forward test: 2025 grades scored on 2026 results (324 pitchers). Stuff and Pitching trained on 2024 pitches only; Location fit within 2025 on that season's other games (cross-fit by game), centered on 2025; it sees no 2026 pitch
- Next season’s run value Pitching r = .48 vs. Stuff .49; Location alone −.03 Next season’s walks Location r = .46 vs. .53 for last season’s walk rate
- Stability, season to season · cross-fit: each grading model had seen the season it’s scored on, so the run-value columns aren’t forecasts
- 2024→2025 Location YoY 0.67 · Stuff 0.81; with next season’s run value: Stuff 0.56, Pitching 0.48, Location 0.00, last season’s results 0.45 (311 pitchers)2025→2026 Location YoY 0.70 · Stuff 0.82; with next season’s run value: Stuff 0.60, Pitching 0.51, Location −0.03, last season’s results 0.45 (324 pitchers) Location is a stable skill; going forward it adds nothing to Stuff for predicting runs. We publish that rather than force a combined grade.
Data: 3 seasons of MLB Statcast (2024–2026), 2,130,654 pitches.
What it can't see
- No intended target: the model grades where the pitch ended up, not where the catcher set up, so it can’t separate a bad plan from a missed spot.
- Location says almost nothing about next season’s run prevention beyond what Stuff already says. Use it to diagnose walks, not to project ERA.
- Sequencing and tunneling (how pitches look out of the hand together) aren’t modeled.
- Each season’s called zone (2026’s ABS challenges included) is folded into the outcome, so Location rewards hitting that season’s zone; it can’t separate a pitcher’s command from how the zone was called.
- Zone heights come from listed heights, not measured ones (the 2026 Statcast zone matches 53.5% of listed height to within 0.02 ft).
- Pitching is fit leave-one-season-out, so each season is graded by a model of other seasons’ called zones. Its grades for pitches at the top of the zone are off by up to about 2 runs per 100 pitches in 2026 (graded too well) and up to about 1 in 2024–25 (graded too poorly), because the called zone changed in 2026. It is shown as a percentile and drives no decision.
How we'd measure impact
- Walk-rate change for pitchers given a command plan vs. matched controls
- Share of “command work” pitchers whose Location grade improves the next season