Barrel% / Barrel%
Batter
Share of balls in play classified as barrels (launch_speed_angle = 6). The denominator is bip, not bbe — every ball in play, tracked or not.
Agreement with Savant
Checked nightly. Agreement tolerance: ±0.
Pitcher
Share of balls in play against classified as barrels (launch_speed_angle = 6). The denominator is bip, not bbe — every ball in play, tracked or not.
Agreement with Savant
Checked nightly. Agreement tolerance: ±0.
Shown for: batter and pitcher.
Formula
sum(barrel)::real / NULLIF(sum(bip), 0) — barrels over BALLS IN PLAY, matching the same bip denominator hardhit_pct uses and not the narrower bbe.
Inputs
plate_appearances.barrelplate_appearances.bip
Era caveats
Bunts leave the averages but stay in these denominators
Savant's bunt handling is asymmetric, and matching the asymmetry is what makes these rates reconcile. Bunts are dropped from the exit-velocity and launch-angle averages, but they remain in bip, the denominator barrel_pct and hardhit_pct both divide by. Measured on 2025: barrel_pct = barrels/bip reconciles 251 of 251 qualified batters, while barrels/bbe manages 182 and barrels/(bip minus bunts) only 115. (runbook §16)
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-08-11 — Denominator moved from bbe to bip, matching Savant's attempts exactly: 251/251 of 2025's qualified batters, up from 182/251 under the old bbe denominator. Unlike hardhit_pct, this is an EXACT match, not a best-available one. (runbook §16)