Swing% / Swing%
Batter
Swings divided by pitches. Bunt attempts count as swings, matching Savant.
Agreement with Savant
Checked nightly. Agreement tolerance: ±0.
Pitcher
Swings induced divided by pitches thrown. Bunt attempts count as swings, matching Savant.
Agreement with Savant
Checked nightly. Agreement tolerance: ±0.
Shown for: batter and pitcher.
Formula
sum(swings)::real / NULLIF(sum(pitches), 0) — swings over pitches. Bunt attempts count as swings, matching Savant.
Inputs
pitches.descriptionplate_appearances.swingsplate_appearances.pitches
Era caveats
Three tracking systems across the seasons shown
Rows carry a tracking_era of trackman, hawkeye or hawkeye_bat (migration 001). The systems differ in what they measure and how precisely, so long spans cross a measurement boundary as well as a rule one.
Version history
- 2026-09-02 — Added with the pitch-owner spine, built from description for the same reason whiff_pct is: pitches.is_bunt marks bunts in play only. (runbook §52)