Quantifying the Benefit of Spray Angle to xwOBA

Expected weighted on-base average (xwOBA) is one of Statcast’s most important additions to the Sabermetric sphere. It’s a simple premise — estimate a hitter’s deserved production based, simply, on his combinations of exit velocity (EV) and launch angle (LA) — with robust implications and applications. It’s remarkable how powerful the metric is with just two inputs.

However, the metric is not without its faults (or complaints from those who use it). Its simplicity is beautiful but inherently and knowingly lacking, accounting minimally or not at all for:

  1. spray (lateral) angle (touched upon here),
  2. a player’s foot speed (discussed more thoroughly here),
  3. park factors, and
  4. opposing defense.

None of this necessarily serves as an indictment of xwOBA. The number of inputs you include affects the purpose you want it to serve. That is, do you want it to be descriptive or predictive? How about both? Maybe defense shouldn’t be included, then, if we can’t reasonably expect a hitter to face the same caliber of defense each year, something that is out of his control.

The same could possibly be said of spray angle, although I don’t believe its exclusion from xwOBA to be theoretically sound. Its exclusion implies it’s not a skill the way launch angle is a skill, and I’m not sure that’s true. That said, the inclusion of spray angle into xwOBA would make every EV-LA combination that underpins xwOBA quite a bit noisier — something that might actually reduce the effectiveness of xwOBA. But we can see, pretty clearly from this post, that spray angle (and park factors) matter.

While updating my Pitch Leaderboard ahead of the 2020 season, I have been cleaning up Statcast data, including making minor adjustments to xwOBA to account for some of the factors mentioned in the bulleted list above. Here, I want to demonstrate what effect some general binning of spray angle can have on xwOBA on contact (xwOBAcon), the variable portion of xwOBA. (The three elements of xwOBA: strikeouts, walks, and xwOBA on contact. The former two are fixed, while the latter two depend on EV and LA, as previously noted.)

First, I calculated spray angle using colleague Jeff Zimmerman’s equation cited here by Bill Petti. In theory, we have 90 individual degrees, when rounded to the whole number: -45° (left field) to 0° (dead center) to 45° (right field). I binned all launch angles into nine 10-degree ranges, such that all balls in play between -45° and -35° were grouped together, and so on. This method of binning implies some semblance of repeatability (i.e., so-and-so hits it to left-center field 15 percent of the time) as opposed to assuming he will repeat his exact distribution of launch angles (i.e., he hits it at -30° exactly 6% of the time).

An underrated, although fairly intuitive, element of spray angle: its importance depends on the type and quality of batted ball. I have tried to account for that here as well, using “Quality of Contact” (‘estimated_woba_using_speedangle,’ per CSV documentation) and Batted Ball Type (‘bb_type’) to create additional groups. I have consolidated all weak batted balls (“Poorly/Under,” “Poorly/Topped,” and “Poorly/Weak”) into a single “weak” category alongside barrels, solid contact, and flare/burners.

Lastly, I account for hitter handedness.

All told, this establishes a ton of individual bins — 288, to be exact (two types of handedness times nine spray angle bins times four types of batted balls times four batted ball quality distinctions). Fortunately, we have more than 120,000 batted balls in 2019, leaving an average sample size of roughly 400 batted balls per bin. It is not distributed that neatly, but I think it all comes out in the wash. (A bin with a sample size of one — this actually exists, a lone “barreled” ground ball — will have an extremely small effect on the population.)

I’ve gotten this far but, naturally, I’ve buried the lede: how will I quantify the bias caused by xwOBAcon’s lack of spray angle? Simple: calculate the average difference between wOBAcon and xwOBAcon (wOBAcon–xwOBAcon) for each bin and apply it to every batted ball event (BBE) in 2019. xwOBAcon does all the heavy lifting for us — we know what it “thinks” the value of a particular BBE should be, and we can compare how far off its estimates are from what actually occurred over fairly large samples.

As noted, there are nearly 300 bins, so it’s not worth showing all of their individual wOBAcon–xwOBAcon “biases” here. Instead, I will simply list the ones that occurred most frequently in 2019. Note that “spray_direction” below does not coincidence with location; a ground ball hit toward right-center field does not mean it ended up there (in fact, it was probably fielded by the second baseman).

