Statcast’s new public repository of bat tracking data has been out for a few weeks now. Like every number manipulator with a sense of curiosity and middling technical skills, I’ve been messing around with the data in my spare time, and also in my working time, because messing around with data is both my job and hobby.
Mostly, I’ve been reaching some conclusions that mirror what others have already shown, only with less technical sophistication on my part. This article by Sky Kalkman does a great job summing up the biggest conclusion: Pitch location and spray angle (pull/oppo) influence swing length so much that you probably shouldn’t quote raw swing length. But I thought I’d look for something slightly different, and I think I found something.
Here’s the high level conclusion of my search: When pitchers throw harder fastballs, hitters slow down their swings to compensate. It sounds counterintuitive. Shouldn’t hitters speed up their bats to try to get to the faster pitch? But I had a hunch that this wasn’t the case. If you listen to hitters describe their approach against flamethrowers, they focus on shortening up and putting the ball in play. “Shortening up” might sound like it describes swing length, but it also surely describes swing speed. A hitter who is just punching at the ball likely won’t swing as hard as one trying to launch one. If you’re prioritizing having your bat on plane with the ball as long as possible, you probably aren’t focusing as much on raw speed.
Here’s a further conclusion: Pitch velocity impacts hitters’ ability to make optimal contact with the ball. You can measure this effect, and it’s greater in magnitude than the variation in swing speed. Hitters are shortening up to make more consistent contact, but it’s just downright harder to square up a faster pitch. The result is weaker contact on average. Combine the slightly slower swing speed and the worse contact quality, and you get a delightful result: The combination of slower swings and worse contact offsets the gain in exit velocity attendant in faster pitch speeds almost exactly.
That’s the conclusion, but I’ll be honest with you, I’m eager to share my methodology because I want to know if I did this right. The internet is full of people who are good at statistics, and I’m certainly not the best at it. I’ll walk through how I did it, explain the magnitude of the effect, and then try to make some conclusions based on that effect. I’d love for someone to point out where I’ve messed up my methods or should make an adjustment, because that’s a great way to learn.
Let’s start with the dataset. I took every single four-seam fastball and sinker for which Statcast recorded a swing speed. That gave me 44,084 observations. Clearly, the first thing we need to do is control for hitter identity. Hitters have far more to say about swing speed than pitchers. In other words, it matters much more which hitters face 99 mph fastballs than how those hitters change their approach. My first step, then, was to find each hitter’s average swing speed against each type of fastball.
I calculated this for every single hitter who has recorded a swing against a fastball in 2024. As an example, Shohei Ohtani’s average swing speed against four-seamers this year is 73.9 mph; against sinkers, he’s averaged 74.2 mph. I noted each batter’s average against each pitch type.
Next, we have to control for count. As demonstrated in this excellent article by Steve Brown and Patrick Dubuque, count is vitally important in determining swing speed, so I controlled for that as well. For each combination of pitch type and count (0-0 sinkers, 1-2 four-seamers, etc.), I calculated the average swing speed you’d expect given the population of hitters using the calculated average swing speeds from up above. This gave me an expected swing speed in the absence of count effects. I compared the realized swing speeds to those expectations to determine the effect of count.
My findings largely mirrored those of Brown and Dubuque. I wouldn’t expect them to be exactly identical, because they’re looking at all pitch types while I’m considering two specific ones. Here are those findings in two tables:
Swing Speed Change By Count, Four-Seamers
Balls |
Strikes |
Actual |
Modeled |
Diff |
0 |
0 |
69.89 |
69.37 |
0.52 |
0 |
1 |
68.62 |
69.29 |
-0.67 |
0 |
2 |
66.96 |
69.31 |
-2.35 |
1 |
0 |
70.60 |
69.31 |
1.28 |
1 |
1 |
69.49 |
69.39 |
0.10 |
1 |
2 |
67.81 |
69.36 |
-1.56 |
2 |
0 |
72.00 |
69.37 |
2.63 |
2 |
1 |
70.41 |
69.45 |
0.96 |
2 |
2 |
68.45 |
69.35 |
-0.90 |
3 |
0 |
73.65 |
70.93 |
2.73 |
3 |
1 |
72.06 |
69.39 |
2.67 |
3 |
2 |
70.11 |
69.47 |
0.64 |
Swing Speed Change By Count, Sinkers
Balls |
Strikes |
Actual |
Modeled |
Diff |
0 |
0 |
69.60 |
69.95 |
-0.35 |
0 |
1 |
69.19 |
69.97 |
-0.79 |
0 |
2 |
67.67 |
69.64 |
-1.97 |
1 |
0 |
71.05 |
70.05 |
1.00 |
1 |
1 |
70.03 |
69.90 |
0.12 |
1 |
2 |
68.34 |
69.86 |
-1.52 |
2 |
0 |
71.57 |
70.16 |
1.42 |
2 |
1 |
70.94 |
69.97 |
0.97 |
2 |
2 |
69.18 |
69.88 |
-0.69 |
3 |
0 |
74.66 |
71.65 |
3.01 |
3 |
1 |
72.53 |
70.02 |
2.50 |
3 |
2 |
70.51 |
70.06 |
0.45 |
This says roughly what you’d expect. Hitters let it eat when they’re ahead in the count and swing more slowly to prioritize contact when they’re behind. If you don’t account for this effect, your answer won’t make sense. Consider an obvious cross-correlation: Pitchers throw harder when they reach two-strike counts. Hitters naturally swing more defensively in two-strike counts. If you don’t control for count, you’ll find that hitters swing slower at faster pitches, and it’ll be an artifact of count.
Using these two controls, I produced an estimated “control” swing speed for each swing against a fastball this year: hitter average swing speed against a given type of fastball plus the count adjustment. This metric isn’t perfect, because different hitters adjust their swings differently with two strikes, but to be honest with you, it sounded daunting to chop up my data further and I was skeptical that it would improve things very much, so I stuck with this approach.
In any case, I now had a number to work off of, namely how fast I expected each batter to swing given who they were and what count they were facing. The difference between that expectation and their actual swing speed could be down to any number of factors, including game state, how they were feeling that day, what pitch they were looking for, whether the umpire sneezed during their backswing and distracted them slightly, random noise – you name it. But pitch speed is also something that can affect swing speed, and in aggregate, the hope is that those other random factors even out.
How does the data work out in practice? Here’s a table of the difference between my expected swing speed and the actual swing speeds recorded, grouped by pitch velocity:
Four-Seam Velo and Swing Speed
Velo |
Swing Speed |
Pred Swing Speed |
Difference |
Observations |
89 |
69.70 |
69.62 |
0.08 |
807 |
90 |
69.90 |
69.38 |
0.52 |
922 |
91 |
69.61 |
69.54 |
0.07 |
1789 |
92 |
69.60 |
69.47 |
0.13 |
3161 |
93 |
69.57 |
69.46 |
0.11 |
4163 |
94 |
69.35 |
69.41 |
-0.06 |
4753 |
95 |
69.19 |
69.34 |
-0.15 |
4809 |
96 |
69.45 |
69.34 |
0.11 |
4071 |
97 |
69.01 |
69.22 |
-0.21 |
2632 |
98 |
68.88 |
69.15 |
-0.28 |
1323 |
99 |
69.36 |
69.02 |
0.34 |
673 |
100 |
68.36 |
69.04 |
-0.69 |
306 |
101 |
68.30 |
68.77 |
-0.47 |
107 |
102 |
69.06 |
68.95 |
0.12 |
35 |
103 |
65.19 |
68.56 |
-3.37 |
12 |
104 |
71.95 |
70.83 |
1.12 |
1 |
Sinker Velo and Swing Speed
Velo |
Swing Speed |
Pred Swing Speed |
Difference |
Observations |
89 |
69.52 |
69.83 |
-0.31 |
1140 |
90 |
70.33 |
69.77 |
0.55 |
1052 |
91 |
70.67 |
70.04 |
0.63 |
1575 |
92 |
70.68 |
70.08 |
0.61 |
1874 |
93 |
70.12 |
70.11 |
0.01 |
2132 |
94 |
69.64 |
70.14 |
-0.51 |
2133 |
95 |
69.57 |
69.96 |
-0.38 |
1793 |
96 |
69.57 |
69.83 |
-0.26 |
1385 |
97 |
69.54 |
69.66 |
-0.12 |
784 |
98 |
68.85 |
69.52 |
-0.66 |
381 |
99 |
69.87 |
69.45 |
0.42 |
182 |
100 |
70.94 |
70.10 |
0.83 |
58 |
101 |
69.17 |
70.43 |
-1.27 |
20 |
102 |
68.81 |
70.01 |
-1.20 |
11 |
As you can see, the bulk of the observations occur between 92 and 97 mph, which makes good sense: that’s the cruising speed of most pitchers. Relative to what you’d expect based on who the hitters are and when they see the fastballs, hitters swing meaningfully slower at fast fastballs and meaningfully faster at slow fastballs. To wit, against four-seamers thrown below 92 mph, hitters swing 0.16 mph faster than their modeled swing speed. Against four-seamers thrown 97 mph or harder, they swing 0.19 mph slower than their modeled swing speed. The effect holds true for sinkers; below 92 mph, hitters swing .42 mph faster than modeled swing speed, while at 97 mph or above, they swing 0.18 mph slower than modeled swing speed.
This effect is incontrovertibly statistically significant — I ran a number of different tests and they all agreed on that — but it’s also tiny. A difference of less than a quarter of a mile an hour just doesn’t matter that much when it comes to how hard a ball can be hit. The exact equation for how hard a ball can be hit depends on more than just swing speed and pitch speed, but a good approximation is 1.23 * swing speed + .23 * pitch speed at home plate. Pitch speed at home plate can be roughly approximated as 0.92 * release speed.
That’s more info than you really need, but we’ll be using it in a second. For now, think of it this way: When a pitcher releases the ball 5 mph faster, it adds 1.06 mph to the theoretical maximum exit velocity assuming the hitter squares it up perfectly. Meanwhile, decreasing your swing speed by 0.2 mph decreases your theoretical maximum exit velocity by 0.25 mph. That’s just too small of an effect to matter, even with swing speed exerting far more influence on exit velocity than pitch speed. The amount batters slow down by simply isn’t enough to sway the results.
That said, “how fast batters swing” is only part of what makes a fast fastball good. In fact, it’s a small part. Batters are slowing their swings down in an attempt to square the ball up more frequently. They’re failing.
I reused my methodology from above and focused on a new variable to measure this effect. For every four-seamer or sinker where Statcast recorded both a swing speed and an exit velocity, I measured the theoretical maximum exit velocity using the above equation. I compared the actual exit velocity to that maximum to get a percentage of maximum that each hitter achieved. As an example, when Luis Arraez makes contact with a four-seamer, he achieves an average of 86.8% of his theoretical maximum exit velocity. When Oneil Cruz makes contact with a four-seamer, he achieves an average of 75.8% of his theoretical maximum.
As before, I further adjusted for count. The correlation between percentage of maximum exit velocity achieved — let’s call it pureness of contact from here on out — and count is much less clear than the correlation between count and swing speed. For example, the two counts that result in the highest pureness of contact against four-seamers relative to expectation are 3-0 and 0-2. Those are polar opposite counts, and hitters take very different swings depending on which one they face. From the table up above, you can see that batters swing roughly 5 mph slower on 0-2 than 3-0. You can intuit that these two counts result in equally pure contact for different reasons. In 0-2 counts, hitters are focusing on contact. In 3-0 counts, hitters are selecting a specific pitch to look for and swinging all-out. When they make contact, it’s generally in a good location and on a pitch they were targeting.
One of the sharp relationships that jumped out when bat tracking data debuted was the inverse correlation between swing speed and squared-up rate. This makes logical sense: swing slower, make better contact. But pureness of contact declines relative to expectation against fast fastballs. More specifically, against four-seamers thrown 92 mph or less, batters achieve 0.24 percentage points more pureness of contact than expected based on their identity and the count. Against four-seamers thrown 97 mph or harder, they achieve 0.34 percentage points less pureness of contact. The relationship is magnified against sinkers; batters achieve a 0.2 percentage point gain in pureness of contact at 92 mph and below, as compared to a 0.92 percentage point decrease in pureness of contact against sinkers thrown 97 mph or harder.
That’s a ton of numbers, but the conclusion is fairly simple: Batters square up hard fastballs less frequently than you’d expect from their overall skill, despite swinging slower in an attempt to square those fastballs up. Here are the pureness of contact tables based on pitch speed for your perusal:
Four-Seam Velo and Pureness of Contact
Velo |
Pureness |
Pred Pureness |
Difference |
Observations |
89 |
79.50% |
79.05% |
0.46% |
641 |
90 |
79.66% |
79.33% |
0.33% |
744 |
91 |
79.54% |
79.13% |
0.41% |
1416 |
92 |
79.34% |
79.27% |
0.06% |
2420 |
93 |
79.30% |
79.22% |
0.08% |
3194 |
94 |
79.49% |
79.26% |
0.23% |
3553 |
95 |
79.29% |
79.30% |
-0.01% |
3493 |
96 |
78.93% |
79.30% |
-0.37% |
2951 |
97 |
79.08% |
79.43% |
-0.36% |
1917 |
98 |
79.06% |
79.33% |
-0.27% |
925 |
99 |
79.24% |
79.78% |
-0.54% |
446 |
100 |
79.09% |
79.63% |
-0.54% |
211 |
101 |
81.79% |
79.73% |
2.06% |
63 |
102 |
76.30% |
79.90% |
-3.60% |
17 |
103 |
77.88% |
79.73% |
-1.85% |
6 |
104 |
81.04% |
75.83% |
5.21% |
1 |
Sinker Velo and Pureness of Contact
Velo |
Pureness |
Pred Pureness |
Difference |
Observations |
89 |
78.87% |
79.15% |
-0.28% |
947 |
90 |
79.89% |
79.17% |
0.71% |
865 |
91 |
79.10% |
78.97% |
0.13% |
1289 |
92 |
79.31% |
79.04% |
0.27% |
1517 |
93 |
79.30% |
79.03% |
0.27% |
1754 |
94 |
79.05% |
78.95% |
0.10% |
1706 |
95 |
78.81% |
78.93% |
-0.13% |
1417 |
96 |
78.80% |
79.17% |
-0.37% |
1098 |
97 |
78.28% |
79.08% |
-0.80% |
598 |
98 |
78.30% |
79.44% |
-1.14% |
280 |
99 |
78.28% |
79.11% |
-0.83% |
141 |
100 |
77.98% |
78.16% |
-0.19% |
35 |
101 |
75.16% |
79.61% |
-4.45% |
12 |
102 |
76.58% |
79.45% |
-2.87% |
6 |
There’s an amusing equivalence here. Take an average hitter (72 mph swing speed) with average pureness of contact (79.3% against four-seamers). Start with an average four-seamer and you’ll get an average exit velocity. Then add four ticks to the fastball with the attendant changes in swing speed (-0.2 mph) and pureness of contact (-.34%) — you’ll get almost exactly the same exit velocity. Because fast sinkers produce even less pure contact (albeit in a small sample), you’ll actually achieve a lower exit velocity from a faster pitch, though the effect is small (0.5 mph).
In other words, after you control for who takes the swings and which count they take them in, hitters’ slower swings and less pure contact almost perfectly offset the increase in potential hit speed created by a faster pitch. I’ve always heard the classic aphorism: harder pitches get hit harder. If you could maintain the exact same swing speed and contact quality, that would be true. In practice, however, that’s not how it works. Batters adjust their behavior against faster fastballs. That adjusted behavior, combined with the attendant difficulty in squaring up a fast pitch, drives the speed back down.
There’s plenty more research to do on this front. I’m only scratching the surface here, I’m sure. In fact, if you’d like to play around with the data yourself, here’s a spreadsheet with all the data I used. I think this finding is intuitively appealing, though. I just don’t buy that hitters mash fast pitches thanks to the ball coming in fast. It doesn’t track with what I see when I watch baseball. In practice, hitters take worse and slower swings, which offsets the potential exit velo gains that come from a fast pitch. Great, just what we needed: another study that says throwing hard is good.
Source
https://blogs.fangraphs.com/faster-fastballs-produce-worse-swings/