One of baseball’s best defining features is that it is beautifully ordered chaos. It’s far more predictable than any other sport, but the variance and sequencing of its predictability is what makes it so damn fun. Sometimes, hitters do the right things and aren’t rewarded while other times, hitters swing at bad pitches or make bad contact and find their way on base. Error bars around predictability can be a harsh mistress, and such was the case for Harrison Bader in 2019, whose numbers declined. However, there’s a lot more to that story. Come with me into the multiverse of madness where we can take a different look at Bader’s season.
We live in an era with data available to us that tells a much richer story than the info your grandfather absorbed in the Sunday box scores. With Statcast, we know how fast players can run, how hard they hit the ball, and how far the batted ball goes. We know spray directions, and how frequently these data points lead to hits or outs. Enter two tools- xBA (expected batting average) and xHR/FB (expected homeruns per flyball). With these tools, we can see which players performed better or worse than their traditional numbers.
First, here is Statcast’s definition of xBA:
Expected Batting Average (xBA) is a Statcast metric that measures the likelihood that a batted ball will become a hit. Each batted ball is assigned an xBA based on how often comparable balls — in terms of exit velocity, launch angle and, on certain types of batted balls, Sprint Speed — have become hits since Statcast was implemented Major League wide in 2015. (As of January 2019, xBA now factors in a batter’s seasonal Sprint Speed on “topped” or weakly hit” balls).
If we search Baseball Savant for all balls in play, and then sort by xBA, it provides an expected batting average on balls in play. Here is that search if you’re interested. From there, we also know how many balls in play each hitter produced. If you deduce the difference in their actual BABIP and their Statcast xBA on balls in play, you find how many more or less hits they should have had based on the parameters in the definition. In other words, how many hits should the player have had on balls in play, and how many did he actually get?
The second tool is xHR/FB from Mike Podhorzer, author of Projecting X 2.0. His metric looks at average flyball distance, the spray direction of flyballs, the hitter’s home ballpark, and how frequently a hitter barrels up a pitch to project the percentage of a hitter’s flyballs that should leave the yard. His formula projects HR/FB% with an adjusted R-squared of .792. In other words, it’s pretty accurate.
Comparing a hitter’s actual HR/FB to his xHR/FB will tell us whether or not they surpassed or fell short of the homerun total they were most likely to have. Multiply the difference between the two percentages by the number of flyballs they hit and you can pinpoint how far off a hitter was from what a similar hitter would have had with the same quality of contact.
These tools in tandem allow us to rethink performance. If we simply award or subtract a single for each hit a batter lost or gained to xBA discrepancy, and adjust their homeruns based on xHR/FB, entire seasons start to look different. This is where we find the portal to an alternate universe version of Harrison Bader, one with a kinder landing place on the error bars. Zach Gifford touched on this in his own excellent piece over at Birds on the Black earlier this week, which prompted a great DM conversation that led to this article. In fairness, I have no clue how Zach feels about overt Doctor Strange references.
Batted ball luck cost Bader eight hits in 2019. The difference between his xBABIP and actual BABIP was one of the larger differences in the league, in the cursed upper quartile. Simply adding eight singles to his 2019 batting line results in a .228 batting average, .333 OBP, .389 SLG, and .722 OPS. It places his wOBA just a bit under Paul DeJong last year if you’d like a frame of reference. To clarify, this isn’t giving him good luck in 2019. We’re simply awarding him the number of hits that the average hitter would have had by hitting the ball the way Bader did, with Bader’s speed.
Now let’s look at xHR/FB. Bader undershot his expected HR/FB by 3.52%. Among the 320 hitters with 250+ plate appearances, Bader had the 20th worst gap. He had 99 flyballs, which makes the math very easy. If Bader’s HR/FB had been the same as the average hitter with his profile, Bader would have had 3.5 more homeruns (putting aside that nobody has ever hit half of a homerun).
Let’s put it all together in a scatterplot. Here is the number of singles and homeruns gained or lost for all players with 250 plate appearances. Bader is highlighted in red, and I’ve also identified some other outliers.
With average performance on the kinds of batted balls they produced, players in the bottom left would have seen more homeruns and singles. Players in the top right would see fewer homeruns and singles. Bader wasn’t quite the extreme in value lost, but he was close. Bader’s gap between his expected and actual wOBA has him as the 24th most victimized player last season.
Now let’s compare his actual season to the season an average player would have had with his batted ball profile:
Harrison Bader, Actual vs. Expected Slash Stats
BADER 2019 | Actual | Expected |
---|---|---|
BADER 2019 | Actual | Expected |
AVG | 0.205 | 0.238 |
OBP | 0.314 | 0.342 |
SLG | 0.366 | 0.429 |
OPS | 0.680 | 0.771 |
ISO | 0.161 | 0.191 |
That OPS is in between DeJong and Kolten Wong. His adjusted ISO is closer to Michael Brantley than, say, actual production comps like Austin Romine and Stevie Wilkerson. Moreover, his adjusted OBP and SLG would have represented slight increases over his 2018 season despite a lower batting average. It’s important to reiterate that none of this is wishcasting, either. This is simply the result of giving Bader the results that an average player would have had on similar types of contact. In fairness, that’s not the complete story. As Zach pointed out in our conversation, it’s possible that Busch Stadium plays as a harder ballpark for power than is currently known.
That said, Bader’s improved numbers with the x-stats also tracks with other real world gains he made last season. He lifted his hard hit percentage by 4.5% on Baseball Savant, produced 3% more barrels, increased his walk percentage by 4%, and even slightly decreased his strikeout rate by a very modest 0.5%. His exit velocity (+0.6 mph) and launch angle (+0.7 degrees) reflected other modest imrpovements. He increased his contact rate by 1.5%, reduced his swinging strike percentage by 1.6%, and generally showed a more patient approach at the plate.
All of the underlying metrics went in the right direction for Bader in 2019. The puzzling part was that it didn’t translate to better numbers. With the x-stats, we can see that there’s more production there. If the 2019 version of Bader comes back or even makes a few more strides, he’s a good bet to recover and even improve on his 2018, leaving 2019 in the dust.