Most Frequent Spray Bins
stand bb_type bb_quality spray_direction count wOBAcon–xwOBAcon
R ground_ball weak LCF 6,949 0.002
R ground_ball weak C-LCF 5,343 -0.063
R ground_ball weak L-LCF 5,043 0.014
L ground_ball weak RCF 4,699 -0.070
L ground_ball weak R-RCF 4,592 -0.037
R ground_ball weak RCF 2,527 0.041
R ground_ball weak CF 2,416 0.188
R ground_ball weak C-RCF 2,304 -0.055
L ground_ball weak C-RCF 2,297 0.000
R fly_ball weak RCF 2,027 -0.061
R fly_ball weak R-RCF 1,924 0.059
R line_drive flare LCF 1,908 -0.091
R fly_ball weak C-RCF 1,763 -0.062
R line_drive flare CF 1,731 -0.051
R line_drive flare C-LCF 1,701 0.039
SOURCE: Statcast
L-LCF = shading left of left-center (between LF and LCF)
C-LCF = shading right of left-center (between LCF and CF)
C-RCF = shading left of right-center (between CF and RCF)
R-RCF = shading right of right-center (between RCF and RF)

Per the table above, the average xwOBAcon for a ground ball toward right-center field exceeds the average actual wOBAcon by about 70 points — that is, the xwOBAcon value for this particular BBE bin is potentially 70 points too high. Let’s adjust for that!

This is probably why you’re here, beyond the drudgery of my methodology: here is a list of all hitters with 150+ BBE in 2019, with their xwOBAcon pre- and post-spray angle adjustments, sorted descending by biggest changes in xwOBAcon (‘delta’). Basically, a large positive delta suggests that xwOBAcon had been undervaluing so-and-so’s BBEs (by virtue of contact quality), and vice versa.

Above all, remember that the bins used here are somewhat generalized. It’s the nature of the bast. But I imagine something more specific than this would still yield similar results. However, incorporating park factors might change these estimates slightly, too, especially to dead left, center, and right fields (I doubt the gaps matter as much). Consider these estimates below effectively park-neutral.

It’s an extremely good Friday for Jose Ramirez, Willie Calhoun, Matt Olson, and Jeff McNeil fans (me!!!!).

