Eight Players Under Performing their xOBA
I’ve been developing expected stats that attempt to objectively measure the true batting skill for individual players, and I’ve done my best to describe them over the past few weeks. Today is more about application. I’ve taken all players with 100+ plate appearances and sorted them based upon their difference between wOBA and xOBA. Here are eight of the biggest xOBA under performers for the season to date:

| name | team | G | PA | AB | xAVG | ΔAVG | xOBP | ΔOBP | xSLG | ΔSLG | xBABIP | ΔBABIP | xOBA | ΔOBA |
| Kendrys Morales | KC | 45 | 182 | 166 | .258 | -.071 | .314 | -.067 | .509 | -.196 | .260 | -.052 | .347 | -.098 |
| Trevor Plouffe | MIN | 29 | 120 | 115 | .281 | -.029 | .306 | -.031 | 0.487 | -.104 | .313 | -.030 | .326 | -.042 |
| Brian Dozier | MIN | 41 | 175 | 155 | .237 | -.037 | .320 | -.033 | 0.413 | -.077 | .255 | -.038 | .321 | -.044 |
| Cameron Rupp | PHI | 27 | 106 | 103 | .327 | -.045 | .350 | -.048 | .624 | -.187 | .390 | -.020 | .395 | -.076 |
| Howie Kendrick | LAD | 39 | 137 | 128 | .297 | -.070 | .339 | -.069 | .424 | -.135 | .356 | -.087 | .325 | -.076 |
| Adam Jones | BAL | 38 | 166 | 154 | .280 | -.053 | .333 | -.050 | .516 | -.152 | .302 | -.046 | .358 | -.073 |
| Nick Markakis | ATL | 44 | 199 | 167 | .284 | -.050 | .388 | -.041 | .400 | -.077 | .330 | -.053 | .358 | -.054 |
| Prince Fielder | TEX | 46 | 192 | 170 | .249 | -.055 | .320 | -.049 | .363 | -.081 | .297 | -.067 | .302 | -.054 |
Lower differences indicate a player has under performed their expected stat.
Alrighty, let me explain this chart a little. The xAVG, xOBP, xSLG, xBABIP, and xOBA are all stats I calculate based upon the velocity and launch angle of the batted balls. The Δ columns are the differences between the measured stat and the expected stat, for example AVG – xAVG = ΔAVG. The lower the number, the more the player has under performed their expected values.
Before I get into anything else, I’d like to point to an addition I have made to my stats google doc. I’ve added a front page that includes both the actual (AVG, OBP, SLG, BABIP and wOBA) and expected (xAVG, xOBP, xSLG, xBABIP, and xOBA) stat for each batter in the 2016 season. I have organized it in a manner that puts the normal and x version of each stat adjacent to one another, so you can more easily compare the individual elements. Although, that makes it a little harder to compare the whole slash lines, but, hey, give and take. I also include a number of basic stats, like HR, K, BB, etc, which you can look at, and use to filter players if you choose to do so. To be clear, these are actual game stats, not a prediction or expected value. There are also lines for each team, but I generally keep the teams filtered out. They have the player name “team”, so you can filter them if you want.
Kendrys Morales has had a normal down period. I have created a 30 game moving average chart using my batted ball stats for Kendrys Morales to highlight this point.

