Help Me Fix My Statcast Charged Batter xHR/FB Rate

Nearly a year ago, I introduced the newest version of my xHR/FB rate, this time using the new Statcast metric, Barrels per Batted Ball Event (Brls/BBE). Along with Brls/BBE, I included two additional components — pulled and opposite field fly ball percentage, which I just lumped together for the second factor in the equation (oh, and also a park factor adjustment).

Since we only had Statcast data going back to 2015, I was unable to formulate the equation using best practices. Typically, I would want to run the data for all years up through Y-1 and then test the equation on the just completed season to avoid overfitting the data. Instead, I had no choice but to use both 2015 and 2016 data with no season to test. Despite the caveats, a regression produced a rather strong formula with an adjusted R-squared 0.6815. Given the simplicity of the formula and the ease of accessing the data and calculating it, this was a success.

Unfortunately, now the leaguewide HR/FB rate surge has thrown a wrench into my equation! Sad face. Let’s dive into a variety of averages from my master xHR/FB rate file:

xHR/FB Rate Metric Trends
Season # Players Pull% + Oppo% Brls/BBE*  Park Adj xHR/FB HR/FB
2015 445 62.6% 6.5% 11.6% 11.0%
2016 438 63.1% 6.4% 11.6% 12.2%
2017 401 63.3% 6.4% 11.5% 13.3%
*This average is different than what I shared in yesterday’s article, as the population sample I used was larger.

Since 2015, we find that Pull% + Oppo% has risen marginally. Keep in mind that this component of the equation has a significantly smaller effect on xHR/FB rate than Brls/BBE. So the increase here is close to meaningless.

On the other hand, Brls/BBE has stood virtually unchanged. Look at the consistency! Given that the two components of xHR/FB rate have remained pretty darn stable, it’s no surprise then to see that the park adjusted xHR/FB rate marks have barely budged. Actually, if you go out to another decimal point, you’ll see that the mark has declined ever so slightly from 2015.

So, Brls/BBE hasn’t moved any in the past three seasons. But check out the HR/FB rate trend, which you’re all no doubt very familiar with! It’s skyrocketed, despite identical xHR/FB rate components! So, that poses a real problem for the equation as it’s now overshooting 2015 numbers, undershooting 2016, and dramatically undershooting 2017.

Yesterday, I discussed what was intended to be a sort of preface to this challenge. From 2016 to 2017, batters are hitting the same rate of barrels, but more of those barrels are flying out of the yard. We haven’t yet identified exactly why, whether it’s a batter change/improvement or the baseball itself, or perhaps some combination of both.

Right now, though, I’m not as concerned with the why. I just want to know how to fix my equation so each season isn’t so wrong.

The first idea I had was to rerun the regression, now including 2017 data. I still won’t have a test season, but the higher rate of barrels going for a homer in 2017 would force the equation to close the gap between HR/FB and xHR/FB in that season. So let’s get into the results:

New Regression xHR/FB Rates
Season Park Adj xHR/FB HR/FB
2015 12.2% 11.0%
2016 12.1% 12.2%
2017 12.1% 13.3%

The good news: the 2016 xHR/FB rate almost perfectly matches the actual HR/FB rate, and the 2017 expected mark increased by just over half a percent to close the gap with the actual. The bad news: oy vey, now 2015 went from being overshot by a bit to overshot by a lot! And ummmm, despite 2017’s gap closing, it’s still too far off to call it a day and be satisfied.

So what’s an equation creator to do? I close the gap here, while widening the gap there! Should I even be focused on getting all three seasons as close to matching as possible, or simply acknowledge that something changed in 2016 (and maybe even 2017) and accept that there’s not going to be any solution for the time being?

I call on you wonderful readers for help. What do you suggest I do and try? Though I would prefer not to start testing additional components (I’ll probably try incorporating FB% out of curiosity, since intuitively, more fly balls means a greater percentage of BBE could possibly end up in the ideal launch angle range), I am open to any assistance you could provide. This expected metric, along with all my other metrics, drive my Pod Projections, so getting them right is very important to me. Here’s to a weekend of developing the bestest Statcast-charged xHR/FB rate yet!





Mike Podhorzer is the 2015 Fantasy Sports Writers Association Baseball Writer of the Year. He produces player projections using his own forecasting system and is the author of the eBook Projecting X 2.0: How to Forecast Baseball Player Performance, which teaches you how to project players yourself. His projections helped him win the inaugural 2013 Tout Wars mixed draft league. Follow Mike on Twitter @MikePodhorzer and contact him via email.

32 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Jim Melichar
6 years ago

My quick thoughts (I’m working on the same thing).

I’d try feature engineering with batted balls between ~16-32 degrees to the pull side. Ditto with balls hit at >97mph (maybe try 100mph too).

So basically breaking the component pieces of barrels down further.

2015 is being thrown off by the extra carry in the 2016 and 2017 balls. Can you try using 2016 data only to predict 2017? Or try 2nd half of 2015 and 2016 to predict 2017.

What’s important tho are those well struck balls in those bins.