2019 xwOBAcon, Pre- and Post-Spray Angle Adjustments
Hitter_Name count wOBAcon old xwOBAcon old diff delta new xwOBAcon new diff
Tom Murphy 170 0.498 0.413 0.085 0.043 0.457 0.041
Matt Adams 190 0.438 0.463 -0.025 0.039 0.502 -0.064
Matt Joyce 153 0.401 0.391 0.011 0.037 0.427 -0.026
Tucker Barnhart 227 0.349 0.324 0.025 0.035 0.360 -0.011
Tyler Flowers 163 0.439 0.405 0.034 0.033 0.438 0.001
Jose Ramirez 408 0.351 0.352 -0.001 0.033 0.384 -0.034
Kurt Suzuki 243 0.356 0.360 -0.004 0.032 0.392 -0.037
Willie Calhoun 249 0.395 0.362 0.033 0.029 0.391 0.004
Francisco Mejia 164 0.402 0.340 0.062 0.029 0.369 0.033
Matt Olson 333 0.468 0.495 -0.027 0.028 0.523 -0.055
Dylan Moore 150 0.401 0.354 0.047 0.027 0.381 0.020
Brett Gardner 377 0.394 0.314 0.080 0.027 0.341 0.053
Kris Bryant 396 0.452 0.397 0.055 0.026 0.423 0.029
Greg Garcia 228 0.344 0.292 0.052 0.025 0.317 0.027
Josh Phegley 250 0.330 0.321 0.008 0.025 0.346 -0.017
Brian McCann 226 0.336 0.350 -0.014 0.025 0.375 -0.039
Jeff McNeil 430 0.411 0.369 0.042 0.024 0.393 0.018
Byron Buxton 200 0.428 0.369 0.058 0.024 0.393 0.034
Andrelton Simmons 350 0.301 0.272 0.029 0.024 0.296 0.005
Fernando Tatis Jr. 226 0.541 0.439 0.102 0.023 0.462 0.079
Rhys Hoskins 389 0.401 0.389 0.012 0.023 0.412 -0.011
Marcell Ozuna 363 0.379 0.444 -0.065 0.023 0.467 -0.088
Freddy Galvis 410 0.393 0.350 0.043 0.023 0.373 0.020
Eric Sogard 328 0.376 0.329 0.047 0.023 0.352 0.024
Jake Marisnick 199 0.389 0.314 0.075 0.023 0.336 0.053
Brian Dozier 305 0.375 0.378 -0.002 0.022 0.400 -0.025
Stephen Vogt 189 0.406 0.410 -0.004 0.022 0.432 -0.026
Mark Canha 297 0.447 0.403 0.044 0.022 0.425 0.022
Cesar Hernandez 505 0.349 0.314 0.036 0.022 0.335 0.014
Edwin Encarnacion 302 0.435 0.436 -0.001 0.021 0.457 -0.022
Steve Wilkerson 223 0.371 0.311 0.060 0.020 0.331 0.039
Mitch Garver 219 0.517 0.478 0.040 0.020 0.498 0.019
Max Kepler 418 0.393 0.370 0.024 0.020 0.390 0.004
Ildemaro Vargas 176 0.325 0.302 0.023 0.020 0.321 0.004
Victor Robles 406 0.376 0.328 0.048 0.020 0.348 0.028
Robinson Chirinos 245 0.417 0.387 0.030 0.020 0.406 0.011
Hunter Renfroe 282 0.437 0.423 0.015 0.020 0.442 -0.005
Randal Grichuk 409 0.396 0.385 0.011 0.019 0.404 -0.008
Adam Frazier 478 0.332 0.325 0.007 0.019 0.344 -0.011
Joc Pederson 333 0.431 0.400 0.031 0.019 0.418 0.012
Christin Stewart 268 0.347 0.380 -0.033 0.019 0.399 -0.052
Leonys Martin 154 0.326 0.310 0.016 0.018 0.328 -0.003
Mike Tauchman 189 0.442 0.374 0.068 0.018 0.392 0.049
Michael Chavis 213 0.451 0.398 0.053 0.018 0.416 0.035
Daniel Murphy 364 0.365 0.319 0.046 0.018 0.337 0.028
J.P. Crawford 260 0.328 0.322 0.006 0.018 0.340 -0.012
Yordan Alvarez 216 0.552 0.515 0.037 0.018 0.533 0.020
Nolan Arenado 482 0.434 0.371 0.063 0.017 0.389 0.045
Steven Duggar 185 0.340 0.333 0.006 0.017 0.350 -0.011
Michael Conforto 396 0.414 0.429 -0.015 0.017 0.446 -0.032
Dee Gordon 338 0.312 0.271 0.041 0.017 0.288 0.023
Welington Castillo 155 0.379 0.404 -0.025 0.017 0.421 -0.042
Trea Turner 402 0.421 0.376 0.046 0.017 0.392 0.029
Xander Bogaerts 491 0.444 0.392 0.052 0.016 0.408 0.036
Paul DeJong 423 0.364 0.367 -0.002 0.016 0.383 -0.019
Alex Bregman 462 0.434 0.371 0.063 0.016 0.388 0.047
Maikel Franco 307 0.327 0.349 -0.022 0.016 0.366 -0.038
Austin Nola 172 0.414 0.353 0.061 0.016 0.369 0.045
Christian Vazquez 382 0.393 0.373 0.019 0.016 0.389 0.003
Gordon Beckham 151 0.358 0.368 -0.010 0.016 0.384 -0.026
Ketel Marte 480 0.449 0.400 0.049 0.016 0.415 0.033
Didi Gregorius 268 0.330 0.316 0.014 0.016 0.332 -0.002
Jose Iglesias 429 0.343 0.309 0.034 0.016 0.325 0.018
Austin Hedges 197 0.309 0.352 -0.043 0.016 0.368 -0.059
Yulieski Gurriel 493 0.395 0.339 0.055 0.015 0.355 0.040
Derek Dietrich 170 0.384 0.416 -0.032 0.015 0.431 -0.047
Rougned Odor 337 0.404 0.425 -0.021 0.015 0.441 -0.036
Wilmer Flores 230 0.387 0.355 0.032 0.015 0.371 0.016
Eduardo Escobar 509 0.391 0.369 0.022 0.015 0.384 0.007
Ben Gamel 206 0.392 0.364 0.028 0.015 0.379 0.013
Tim Beckham 198 0.428 0.398 0.029 0.015 0.413 0.014
Austin Riley 160 0.485 0.479 0.006 0.015 0.494 -0.009
Adeiny Hechavarria 154 0.371 0.342 0.029 0.015 0.356 0.014
Miguel Sano 214 0.562 0.534 0.028 0.015 0.549 0.013
Renato Nunez 386 0.395 0.408 -0.013 0.014 0.422 -0.027
Albert Pujols 420 0.321 0.343 -0.022 0.014 0.357 -0.037
Ronny Rodriguez 192 0.376 0.376 0.001 0.014 0.390 -0.013
Eugenio Suarez 386 0.506 0.461 0.044 0.014 0.475 0.030
Anthony Rendon 455 0.451 0.451 0.000 0.014 0.465 -0.014
Billy Hamilton 223 0.293 0.275 0.018 0.014 0.288 0.005
Brian Anderson 339 0.407 0.398 0.009 0.014 0.412 -0.005
Ehire Adrianza 165 0.351 0.349 0.002 0.014 0.363 -0.012
Austin Barnes 153 0.311 0.285 0.026 0.014 0.298 0.013
Trevor Story 410 0.494 0.419 0.075 0.014 0.433 0.061
Melky Cabrera 333 0.322 0.316 0.006 0.013 0.330 -0.008
Jonathan Lucroy 241 0.298 0.327 -0.029 0.013 0.340 -0.042
Cheslor Cuthbert 236 0.342 0.346 -0.004 0.013 0.359 -0.018
Brandon Belt 397 0.348 0.388 -0.040 0.013 0.402 -0.053
Niko Goodrum 283 0.413 0.388 0.025 0.013 0.401 0.012
Ian Kinsler 191 0.323 0.285 0.038 0.013 0.298 0.025
Jurickson Profar 380 0.311 0.342 -0.031 0.013 0.355 -0.044
Kevin Pillar 514 0.340 0.330 0.010 0.013 0.343 -0.003
Mike Moustakas 413 0.398 0.402 -0.004 0.013 0.414 -0.017
Kyle Seager 304 0.374 0.400 -0.026 0.013 0.412 -0.038
Starling Marte 444 0.398 0.393 0.005 0.013 0.406 -0.008
Mike Trout 342 0.504 0.524 -0.021 0.012 0.536 -0.033
Gary Sanchez 266 0.449 0.484 -0.035 0.012 0.496 -0.047
Todd Frazier 327 0.385 0.361 0.024 0.012 0.373 0.012
Eric Thames 251 0.476 0.423 0.053 0.012 0.435 0.041
Jake Bauers 256 0.356 0.344 0.013 0.012 0.355 0.001
Willson Contreras 251 0.449 0.399 0.050 0.012 0.410 0.038
Hanser Alberto 474 0.339 0.310 0.029 0.012 0.322 0.017
Tommy Edman 262 0.414 0.369 0.045 0.012 0.380 0.034
Jose Altuve 411 0.412 0.366 0.046 0.012 0.377 0.035
Francisco Lindor 493 0.391 0.359 0.032 0.011 0.370 0.020
Juan Lagares 178 0.321 0.301 0.020 0.011 0.313 0.009
Garrett Hampson 209 0.372 0.310 0.062 0.011 0.321 0.051
Kevan Smith 154 0.333 0.389 -0.056 0.011 0.400 -0.067
Leury Garcia 449 0.356 0.313 0.043 0.011 0.324 0.033
Isiah Kiner-Falefa 154 0.309 0.284 0.026 0.011 0.295 0.015
Joe Panik 388 0.271 0.302 -0.031 0.011 0.313 -0.042
Carson Kelly 232 0.400 0.408 -0.007 0.010 0.418 -0.018
Kevin Newman 426 0.366 0.312 0.054 0.010 0.322 0.044
Omar Narvaez 330 0.398 0.374 0.024 0.010 0.384 0.014
Mike Zunino 161 0.323 0.391 -0.067 0.010 0.401 -0.078
Rafael Devers 517 0.435 0.416 0.019 0.010 0.426 0.009
Rio Ruiz 278 0.333 0.332 0.002 0.010 0.341 -0.008
Matt Chapman 423 0.421 0.420 0.001 0.010 0.430 -0.008
Luis Arraez 297 0.359 0.327 0.033 0.010 0.336 0.023
Adam Eaton 457 0.365 0.341 0.024 0.010 0.351 0.014
Brock Holt 204 0.370 0.328 0.043 0.010 0.337 0.033
Dwight Smith Jr. 274 0.351 0.340 0.012 0.010 0.349 0.002
Enrique Hernandez 312 0.355 0.362 -0.007 0.009 0.371 -0.016
Delino DeShields 258 0.347 0.295 0.052 0.009 0.304 0.043
Anthony Santander 285 0.384 0.377 0.007 0.009 0.386 -0.003
Johan Camargo 182 0.326 0.331 -0.005 0.009 0.340 -0.014
Yan Gomes 226 0.347 0.355 -0.008 0.009 0.364 -0.017
Jorge Polanco 515 0.396 0.373 0.023 0.009 0.381 0.014
Pete Alonso 395 0.487 0.473 0.014 0.009 0.481 0.006
Adam Jones 377 0.361 0.367 -0.006 0.008 0.375 -0.014
Kyle Schwarber 373 0.447 0.471 -0.025 0.008 0.480 -0.033
Dexter Fowler 346 0.374 0.387 -0.013 0.008 0.395 -0.021
Jarrod Dyson 310 0.299 0.267 0.032 0.008 0.275 0.024
Andrew McCutchen 163 0.394 0.381 0.013 0.008 0.390 0.005
Starlin Castro 525 0.355 0.357 -0.002 0.008 0.365 -0.010
Jonathan Schoop 302 0.418 0.401 0.017 0.008 0.409 0.009
J.T. Realmuto 414 0.408 0.400 0.007 0.008 0.408 0.000
Daniel Vogelbach 310 0.386 0.416 -0.030 0.008 0.423 -0.038
Danny Jansen 263 0.309 0.360 -0.051 0.008 0.368 -0.059
David Fletcher 529 0.318 0.316 0.002 0.008 0.323 -0.005
Lorenzo Cain 452 0.326 0.352 -0.027 0.008 0.360 -0.034
Nicky Lopez 327 0.276 0.245 0.031 0.007 0.252 0.024
Adalberto Mondesi 288 0.410 0.363 0.046 0.007 0.371 0.039
Tim Anderson 386 0.453 0.387 0.066 0.007 0.395 0.058
Marcus Semien 544 0.393 0.370 0.023 0.007 0.377 0.015
Jay Bruce 227 0.405 0.444 -0.038 0.007 0.451 -0.046
Jordan Luplow 164 0.463 0.400 0.062 0.007 0.407 0.055
Chad Pinder 254 0.364 0.390 -0.025 0.007 0.397 -0.033
Oscar Mercado 356 0.363 0.337 0.027 0.007 0.344 0.020
Pedro Severino 231 0.366 0.391 -0.025 0.007 0.398 -0.032
Kolten Wong 397 0.356 0.302 0.054 0.007 0.308 0.048
Mike Yastrzemski 257 0.467 0.448 0.018 0.006 0.455 0.012
Jorge Soler 401 0.482 0.505 -0.023 0.006 0.512 -0.029
Tyler White 162 0.318 0.319 0.000 0.006 0.325 -0.007
Javier Baez 374 0.472 0.436 0.036 0.006 0.442 0.030
Billy McKinney 176 0.355 0.342 0.013 0.006 0.348 0.007
Ender Inciarte 154 0.345 0.293 0.052 0.006 0.299 0.046
Danny Santana 322 0.492 0.467 0.025 0.006 0.473 0.019
Chris Taylor 256 0.426 0.376 0.050 0.006 0.381 0.045
Willians Astudillo 180 0.283 0.327 -0.044 0.006 0.332 -0.049
Whit Merrifield 546 0.398 0.364 0.034 0.006 0.369 0.028
Anthony Rizzo 421 0.396 0.400 -0.004 0.006 0.405 -0.009
Eddie Rosario 471 0.377 0.370 0.007 0.006 0.376 0.001
Tyler Naquin 208 0.404 0.393 0.011 0.005 0.398 0.006
Asdrubal Cabrera 347 0.362 0.349 0.013 0.005 0.354 0.008
Bryan Reynolds 369 0.449 0.426 0.023 0.005 0.431 0.018
Curtis Granderson 216 0.314 0.362 -0.048 0.005 0.367 -0.053
Mallex Smith 363 0.325 0.275 0.050 0.005 0.280 0.046
Franmil Reyes 339 0.446 0.478 -0.032 0.005 0.482 -0.036
Jose Osuna 214 0.354 0.360 -0.007 0.005 0.365 -0.011
Yasmani Grandal 372 0.403 0.418 -0.015 0.004 0.422 -0.019
Martin Maldonado 245 0.331 0.352 -0.021 0.004 0.357 -0.025
Tony Wolters 295 0.305 0.300 0.005 0.004 0.304 0.001
Phil Ervin 171 0.419 0.354 0.064 0.004 0.359 0.060
Robinson Cano 321 0.339 0.374 -0.036 0.004 0.378 -0.040
Bryce Harper 395 0.451 0.476 -0.024 0.004 0.479 -0.028
Jon Berti 180 0.405 0.365 0.039 0.004 0.369 0.036
Eric Hosmer 459 0.387 0.378 0.009 0.003 0.381 0.006
Ronald Guzman 169 0.381 0.422 -0.041 0.003 0.426 -0.044
John Hicks 203 0.372 0.353 0.019 0.003 0.356 0.016
Corey Dickerson 200 0.463 0.394 0.069 0.003 0.397 0.066
Roberto Perez 270 0.394 0.396 -0.002 0.003 0.399 -0.005
Ramon Laureano 312 0.451 0.427 0.024 0.003 0.429 0.021
Manuel Margot 301 0.334 0.292 0.042 0.003 0.295 0.040
Harold Castro 271 0.373 0.354 0.019 0.003 0.356 0.017
Wilson Ramos 404 0.346 0.346 0.001 0.002 0.348 -0.002
Adam Haseley 161 0.382 0.313 0.069 0.002 0.316 0.066
Jean Segura 497 0.339 0.324 0.015 0.002 0.326 0.013
Martin Prado 204 0.269 0.310 -0.041 0.002 0.312 -0.043
Albert Almora 277 0.311 0.321 -0.010 0.002 0.323 -0.012
Mitch Haniger 160 0.414 0.420 -0.006 0.002 0.422 -0.008
David Dahl 269 0.473 0.429 0.045 0.002 0.431 0.043
Josh Reddick 433 0.332 0.336 -0.004 0.002 0.338 -0.006
Brandon Drury 296 0.342 0.399 -0.057 0.002 0.401 -0.059
Jonathan Villar 465 0.412 0.368 0.044 0.002 0.370 0.042
Brandon Crawford 385 0.313 0.351 -0.038 0.002 0.353 -0.040
Corey Seager 390 0.387 0.374 0.014 0.002 0.375 0.012
Victor Caratini 188 0.384 0.393 -0.009 0.002 0.395 -0.011
Victor Reyes 212 0.402 0.346 0.056 0.002 0.347 0.054
Raimel Tapia 324 0.379 0.338 0.040 0.002 0.340 0.039
Richie Martin 202 0.309 0.283 0.026 0.002 0.285 0.025
Luis Urias 159 0.311 0.324 -0.013 0.002 0.325 -0.014
Josh VanMeter 171 0.355 0.366 -0.011 0.001 0.367 -0.012
Colin Moran 344 0.399 0.405 -0.006 0.001 0.406 -0.007
Clint Frazier 157 0.445 0.416 0.029 0.001 0.418 0.028
Tommy La Stella 261 0.363 0.367 -0.004 0.001 0.368 -0.005
Hunter Pence 214 0.453 0.413 0.040 0.001 0.414 0.039
Yoan Moncada 357 0.510 0.467 0.042 0.001 0.468 0.042
Jose Abreu 480 0.425 0.446 -0.021 0.000 0.446 -0.022
Greg Allen 179 0.310 0.302 0.008 0.000 0.302 0.008
Marwin Gonzalez 325 0.369 0.386 -0.016 0.000 0.386 -0.017
Christian Yelich 365 0.538 0.495 0.043 0.000 0.495 0.043
Khris Davis 330 0.366 0.415 -0.049 0.000 0.415 -0.049
Michael Brantley 507 0.384 0.380 0.004 0.000 0.380 0.004
Giovanny Urshela 352 0.441 0.414 0.027 0.000 0.413 0.028
Brandon Lowe 180 0.517 0.488 0.029 0.000 0.487 0.030
Yolmer Sanchez 384 0.311 0.298 0.014 0.000 0.297 0.014
Austin Meadows 388 0.464 0.452 0.012 -0.001 0.451 0.013
James McCann 301 0.443 0.430 0.013 -0.001 0.429 0.014
Gleyber Torres 415 0.438 0.413 0.026 -0.001 0.412 0.026
David Peralta 291 0.393 0.338 0.054 -0.001 0.338 0.055
Josh Bell 408 0.440 0.444 -0.004 -0.001 0.443 -0.003
Josh Donaldson 381 0.451 0.468 -0.017 -0.001 0.467 -0.016
Miguel Rojas 423 0.320 0.315 0.005 -0.001 0.313 0.006
Lewis Brinson 151 0.250 0.302 -0.052 -0.002 0.300 -0.050
Ozzie Albies 522 0.399 0.383 0.016 -0.002 0.381 0.018
Nick Senzel 269 0.394 0.365 0.029 -0.002 0.363 0.031
Willy Adames 375 0.395 0.397 -0.002 -0.002 0.395 0.000
Matt Beaty 213 0.349 0.341 0.008 -0.002 0.339 0.010
A.J. Pollock 232 0.402 0.390 0.012 -0.002 0.388 0.014
Jason Kipnis 371 0.335 0.350 -0.015 -0.002 0.348 -0.013
Hunter Dozier 370 0.453 0.417 0.036 -0.002 0.414 0.039
Kole Calhoun 383 0.406 0.424 -0.018 -0.002 0.422 -0.016
Logan Forsythe 214 0.358 0.393 -0.035 -0.002 0.391 -0.033
Jordy Mercer 191 0.394 0.394 0.000 -0.002 0.392 0.002
David Bote 211 0.405 0.370 0.035 -0.003 0.367 0.038
Lourdes Gurriel 226 0.465 0.436 0.028 -0.003 0.434 0.031
Tim Locastro 163 0.323 0.271 0.052 -0.003 0.269 0.054
Yadier Molina 359 0.327 0.365 -0.038 -0.003 0.362 -0.035
Robbie Grossman 333 0.311 0.342 -0.031 -0.003 0.339 -0.028
Justin Turner 388 0.403 0.413 -0.010 -0.003 0.410 -0.007
Hernan Perez 166 0.352 0.325 0.027 -0.003 0.322 0.030
Donovan Solano 167 0.426 0.421 0.006 -0.003 0.418 0.009
Scott Kingery 309 0.445 0.414 0.031 -0.003 0.411 0.034
Charlie Blackmon 471 0.440 0.406 0.034 -0.003 0.402 0.037
Nick Markakis 354 0.343 0.373 -0.030 -0.003 0.369 -0.026
Nicholas Castellanos 472 0.434 0.439 -0.005 -0.004 0.435 -0.001
Elvis Andrus 505 0.332 0.340 -0.009 -0.004 0.337 -0.005
Ian Desmond 319 0.411 0.416 -0.005 -0.004 0.413 -0.002
Ryan McMahon 312 0.437 0.429 0.008 -0.004 0.426 0.011
Orlando Arcia 391 0.302 0.317 -0.015 -0.004 0.313 -0.011
George Springer 366 0.471 0.461 0.010 -0.004 0.457 0.014
Aledmys Diaz 184 0.348 0.332 0.016 -0.004 0.328 0.020
Yonder Alonso 220 0.295 0.351 -0.056 -0.004 0.347 -0.052
J.D. Davis 310 0.447 0.467 -0.020 -0.004 0.463 -0.015
Paul Goldschmidt 428 0.422 0.442 -0.020 -0.004 0.438 -0.016
Jackie Bradley Jr. 338 0.384 0.393 -0.009 -0.004 0.389 -0.005
Ronald Acuna 429 0.464 0.487 -0.023 -0.004 0.482 -0.018
Ryan Braun 351 0.426 0.405 0.021 -0.005 0.400 0.026
Nick Ahmed 448 0.354 0.351 0.002 -0.005 0.346 0.007
Matt Carpenter 287 0.364 0.386 -0.022 -0.005 0.381 -0.017
Gerardo Parra 216 0.328 0.341 -0.013 -0.005 0.336 -0.008
Chris Davis 170 0.375 0.436 -0.060 -0.005 0.431 -0.055
Elias Diaz 246 0.283 0.304 -0.021 -0.005 0.299 -0.016
Nelson Cruz 317 0.548 0.545 0.002 -0.005 0.540 0.008
Andrew Benintendi 399 0.392 0.403 -0.011 -0.006 0.398 -0.006
Harrison Bader 225 0.362 0.382 -0.020 -0.006 0.376 -0.014
Neil Walker 259 0.357 0.388 -0.032 -0.006 0.382 -0.026
Buster Posey 331 0.315 0.344 -0.028 -0.006 0.337 -0.022
Juan Soto 406 0.448 0.465 -0.017 -0.006 0.459 -0.011
Harold Ramirez 329 0.370 0.349 0.021 -0.006 0.342 0.027
Shohei Ohtani 275 0.452 0.441 0.011 -0.006 0.434 0.018
Manny Machado 449 0.382 0.393 -0.011 -0.006 0.386 -0.005
Alex Gordon 460 0.335 0.354 -0.019 -0.007 0.347 -0.012
Brandon Dixon 249 0.442 0.434 0.007 -0.007 0.428 0.014
Rowdy Tellez 254 0.402 0.447 -0.045 -0.007 0.440 -0.038
Cody Bellinger 445 0.468 0.480 -0.013 -0.007 0.473 -0.006
Josh Naylor 188 0.365 0.351 0.014 -0.007 0.344 0.020
Cavan Biggio 231 0.410 0.415 -0.005 -0.007 0.408 0.002
Mitch Moreland 221 0.417 0.428 -0.011 -0.007 0.421 -0.004
Howard Kendrick 288 0.441 0.468 -0.027 -0.007 0.461 -0.020
Mookie Betts 494 0.404 0.438 -0.034 -0.008 0.430 -0.027
Carlos Santana 460 0.408 0.391 0.017 -0.008 0.383 0.025
Miguel Cabrera 385 0.366 0.396 -0.029 -0.008 0.388 -0.021
Alex Verdugo 299 0.367 0.358 0.009 -0.008 0.350 0.017
Vladimir Guerrero Jr. 367 0.365 0.363 0.003 -0.008 0.354 0.011
Ji-Man Choi 304 0.397 0.431 -0.033 -0.008 0.422 -0.025
Joey Wendle 191 0.298 0.311 -0.013 -0.008 0.303 -0.005
Dansby Swanson 361 0.372 0.414 -0.042 -0.008 0.406 -0.033
Christian Walker 367 0.436 0.459 -0.023 -0.009 0.450 -0.015
Brian Goodwin 283 0.439 0.388 0.051 -0.009 0.380 0.059
Teoscar Hernandez 256 0.466 0.431 0.035 -0.009 0.422 0.044
Jesus Aguilar 239 0.341 0.390 -0.049 -0.009 0.381 -0.041
Yasiel Puig 414 0.401 0.391 0.010 -0.009 0.383 0.019
J.D. Martinez 438 0.456 0.475 -0.019 -0.009 0.466 -0.010
Kevin Kiermaier 343 0.336 0.337 -0.001 -0.009 0.328 0.008
Freddie Freeman 468 0.442 0.455 -0.013 -0.009 0.445 -0.003
Nomar Mazara 323 0.398 0.406 -0.009 -0.010 0.397 0.001
Dawel Lugo 217 0.328 0.340 -0.012 -0.010 0.330 -0.002
Yandy Diaz 244 0.381 0.402 -0.021 -0.010 0.392 -0.011
Austin Romine 176 0.389 0.371 0.017 -0.010 0.361 0.027
Tommy Pham 434 0.381 0.376 0.005 -0.010 0.366 0.015
Jeimer Candelario 232 0.306 0.349 -0.042 -0.010 0.339 -0.032
Tony Kemp 200 0.298 0.256 0.042 -0.010 0.245 0.052
Joey Votto 402 0.366 0.389 -0.023 -0.011 0.378 -0.013
Jason Heyward 403 0.358 0.353 0.005 -0.011 0.342 0.016
Garrett Cooper 269 0.429 0.434 -0.005 -0.011 0.423 0.006
Trey Mancini 460 0.442 0.422 0.020 -0.012 0.410 0.032
Evan Longoria 340 0.375 0.417 -0.043 -0.012 0.405 -0.030
Jose Peraza 309 0.292 0.311 -0.019 -0.012 0.299 -0.006
Carlos Correa 203 0.471 0.485 -0.013 -0.013 0.472 -0.001
Jose Martinez 251 0.378 0.409 -0.031 -0.013 0.396 -0.018
Shin-Soo Choo 396 0.423 0.434 -0.011 -0.013 0.420 0.002
Pablo Sandoval 208 0.416 0.422 -0.006 -0.014 0.409 0.007
Luis Rengifo 261 0.344 0.343 0.001 -0.014 0.329 0.014
Cameron Maybin 162 0.462 0.407 0.055 -0.014 0.393 0.069
Domingo Santana 286 0.452 0.476 -0.024 -0.014 0.462 -0.010
Keston Hiura 204 0.550 0.497 0.053 -0.014 0.483 0.067
DJ LeMahieu 510 0.416 0.417 -0.002 -0.014 0.403 0.013
Stephen Piscotty 269 0.361 0.381 -0.020 -0.015 0.366 -0.006
JaCoby Jones 205 0.387 0.392 -0.005 -0.015 0.377 0.010
Addison Russell 157 0.357 0.335 0.022 -0.015 0.320 0.037
Aaron Judge 235 0.534 0.553 -0.019 -0.016 0.537 -0.003
Amed Rosario 487 0.378 0.366 0.012 -0.016 0.350 0.028
Justin Smoak 303 0.343 0.425 -0.082 -0.016 0.409 -0.066
C.J. Cron 346 0.382 0.442 -0.060 -0.017 0.425 -0.043
Wil Myers 259 0.448 0.437 0.011 -0.017 0.420 0.028
Eloy Jimenez 328 0.444 0.446 -0.002 -0.017 0.429 0.015
Jorge Alfaro 276 0.439 0.438 0.000 -0.019 0.420 0.019
Luke Voit 287 0.449 0.458 -0.009 -0.019 0.439 0.010
Max Muncy 336 0.440 0.457 -0.016 -0.020 0.437 0.003
Travis d’Arnaud 265 0.374 0.400 -0.026 -0.023 0.378 -0.003
Jesse Winker 277 0.374 0.384 -0.010 -0.024 0.359 0.014
Ryan O’Hearn 229 0.331 0.377 -0.046 -0.025 0.352 -0.021
Avisail Garcia 360 0.410 0.411 -0.001 -0.028 0.383 0.027
SOURCE: Statcast
Click headers to sort!
Sorted by most- to least-underrated by xwOBAcon (‘delta’)
diff = wOBAcon–xwOBAcon

Note: my wOBAcon and xwOBAcon values do not perfectly align with Statcast’s values. This is because I have made small adjustments to the coefficients/assumptions for actual wOBAcon, forced errors to zero, adjusted for nulls, and so on. These small tweaks will ultimately lead to small (generally not meaningful) discrepancies. Just a heads up!





Two-time FSWA award winner, including 2018 Baseball Writer of the Year, and 8-time award finalist. Featured in Lindy's magazine (2018, 2019), Rotowire magazine (2021), and Baseball Prospectus (2022, 2023). Biased toward a nicely rolled baseball pant.

7 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
mcott323member
4 years ago

great work! this is phenomenal