xBABIP Spreadsheet
Here at Rotographs, it is brought up quite often that a player’s xBABIP and BABIP don’t agree. With the help of slash12, I have created a quick and easy method of calculating a hitter’s xBABIP. I have a downloadable spreadsheet that takes the batted ball data and calculates a xBABIP.
While others have created other xBABIP formulas, I find the one from slash12 (originally published at Beyond the Boxscore) to be the most accurate.
xBABIP = 0.392 + (LD% x 0.287709436) + ((GB% – (GB% * IFH%)) x -0.152 ) + ((FB% – (FB% x HR/FB%) – (FB% x IFFB%)) x -0.188) + ((IFFB% * FB%) x -0.835) + ((IFH% * GB%) x 0.500)
Here is a description of the formula’s creation and usage from slash12 in his own words:
This xBABIP formula was something I developed to provide an easy way to estimate a batters BABIP given his batted ball percentages as they appear on Fangraphs. I did this by doing a linear regression on the batted ball percentages against historic batted ball data. I’ve found that it has a very high correlation with a batters current year BABIP, however, sample sizes need to be considered as with everything else. Given the fickle nature of BABIP in general, it’s recommended you keep in mind a batters historic BABIP as well. A career .300 BABIP hitter isn’t likely to be a true .360 BABIP hitter, even if his batted ball data says that he is over the course of a partial season.
Here are a couple simple examples where this equation is useful:
Player X 2010: .300 xBABIP .290 BABIP
Player X 2011(April->June) .307 xBABIP .220 BABIPHere, xBABIP helps reassure us, that Player X is most likely the same hitter he’s always been, he’s just been having some bad luck.
Player Y Career: .330 xBABIP .340 BABIP
Player Y 2010: .370 xBABIP .390 BABIP
Player Y 2011(April->June) .372 xBABIP .380 BABIPPlayer Y may have indeed changed his approach in 2010, and 2011 in such a way that his hitting for higher BABIP is legit (perhaps he’s gained bat speed, or a previous injury has finally healed).
The following is a procedure for downloading and using the spreadsheet. First download the spreadsheet from Google Docs by going to File, Download As and select the desired format (don’t select .csv). Open the spreadsheet in Excel or OpenOffice (they are the only two formats I verified). Next, go to a hitter’s Batted Ball data (like Dustin Pedroia). Select and copy all the yearly data (some funkiness happens with the career data).
Finally, open the downloaded spreadsheet and Paste the copied data into the spreadsheet (select/highlight the Yellow box that designates the first year before pasting).That is it. The xBABIP values will be automatically generated.
A players xBABIP will be calculated without having to hand enter every number. Hopefully you find the information useful and let me know if you have any questions.
Jeff, one of the authors of the fantasy baseball guide,The Process, writes for RotoGraphs, The Hardball Times, Rotowire, Baseball America, and BaseballHQ. He has been nominated for two SABR Analytics Research Award for Contemporary Analysis and won it in 2013 in tandem with Bill Petti. He has won four FSWA Awards including on for his Mining the News series. He's won Tout Wars three times, LABR twice, and got his first NFBC Main Event win in 2021. Follow him on Twitter @jeffwzimmerman.

Thank you so much! I have been looking for something like this for so long!
Thanks
Is there research to suggest that previous season BIP data should affect current season xBABIPs? By including previous seasons, aren’t we actually measuring a BIP distribution that isn’t necessarily consistent with the current season?
good question, could we get an answer for this I’m curious as well.
To oversimplify, we’re mostly just talking about Line drives, and infield flyballs (the largest factor’s influencing your xBABIP). From year to year, both these can fluctuate quite a lot, just like a batters BABIP does. This is not the be all, end all predictor of BABIP that we wish it could be, unfortunately. It does, however give you a picture of what a hitter is doing, and in conjunction with other statistics (like Career, and previous years BABIP), helps you draw better conclusions about how a guy is hitting. If you’ve got a career .300 BABIP hitter (with thousands of at bats) showing a .390 xBABIP over a year, or a month, or anything, I’d be highly skeptical of them continuing that trend. However xBABIP helps show that at least he’s “earning” his hits, and it’s not just a matter of a lot of bloops, or grounders missing outfielders, he’s hitting the ball soundly.
I’m not sure that really answers your question, but my hunch is, given enough plate appearances, historic BABIP is a better predictor of future BABIP then xBABIP is. This isn’t the next FIP/xFIP, there’s some skill in a hitters batted ball data, but it fluctuates alot more then most other stats.
I would definitely change some, but in may Avila article:
http://www.fangraphs.com/fantasy/index.php/alex-avila-can-he-repeat-2011/
His career BABIP and xBABIP are within 1 point. They seem to even out over time.
Just want to note that these numbers should be taken with a grain of salt, as they don’t account for ballpark factors. A more accurate xBABIP would involve the same percentages used in the above formula coupled with BIP data from various stadiums (I did this earlier in the year with the Yankees lineup and found that all the players regressed towards the numbers I got).
It didnt work for me… I have a mac with 2011 excel so i dont know if that’s why.
the copy paste didnt work, that is. it all goes in the first box only
Do you have a “Paste Special” option. You may be able to set the characters to that are pasted (merging, spaces, etc)
I’d like to request xBABIP to be added to each player’s statistics page for easy reference.
Hopefull you will see some much cooler items first, but it is entirely possible. Priorities and work have been pushed back due to Dave’s cancer treatment.
In my humble opinion, xBABIP is the main stat that FanGraphs lacks for analyzing baseball players for fantasy purposes. BABIP is semi-useful and is one of the main things I look at, but I end up having to look at his batted ball profile to estimate an xBABIP so it is only marginally useful. But BABIP becomes extremely useful when seen next to an xBABIP. Honestly, there really aren’t any other stats that I know of that I would prefer to see more.
NICE!
This is amazing! Thanks
If the 3.10 (or something similar depending on the year) constant for FIP is meant to account for a pitcher getting league average defense and league average outcomes on ball in play and we accept that BABIP results cause ERA to deviate from FIP, could this FIP constant be refined for each pitcher as some function of the difference between his opponent’s xBABIP and league average xBABIP?
eg. 3.10 + (constant)*(xBABIP – laBABIP).
This comes with the assumption that a pitcher has the ability to influence FB%, GB%, LD%, etc. which may not be perfect but is seemingly better than the assumption that a pitcher can influence the outcome of these defense dependent events.