Looking at Kendrys’ moving average chart, he appears to follow an almost sinusoidal pattern of performance, with a period of about 100 games or so. He had a trough around game 80 of last season, and another around game 180 (as in, the beginning of this season). He also peaked around games 40 and 140 last season. Following that same pattern, you’d expect him to peak again around game 240. He will reach game 210 next week, so, going by his this pattern, you’d expect him to have a solid month of June. In addition to this simple pattern, his exit velocity has barely changed, hovering around 92.7-92.9 mph, Value Hits remain a strong 8.8%, and his xOBA is .347. A lot of people have barked at his seemingly slow start, but from the batted balls side of things, nothing appears to be wrong with Morales. He’s just being himself, a guy who goes through pretty regular ups and downs. His just happened to coincide with the beginning of a season, so he didn’t have the stats cushion to cover it up.
Expected: .258/.314/.509
To date: .187/.247/.313
Career: .270/.327/.457
Cameron Rupp has taken a huge stride forward, but it probably isn’t sustainable. Rupp’ss 96.3 mph average exit velocity is his biggest red flag. That is not a sustainable figure, but it is difficult to tell exactly how off it may be from what could become his new average exit velocity. Last season he averaged 89.7 mph with a 12 degree average vertical launch angle. This year he is pushing 96.3 mph with an 8.9 degree launch angle. That means a whole lot more base hits, and his xBABIP has rocketed from .295 last year to .390 this season. His value hit rate has jumped from 7.4% to 12.3%, which means he is also hitting a lot more high value balls that have a high chance of landing as extra bases and home runs. He will never be able to keep this pace up, 96mph average exit velocity is way too high and it will regress. However, where exactly he will land is still up in the air. We do know, for one quarter of a season, he has hit the cover off the ball. Being a catcher makes it all that more impressive. Many people have questioned whether Rupp has been getting luck to post these numbers. That doesn’t appear to be the case, although he may be in an unsustainable hot streak.
Expected: .327/.350/.624
To date: .282/.302/.437
Career: .240/.294/.372
Howie Kendrick should be putting up career average numbers. Howie Kendrick’s batted balls haven’t changed much, if at all. His average exit velocity has gone from 90.6 to 91.1, a modest increase, while his average launch angle has gone from 2.7 to 1.5. Together, these two effects roughly cancel out. His value hit rate is slightly down, 5.1% from 6.2% last year, probably because his average launch angle is down, leading to more singles. His xOBA has subsequently dropped from .338 to .325, while is xBABIP has leaped from .334 to .356. Slightly more singles, slightly fewer extra base hits, but roughly the same overall. He certainly does not deserve the drastically reduced results he has suffered through so far this season. You can probably attribute much of his poor performance to a little bad luck and a reasonably small sample size. He should be putting up career average numbers right now, roughly equal to what he finished the season with last year. There isn’t much to worry about here.
Expected: .297/.339/.424
To date: .227/.270/.289
Career: .291/.331/.419
Adam Jones has gotten unlucky. His batted balls are of significantly higher quality this year over last year, you would expect his in game performance to have gone up. It hasn’t. It hasn’t at all. Somehow, he has managed to put up pretty atrocious numbers through the first quarter of the season, but this isn’t going to last. His average exit velocity is up from 89 to 92mph, value hit rate up from 7.7 to 10.6%. That boils down to a .366 xOBA and .303 xBABIP. His batted balls, you’d expect, should result in surging power numbers with a relatively constant batting average. He put up numbers like this back in 2012, when he bat .287/.334/.505 with .361 wOBA, perhaps the best season of his career to date. Those are the sorts of number you’d expect from his current batted ball production. Adam Jones has had some bad luck, but he has played very well. Don’t give up on him, he is going to turn it around and you might see some career numbers at the end of the season.
Expected: .280/.333/.516
To date: .227/.283/.364
Career: .277/.318/.459
Nick Markakis‘ power may be coming back. After undergoing a surgery to repair a herniated disc in December 2014, he put up pretty disappointing power numbers in the 2015 season. He kept his batting average high, though, showing it wasn’t necessarily a large drop in skill, but rather, perhaps, a weakness in his arms or back that limited his ability to drive the ball. His power production reached an all time low in 2015, with three home runs and an ISO of .080. This year, and yes, I am aware he only has one home run, and it only came a few days ago, his power seems to be taking a step forward. His xSLG is .411, as a result of nineteen balls that had a greater than 1/3 chance of being an extra base hit, including four that had had a greater than 1/3 chance of being a home run. His expected AVG is .294, right around his career average, and his xBABIP and xOBA are .341 and .368 respectively. In addition, his average exit velocity is up from 89mph to 93mph, and his average launch angle improved from 7.5 to 9.4 degrees. It appears that Nick has managed to reintroduce some pop into his bat without sacrificing any other aspect of his game. Although he has perhaps lost a few homers to bad luck this season, he is still on pace to hit 10-12, in addition to potentially a career high in doubles. He hit 48 in 2008 with the Orioles, and so far he is on pace for 49 this year.
Expected: .284/.388/.400
To date: .234/.347/.323
Career: .289/.359/.426
Prince Fielder’s batted ball stats are down across the board. His average exit velocity is down from about 91-92 this time last season to 88-89, which translates to about 9% off BABIP and 12% off wOBA, on average. His average vertical launch angle has dropped from 8 degrees to 5.9 degrees, which knocks about 9% off BABIP and 12% off wOBA. These two figures combined gives you an .297 xBABIP and an .303 xOBA. His in game performance has been well below these figures, though, and he has only managed to bat a .198/.267/.287 slash line with .230 BABIP and .247 wOBA. But, it isn’t all doom and gloom for the big guy. Yes, his skills appear to have been fading with each passing season, but, his batted ball stats suggest he isn’t quite done yet, even though all of the signs suggest this may be the worst season in Fielder’s career. He has trended downwards for several years, but, and this is a big but, he is still making contact like a league average hitter. Not great, but good. Passable. He should have upside, too. The guy has managed a roughly league average expected batting line while in one of the coldest stretches of his career, his eventual hot streaks may be about as valuable as they were last season.
Expected: .249/.320/.363
To date: .193/.269/.281
Career: .284/.384/.509
Brian Dozier has had a disappointing first quarter, but should be putting up career average numbers. The 29 year old has been worth 0 WAR so far this season, after putting up two solid years in a row. He has suffered from second half-itis, as you can read about here. Perhaps that is a warning sign of some sort, perhaps he was playing injured, perhaps it is a weird fluke. I don’t know. However, I do know that Dozier is very much under performing his batted ball quality this season. His batted ball quality has dropped somewhat from last season, but not by a terrible amount, and it might be attributable to his rise in vertical angle (to 15 degrees from 13.8). His average exit velocity is down 1.5 to 86.4mph, Value Hit rate down 1.4 to 7.4%, and xOBA down 16 points to .320. In other words, he has gone from an All Star, leading the league in second basemen home runs, to a solidly above average player. Except, his in game performance is well under this level. He’s batting around the Mendoza line, jumping on and off the interstate at times. His slugging is way down, BABIP is atrocious, part due to his increased propensity towards fly balls. Dozier, you’d expect, should be having a lot more of these high value fly balls landing than he has seen so far this season. That’s probably bad luck, and hopefully something that will even out over time.
Expected: .237/.320/.413
To date: .200/.287/.336
Career: .237/.313/.406
Trevor Plouffe has been putting up almost identical batted balls this year as he did last year. In all likelihood, and unfortunately we don’t have the data, he was putting up the same numbers back in 2013 as well. His average exit velocity has stayed around 90.7 with an average vertical angle just north of 11. His xOBA dropped slightly from .334 to .326 this year, but his xBABIP has gone from .296 in 2015 to .313 this year. He is roughly the same batter, producing roughly the same batted balls. His results have not, to date, kept pace. They probably will catch up, though. I fully expect him to finish the year with numbers similar to what he put up last year.
Expected: .281/.306/.487
To date: .252/.275/.383
Career: .245/.307/.418
Andrew Perpetua is the creator of CitiFieldHR.com and xStats.org, and plays around with Statcast data for fun. Follow him on Twitter @AndrewPerpetua.
Your approach to player analysis is a true breath of fresh air. Leagues can no longer be won by using FIP and babip… those inefficiencies are gone. Kudos to your work, long may it reign!!!
Ugh. Just when I was coming to terms that I might have to give up on Fielder and accept that he’s not even worth a bench spot in a 12-team league, you tell me there’s a chance he’s not cooked. A chance!
I really liked this article. However, I’m concerned about the number of players on this list that seem to lack speed. Is it possible that this is impacting their forecasts? I’m not advocating, just asking!
Speed is definitely a factor you should keep in the back of your mind, it seems to be able to add or subtract about 20 points to your xBABIP for particularly fast or slow runners. Guys who are roughly average runners don’t really seem to make a big difference. However, these stats do seem to be able to measure batting skill itself, which is still a useful tool to measure. There really aren’t any other stats that objectively measure the ability to make good contact, everything else factors in speed, defense, etc or rely on subjectivity. So, that is something you should always keep in mind in looking at these stats. Speed plays a factor, so does defense (shifts, for example). I’m trying to measure the bat tool, how often a player makes good contact.
I hope to work speed into the equation at some point, but at this time I just don’t have the information on hand to work with, unfortunately. The foot speed stats available right now don’t seem to measure what we want to know (ie, how long it takes to run from home to second base, for example). Maybe next season they will give out some more base running stats, they seem keen on touting certain players running x mph, or taking y seconds to run the bases, so it seems like a natural step to release that stuff eventually. Although, maybe they don’t want us to know all that data for some reason.
Also, if I am not mistaken, park is not accounted for, right? So saying a player “should” be hitting x/y/z based on his xOPS is a bit aggressive for those players who play in extreme parks. Assuming the goal of your xStats is to predict future actual stats, can you make the proper park adjustments? Users can do it for themselves (as they currently need to for stats like xFIP), but hoping you can provide this adjustment at the source. Thanks for all the hard work.
I do apply a pretty simple and old school park factor to the stats, yes. But I am very unhappy with it at the moment. If you think about it, once you introduce angles to the stats, the complexity of park factors goes up by a lot. Each horizontal angle on the field will have different park effects, which correspond to the varying park dimensions and where defenders play. Then you have to factor in the vertical angles and exit velocity to figure out how deep onto the field the ball is going and figure out how that changes with the park. Park factors are a nontrivial issue when you’re working with statcast data, and I haven’t found an easy solution yet. In some ways it might be better to just ignore it until a real solution is identified. It takes a few years of data to build up park factors even with the old school methods, it may take a few years to build with the statcast data, too.
I agree wrt the complexity involved.
Can you explain how you are currently applying park factors? I may have missed it in an earlier article.
I’m taking the 2015 single, double, triple, and HR park factors split by handedness and applying those to the odds of each ball becoming each of those things. Which I’m pretty unhappy with, and I might stop doing. I was pretty tempted to stop doing it as of this morning to be honest. I don’t like it at all, and the more I think about it the worse it seems. It doesn’t to make a big difference to the overall numbers, though.
So, a Rockies batter’s xSLG, for example, should represent what his batted balls would have produced in terms of actual SLG for a player playing the Rockies’ schedule of parks? I understand all the limitations and sources of possible error. But I just want to confirm that the design of the xOBA suite of stats is to reflect park-impacted expected performance and not some measure of true, park-neutral skill.
If so, I agree that using single season splits is very dicey. Maybe take a less granular approach for now and use 3-year handed SLG park factors, for example, to get from a park-neutral xSLG to a park-specific xSLG?
Yup, it is aiming for park adjusted actual performance. At the moment. It isn’t an end point I was aiming for, and subject to change, but that is where it is right now. I am heavily favoring getting rid of the park stuff and going back to having totally neutral stats, though. Every time I think about it, I feel more compelled to get rid of the park adjustments.
This is true and I have considered this since this last offseason. However, most leagues include MI, as well as Utility, and some SS’s like Russell have multiple position eligibility.
Once could in theory benefit even more by grabbing 3-4 of these SS studs, while others then get stuck with lesser tier guys. For instance, I currently have Correa, Seager, and Russell on my keep 6 forever league. I play Russell at 2B, and Correa and Seager at SS and MI. I could snag another SS if I wanted to and put him at utility even.
I will probably try and trade Russell at some point, but I am getting a lot more production than others in my league in the MI, while still finding guys with great production at other positions.
I must be in the wrong chatroom.
Great article, very worthwhile read. One small quibble on Adam Jones–
“Don’t give up on him, he is going to turn it around and you might see some career numbers at the end of the season.”
I certainly agree that Jones is a great rebound candidate and should see much better results going forward. But to potentially hit new career highs would require some *incredible* bouncing back because it would also have to overcome the poor results through the first 50ish games of the season.
(Just as an example, if you thought he were a “true talent” .300 hitter but had hit just .220 through the first quarter of the year, he would actually have to hit .327 over the last 3/4 of the year to overcome the poor results from the first 1/4 and end up at .300, assuming 150 AB’s per quarter-season.)
Again just a very minor quibble but I wouldn’t be banking on a career year; the first quarter or third is already “in the books” and will be tough to overcome.
You’re right. I should have said, from here on out, assuming he bats this way the rest of the season, and he has done so before so it isn’t a big stretch, he could put up numbers at or around a career high rate.
The thoughts on Kendrick are interesting. I wonder about Justin Turner and Yasmani Grandal as well. Any encouraging signs in their profiles? The Dodgers and Blue Jays have been so disappointing offensively but we know Donaldson and Bautista will turn it around. The Dodgers guys are a little more up in the air.
Turner has hitting the ball a lot more often, raising his average angle from 9 to 14 degrees. That’s a really big change, you can look at my other article about launch angle to see some charts that depict it pretty well I think. Hitting the ball 14 degrees, on average, means you’re probably pushing a lot of balls up above the BABIP peak and towards the wOBA peak, which is around 25 degrees. This should result in fewer hits, but more power. However, his value hit rate has dropped along with this change in launch angle. That’s not so great, it should have gone up. This means a lot of those higher elevation hits are actually past the wOBA peak, which is about 25 degrees, and instead pushing closer to 30 degrees or higher. Or, perhaps, lower exit velocities on those balls. To the data!
Last year he hit 86 balls (21.6%) beyond the peak value range of 10-26 degrees. This year he has hit 38 (29.7%). In 1/3 the BIP. That’s not so hot. Last year he hit 102 (25.6%) of his BIP in the peak value zone between 10 and 26 degrees. This year he has hit 28 (21.9%). So about 3/10 of his hits are above the high value zone, and if you look at the chart I posted last week you can see how precipitous the drop in value really is.
Turner is going to want to stop hitting the ball in the air like this. Overall, though, his results ought to be better than they have been thus far.
Grandal has the opposite problem. He is hitting way too many balls on the ground. This should, you’d think, result in more singles and fewer extra base hits. But, since he is primarily a left handed hitter, he could be getting shifted to death. Looking at the shift data, I’m seeing he has been semi regularly shifted against, but I’m not sure to what extent.
That said, Grandal has never been a great batting average guy, and his expected stats .224/.301/.405 is very similar to his career line: .237/.344/.406. So, I guess Grandal is pretty much being Grandal at the moment. At least from a batted ball perspective. 5.4 degree vertical launch issue is pretty bad, though. He doesn’t have the speed for that. You want him to push more towards 8-10 degrees. He has 8 degrees last year.
Great piece. Love your work and I’m excited for more as you get more out of statcast.
Shouldn’t it be xwOBA though? it looks kinda silly, but xOBA implies xOBP, no?
Again, love the work, love the stat, but hey, if you didn’t get some kind of semi-off-topic super specific criticism, it wouldn’t be Fangraphs.
I suppose it’s tough because wOBA is already confusingly named… I guess I’m just not up to date on my STATs grammar.
Your model loves Sabathia and sees him as a top starter in terms of xOBA. Does that jive with reality? Is he back to being 12 team mixed league relevant?
It sure does like him. His HR/FB rate has been crazy low this year, but looking at his batted balls he has 4 BIP with a significant chance of being a homerun. One with a 100% chance, which was the only homer he’s given up this year. A no doubter to Martin. Then he had one with 44%, 39% and 29%. Next next highest had a 4% chance, and then after that the next highest was 2%. Considering he had (prior to today’s game) 104 BIP that corresponds to about a 2.1% HR rate. 23 flyballs, so 9.6 HR/FB. His career average is 9.7, so that makes sense. Warmer air will probably result in even more than that over the summer, but we’re only talking about what he’s done thus far.
His xRA is 3.64. Since about 8% of runs are unearned, that equates to about 3.35 ERA, which is pretty close to his 3.41 ERA he has had so far, so that checks out.
His average exit velocity, especially with right handed batters, has dropped about 1.5 to 86.5 mph. It dropped 2.1 mph for right handed batters. That, I feel, is the unsustainable part. I think, likely, his average exit velocity for righties will creep up over time towards the 88-89mph mark, and as a result his Value Hit rate will probably go up with it.
Should you keep him? For now I would. Keep a close eye on his average exit velocity. A 15 day running average will probably be useful for this, if he starts creeping up towards the 88-89 mark, then rethink it. He probably wont sustain this, but he doesn’t have obvious red flags at the moment. He doesn’t strike out many, but his home run rate is legit low at the moment, and his expected runs allowed jives with what he has given up. His FIP likes him, xFIP not so much but I already covered his homerun rate.
His big weaknesses are strike outs, WHIP, and wins. Which, um, probably aren’t going to get better. Wins might come now that the Yankee offense woke up a little, but WHIP and strike outs are probably going to remain poor. You can probably find something better in 12 team leagues, but there are worse options.
Hellova response. Thanks for all the hard work. I cant tell you how happy this batted ball stuff makes me.
I appreciate the insight into xoba. I’m not sure your analysis on Morales, looking for patterns in his moving average, is up to the same level of rigor. I don’t see a compelling hypothesis why that sinusoidal pattern should persist, which is a classic reason not to apply concepts from an arima model to data simply because it happens to be a time series.
I don’t mean that the pattern will literally go on, but rather that he has been just as low before for the same amount of time and has come out of those slumps at a predictable rate. What he is going through now isn’t really any different than other lows he has had before. He isn’t lower now than he was then, it hasn’t lasted longer, there isn’t much differentiation between the two other than the last few times it was in the middle or end of a season and this time it was at the beginning.
In your google sheet, how do you manage to efficiently update 30 games worth of data everyday without just working for hours upon hours to update your stats?
It is about 99% automated. I get the data, press a button, then copy and paste the data into the doc once it is calculated and automatically formatted.
How long did it take you to just set up the spread sheet with formatting and paramaters and algorithms etc.?
Almost everything is done in SQL. I have a helper spreadsheet to do final formatting, and it took maybe 20 minutes to make it. The SQL I’ve been slowly working on for the past year or so, a little at a time here and there to add new features, correct small issues, etc. For instance, today I fixed how handedness is picked for batters, so it correctly labels switch hitters. I also added innings pitched, but there is a small issue and pitchers are missing a few outs here and there. I’ll have to figure out why and fix that some other time.