Armside

← Methods

HardHit% / HardHit%

Batter

Share of balls in play with an exit velocity of 95 mph or more. The denominator is bip, not bbe — every ball in play, tracked or not.

Agreement with Savant

Recorded, but not parity-enforced. This column is stored and shown; no agreement with Savant is claimed for it.

Pitcher

Share of balls in play against with an exit velocity of 95 mph or more. The denominator is bip, not bbe — every ball in play, tracked or not.

Agreement with Savant

Recorded, but not parity-enforced. This column is stored and shown; no agreement with Savant is claimed for it.

Shown for: batter and pitcher.

Formula

sum(hardhit)::real / NULLIF(sum(bip), 0) — hard-hit balls over BALLS IN PLAY, not over measured batted-ball events. bip counts every ball in play whether tracked or not; bbe counts only those with a measured exit velocity. The numerator also excludes Savant's imputed placeholder velocity for untracked balls.

Inputs

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