Ideal AA% / Ideal AA%
Batter
Share of competitive swings with an attack angle between 5 and 20 degrees, inclusive.
Agreement with Savant
Checked nightly. Agreement tolerance: ±7 — in swings, through its numerator ideal_aa_swings; the rate itself is only that count over a count that is also judged (runbook §60).
Pitcher
Share of competitive swings against this pitcher with an attack angle between 5 and 20 degrees, inclusive.
Agreement with Savant
Checked nightly. Agreement tolerance: ±5 — in swings, through its numerator ideal_aa_swings; the rate itself is only that count over a count that is also judged (runbook §60).
Shown for: batter and pitcher.
Formula
sum(ideal_aa_swings)::real / NULLIF(sum(comp_swings), 0) — competitive swings with attack_angle BETWEEN 5 AND 20 (inclusive; §58 found no swing on the boundary) over competitive swings.
Inputs
pitches.attack_anglepitches.bat_speedplate_appearances.ideal_aa_swingsplate_appearances.comp_swings
Era caveats
Bat tracking begins 2023-07-14
Savant's bat-tracking fields -- bat speed, swing length, attack angle, attack direction and swing tilt -- are on the wire from 2023-07-14. Every bat-tracking column is empty for 2015-2022, 2023 covers the second half of the season only, and a span that starts earlier counts only the swings from that date. Parity is unaffected: Savant's own 2023 boards carry the same partial season, and the six closed season-sides reconcile to the player. (runbook §59)
Version history
- 2026-09-13 — Facts and aggregates added (M4 S3). (runbook §59)
- 2026-09-13 — Parity-enforced nightly through ideal_aa_swings, ±7 swings for batters and ±5 for pitchers. (runbook §60)
- 2026-09-16 — Added to the Explorer and the rolling chart (M4 S5). (runbook §61)