A(n Unnecessary) Sprint Speed Adjustment for xBA

Hi! Disclaimer: In this post I use raw Statcast data to calculate expected batting average (xBA). Evidently the raw data do not include the sprint speed adjustment that the Statcast folks said they made. That adjustment only shows up on player pages and in the search. This explains why it seemed to me an adjustment had not been made! The xBA values on player pages are much closer than the raw values and look similar to what I have presented below, and it explains my confusion herein regarding the matter.

So, this post reinvents the wheel a bit. Perhaps it can serve as a mini-primer or -tutorial for you. At the very least it can serve as further validation of the work that the folks at Statcast completed and instituted a couple of years ago. Just keep in mind that the original post below remains intact, completely unedited.

Thanks for reading!

* * *

It has always seemed rather obvious to me that Statcast’s expected batting average (xBA) failed to properly account for a hitter’s speed (“sprint speed”). It seemed like fast hitters routinely outperformed their xBAs while slower hitters underperformed. In looking at a Statcast-era leaderboard (2015-21) of differentials between actual and expected batting averages on ground balls, obvious names rise to the top: Delino DeShields, Dee Strange-Gordon, Eduardo Núñez, Billy Hamilton, Jose Altuve, Jonathan Villar, Norichika Aoki, Mallex Smith, Jean Segura, Adam Eaton, Starling Marte… the list of players who have historically outperformed their xBAs by the widest margins are (were) all elite speedsters. At the other end of the spectrum, post-prime sluggers: Justin Smoak, Chris Davis, Logan Morrison, Jay Bruce, Kendrys Morales, etc. etc.

I thought this exact phenomenon, which is not a revelation by now, had once nudged the Statcast team to apply a sprint speed adjustment to xBA. Apparently, this happened sometime between the 2018 and 2019 seasons. Here’s the original snippet, which I very lightly edited for clarity:

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).

This seems like a logical fix. Yet per the leaders and laggards above, it appears the Statcast team’s correction was not nearly strong enough. Shifting from a player-centric focus to a high-level view, here’s how batting average (AVG) and xBA (y-axes) compare by sprint speed (x-axis) specifically on ground balls, from slowest (left) to fastest (right):

A couple of trends reveal themselves. The obvious: faster players hit for higher batting averages on ground balls. The less-obvious: xBA — which, again, accounts for exit velocity — implicitly captures the degradation of contact quality as sprint speed increases. The trend is less causal than it is correlative, but it fits a general stereotype of larger, slower batters hitting for more power, and thus generating higher xBAs, than smaller, speedier batters. That’s all well and good; exit velocity is the strongest determinant of batted ball production. But this approach fundamentally fails us on ground balls, where sprint speed prevails over exit velocity.

If we take the difference between the green line (AVG) and red line (xBA) and tweak xBA only on ground balls according to each hitter’s seasonal sprint speed, we improve xBA on all batted ball events: in terms of descriptive ability (correlation with AVG), the Pearson correlation coefficient (r2) improves from 0.46 to 0.57; in terms of predictive ability (correlation with next-year AVG), r2 improves from 0.17 to 0.23.

Again, in this context we are only describing the relationships between AVG and xBA on batted ball events — a subset of all at-bats. It’s like batting average on balls in play (BABIP) and home runs. BABIPHR. I don’t know. Look, creativity is not my strong suit. Anyway, it’s important to keep this in mind because the r2 value will weaken when you incorporate for strikeouts and other non-batted ball out, which round out the remaining at-bats that comprise batting average.

Still, the point stands: a sprint speed adjustment specific to ground balls will further improve xBA beyond the original tweak that accounted for “topped” and “weakly hit” batted balls. Furthermore, because, like, 98% of ground balls are singles, batting average and weighted on-base average (wOBA) on ground balls track each other linearly. If a speedy hitter’s xBA improves markedly because of his ground ball proclivities, so, too, will his expected wOBA (xwOBA). (The wOBA of a single is typically very close to 0.7; as such, a 10-point increase in xBA should correlate with a 7-point increase in xwOBA.)

The table below depicts the original xBA, new xBA, and actual AVG of all hitters with at least 150 at-bats through July 11. It’s worth noting the sprint speeds are a little stale (I pulled them a couple of weeks ago). Ideally, a player’s sprint speed will not have changed much in the meantime. And since I have only included players with significant playing time, there won’t be any issues with any hitters having completely absent sprint speeds.

The results casts many players in a different light. Trea Turner, Garrett Hampson, Kevin Kiermaier, Myles Straw, Raimel Tapia, Jazz Chisholm Jr., Nicky Lopez, and Whit Merrifield, among others, are better validated by the new xBA. Maybe Jon Berti, Amed Rosario, Tommy Edman, Gavin Lux, and Kevin Newman are due for some good fortune. Unsurprisingly, Albert Pujols is our laggard outright, followed closely behind by other olds (Yadier Molina, Miguel Cabrera, Buster Posey), catchers (Jacob Stallings, Yasmani Grandal, Jose Trevino), and chunky bois (Dan Vogelbach).

2021 Sprint Speed xBA (Min. 150 AB)
Hitter Name Sprint Speed (ft/sec) AB Old xBA New xBA AVG ∆ Old → New xBA
Trea Turner 30.7 346 .287 .321 .317 +.034
Edmundo Sosa 29.8 150 .217 .248 .248 +.031
Jon Berti 29.9 215 .227 .258 .216 +.031
Eli White 30.5 152 .175 .199 .197 +.024
Amed Rosario 29.4 294 .262 .284 .255 +.023
Garrett Hampson 29.8 277 .212 .232 .250 +.020
Kevin Kiermaier 29.1 194 .216 .236 .237 +.019
Harold Ramirez 28.7 186 .271 .290 .278 +.019
Myles Straw 29.1 289 .233 .251 .262 +.019
Raimel Tapia 28.2 336 .241 .259 .281 +.017
Gavin Lux 29.1 268 .244 .262 .230 +.017
Jazz Chisholm 29.1 253 .219 .235 .255 +.016
Nick Solak 28.8 319 .224 .240 .227 +.016
Nicky Lopez 28.3 230 .223 .239 .257 +.016
Manuel Margot 28.6 270 .260 .276 .252 +.016
Whit Merrifield 28.8 352 .248 .264 .265 +.016
Kevin Newman 28.4 300 .240 .255 .209 +.016
Avisail Garcia 28.8 285 .264 .279 .254 +.015
Nick Madrigal 28.1 200 .256 .272 .303 +.015
Jonathan India 28.7 258 .237 .252 .271 +.015
Cesar Hernandez 28.8 332 .254 .269 .226 +.015
Leury Garcia 28.4 236 .217 .232 .253 +.015
Trent Grisham 28.9 235 .242 .256 .272 +.015
Starling Marte 28.4 191 .247 .261 .269 +.014
Fernando Tatis Jr. 29 273 .277 .291 .282 +.014
Tyler O’Neill 29.7 229 .278 .291 .273 +.014
Akil Baddoo 28.9 210 .222 .235 .271 +.013
Ronald Acuna 29.4 297 .290 .303 .279 +.013
Randy Arozarena 28.6 315 .206 .219 .251 +.013
Christian Yelich 28.5 187 .222 .235 .239 +.013
J.T. Realmuto 28.5 235 .257 .270 .266 +.013
Cedric Mullins 28.7 339 .266 .279 .311 +.013
Teoscar Hernandez 28.7 273 .286 .299 .300 +.013
Yonathan Daza 28.1 244 .258 .271 .289 +.012
Austin Slater 28.4 180 .241 .253 .222 +.012
Willi Castro 28.4 252 .220 .232 .210 +.012
Chris Taylor 28.7 292 .251 .263 .276 +.012
Andrew McCutchen 28.4 281 .242 .254 .224 +.012
Shohei Ohtani 28.9 301 .289 .300 .278 +.012
Michael Taylor 28.4 270 .223 .234 .247 +.011
Adam Eaton 28.1 189 .209 .221 .197 +.011
Bryan Reynolds 28.4 318 .285 .296 .302 +.011
Trevor Story 28.7 285 .243 .254 .250 +.011
Tim Anderson 28 311 .262 .273 .308 +.011
Wil Myers 28.3 257 .210 .220 .250 +.010
Ha-Seong Kim 김하성 28.4 183 .212 .222 .205 +.010
Jake Cronenworth 28.1 343 .268 .278 .275 +.010
Jose Altuve 28.1 317 .262 .272 .269 +.010
Randal Grichuk 28.2 328 .251 .260 .261 +.009
Javier Baez 28.3 291 .215 .224 .236 +.009
Steven Duggar 28.6 167 .215 .224 .281 +.009
Jose Adolis Garcia 28.3 311 .246 .255 .268 +.009
Tommy Pham 28 283 .257 .266 .252 +.009
Charlie Culberson 28 159 .210 .219 .235 +.009
Brett Gardner 28.2 191 .192 .201 .186 +.009
Cavan Biggio 28.3 209 .198 .207 .221 +.009
Jose Ramirez 28.1 292 .293 .302 .259 +.009
Juan Lagares 27.9 183 .251 .259 .211 +.008
Victor Robles 28.1 220 .210 .218 .206 +.008
Joey Wendle 27.8 251 .225 .234 .273 +.008
Odubel Herrera 27.7 229 .232 .240 .237 +.008
Hunter Dozier 28.3 253 .207 .215 .173 +.008
Nick Ahmed 27.8 254 .188 .196 .208 +.008
Dansby Swanson 28.1 329 .246 .254 .240 +.008
Taylor Ward 28.1 193 .246 .254 .226 +.008
Mauricio Dubon 27.9 158 .221 .228 .231 +.008
Alec Bohm 27.7 300 .270 .278 .242 +.008
Brett Phillips 28.3 159 .177 .185 .198 +.008
Francisco Lindor 27.8 308 .245 .253 .223 +.008
Jose Iglesias 27.7 284 .272 .280 .276 +.008
Willy Adames 28.2 304 .236 .243 .250 +.008
Ozzie Albies 28.3 336 .265 .272 .260 +.007
Bobby Dalbec 28.2 242 .218 .226 .218 +.007
Ramon Laureano 27.9 273 .240 .247 .242 +.007
Corey Dickerson 27.6 204 .247 .254 .259 +.007
Erik Gonzalez 27.4 220 .251 .258 .232 +.007
David Dahl 27.7 172 .245 .252 .217 +.007
David Fletcher 27.5 333 .268 .275 .300 +.007
Ryan Mountcastle 28.1 302 .236 .243 .249 +.007
Niko Goodrum 28.3 205 .204 .211 .213 +.007
Miguel Andujar 27.5 154 .263 .270 .245 +.007
Brad Miller 27.9 156 .249 .256 .250 +.007
Alex Kirilloff 27.6 200 .294 .301 .264 +.007
Josh Rojas 27.6 301 .225 .231 .255 +.007
Adam Duvall 28.2 269 .227 .233 .232 +.006
Mark Canha 27.8 271 .248 .254 .254 +.006
Phillip Evans 27.5 183 .242 .249 .208 +.006
Seth Brown 28.1 173 .223 .229 .190 +.006
Andrew Benintendi 27.6 244 .257 .263 .272 +.006
Bryce Harper 27.7 248 .292 .299 .277 +.006
David Peralta 27.4 300 .245 .251 .253 +.006
Dylan Moore 28.1 204 .207 .213 .176 +.006
Christian Walker 27.6 197 .247 .253 .222 +.006
Taylor Trammell 28 156 .143 .149 .158 +.006
Matt Chapman 28 313 .213 .219 .221 +.006
Guillermo Heredia 27.6 186 .228 .234 .251 +.006
Dylan Carlson 27.7 322 .240 .246 .256 +.006
Willson Contreras 27.5 267 .230 .235 .235 +.006
Eric Haase 28 160 .238 .243 .244 +.005
Jonathan Villar 27.5 204 .227 .232 .234 +.005
Billy McKinney 27.7 183 .230 .235 .212 +.005
Rafael Devers 27.5 330 .295 .301 .283 +.005
A.J. Pollock 27.6 199 .261 .267 .271 +.005
Kris Bryant 27.6 291 .266 .271 .271 +.005
Xander Bogaerts 27.5 321 .283 .288 .318 +.005
Yoan Moncada 27.6 272 .263 .268 .270 +.005
Nicholas Castellanos 27.6 335 .306 .311 .330 +.005
Austin Riley 27.5 308 .270 .274 .273 +.005
Aaron Judge 27.5 312 .322 .327 .281 +.005
Tyler Naquin 27.4 252 .242 .247 .240 +.005
Josh Fuentes 27.5 241 .209 .214 .240 +.005
Jeff McNeil 27.3 163 .256 .261 .259 +.005
Kyle Tucker 27.5 293 .314 .319 .267 +.005
Paul DeJong 27.5 205 .224 .228 .185 +.005
J.P. Crawford 27.3 330 .261 .266 .277 +.004
Will Smith 27.6 230 .260 .264 .247 +.004
Didi Gregorius 27.5 151 .207 .211 .221 +.004
Robbie Grossman 27.7 310 .228 .233 .222 +.004
Jorge Polanco 27.5 313 .262 .267 .251 +.004
Kolten Wong 27.3 196 .262 .267 .289 +.004
Charlie Blackmon 27.2 283 .282 .286 .261 +.004
Brandon Lowe 27.6 288 .222 .227 .208 +.004
Nathaniel Lowe 27.3 319 .242 .246 .255 +.004
Justin Upton 27.5 223 .242 .246 .246 +.004
Austin Hays 27.3 219 .239 .244 .243 +.004
Eduardo Escobar 27.5 331 .241 .245 .253 +.004
Mike Tauchman 27.4 153 .189 .193 .183 +.004
Ben Gamel 27.6 160 .240 .244 .233 +.004
Jake Bauers 27.4 197 .239 .243 .214 +.004
Juan Soto 27.1 272 .314 .318 .281 +.004
Jared Walsh 27.2 324 .266 .270 .278 +.004
Carlos Correa 27.2 306 .281 .285 .286 +.003
Ian Happ 27.2 230 .205 .208 .182 +.003
Mookie Betts 27.3 305 .261 .265 .250 +.003
Jackie Bradley Jr. 27.2 264 .204 .208 .165 +.003
Max Kepler 27.3 198 .253 .257 .220 +.003
Enrique Hernandez 27.3 279 .229 .232 .235 +.003
Mike Yastrzemski 27.3 256 .226 .229 .234 +.003
Austin Meadows 27.5 312 .233 .236 .240 +.003
Gregory Polanco 27.3 221 .223 .226 .196 +.003
Jean Segura 27 239 .280 .283 .322 +.003
Adam Frazier 27.1 348 .297 .300 .329 +.003
Keston Hiura 27.3 161 .182 .184 .165 +.003
Max Muncy 27.1 256 .287 .290 .270 +.003
Hunter Renfroe 27.1 281 .274 .276 .260 +.003
Yulieski Gurriel 27 307 .275 .277 .303 +.002
Clint Frazier 27.1 183 .205 .207 .186 +.002
Kevin Pillar 27.2 193 .218 .220 .218 +.002
Hanser Alberto 27 151 .266 .268 .260 +.002
Gleyber Torres 27 279 .247 .249 .239 +.002
Eddie Rosario 27 283 .238 .240 .250 +.002
Joey Gallo 27.1 276 .234 .235 .239 +.002
Jeimer Candelario 27 305 .256 .258 .262 +.002
Jason Heyward 26.9 204 .229 .230 .213 +.002
Jonathan Schoop 26.9 339 .257 .259 .274 +.002
Joc Pederson 27 256 .241 .242 .223 +.002
Vladimir Guerrero Jr. 26.9 316 .323 .325 .331 +.002
Eugenio Suarez 27 320 .211 .213 .173 +.002
Marwin Gonzalez 26.9 219 .231 .233 .205 +.002
Tom Murphy 27 167 .204 .206 .186 +.002
Mitch Haniger 26.9 339 .260 .262 .254 +.002
Kyle Farmer 26.9 241 .240 .241 .216 +.002
Kyle Schwarber 26.9 265 .272 .273 .251 +.001
Miguel Rojas 26.8 253 .237 .238 .258 +.001
Michael Conforto 26.8 163 .248 .249 .202 +.001
Freddie Freeman 26.8 329 .308 .309 .274 +.001
Josh Harrison 26.8 270 .269 .270 .270 +.001
James McCann 26.7 233 .226 .226 .248 .000
Tony Kemp 26.7 179 .206 .206 .232 .000
DJ Stewart 26.6 181 .214 .214 .204 .000
Luis Urias 26.6 288 .229 .229 .235 .000
Paul Goldschmidt 26.6 336 .287 .287 .267 .000
Tyler Stephenson 26.6 195 .265 .265 .284 .000
Alex Verdugo 26.6 320 .290 .290 .276 .000
Miguel Sano 26.5 230 .198 .197 .196 -.001
Marcell Ozuna 26.5 188 .267 .266 .214 -.001
Pete Alonso 26.5 272 .261 .260 .247 -.001
Yordan Alvarez 26.5 282 .282 .281 .292 -.001
Andrew Vaughn 26.5 241 .260 .259 .245 -.001
Trey Mancini 26.5 324 .279 .278 .256 -.001
Yan Gomes 26.5 214 .294 .293 .266 -.001
Pavin Smith 26.5 316 .272 .271 .262 -.001
Rhys Hoskins 26.4 328 .238 .237 .233 -.001
Alex Dickerson 26.4 172 .277 .276 .228 -.001
Rougned Odor 26.4 165 .221 .220 .220 -.001
Yermin Mercedes 26.4 240 .252 .250 .270 -.001
Elvis Andrus 26.4 307 .276 .275 .234 -.001
Mike Zunino 26.1 187 .214 .213 .197 -.001
Jorge Soler 26.3 275 .219 .218 .185 -.002
Luis Arraez 26.4 226 .300 .298 .288 -.002
Pedro Severino 26.3 200 .234 .232 .219 -.002
Willie Calhoun 26.3 205 .287 .285 .254 -.002
DJ LeMahieu 26.4 341 .293 .291 .268 -.002
Ryan Zimmerman 26.3 153 .236 .234 .242 -.002
Ryan McMahon 26.2 302 .259 .257 .252 -.002
Nomar Mazara 26.3 165 .215 .213 .211 -.002
Evan Longoria 26.2 161 .300 .297 .280 -.002
Jurickson Profar 26.3 238 .241 .239 .233 -.002
Lourdes Gurriel 26.3 294 .253 .251 .259 -.002
Jose Abreu 26.3 308 .255 .253 .248 -.002
J.D. Martinez 26.1 324 .286 .283 .293 -.002
Sean Murphy 26.1 248 .237 .234 .221 -.003
Garrett Cooper 26.2 206 .278 .275 .291 -.003
Trevor Larnach 26.1 182 .233 .231 .246 -.003
Alex Bregman 26.2 229 .253 .250 .274 -.003
Freddy Galvis 26.1 250 .215 .212 .246 -.003
Franmil Reyes 26.1 173 .260 .257 .272 -.003
Salvador Perez 26 349 .277 .274 .274 -.003
Anthony Santander 26 212 .269 .266 .222 -.003
Josh Naylor 26.2 235 .260 .257 .253 -.003
Andrelton Simmons 26.2 234 .232 .229 .228 -.003
Kyle Seager 25.7 333 .229 .225 .211 -.004
C.J. Cron 25.9 232 .262 .258 .252 -.004
Donovan Solano 26 202 .258 .255 .257 -.004
Starlin Castro 26.1 316 .275 .271 .279 -.004
Dominic Smith 25.9 278 .277 .273 .249 -.004
Nelson Cruz 26 276 .296 .292 .299 -.004
Gary Sanchez 25.7 230 .232 .229 .217 -.004
Brock Holt 26 155 .247 .243 .213 -.004
Matt Olson 25.9 312 .281 .277 .278 -.004
Brandon Belt 25.5 170 .220 .216 .251 -.004
Dom Nunez 25.3 152 .165 .161 .170 -.004
Josh Bell 26 249 .280 .276 .244 -.004
Yandy Diaz 26.1 268 .235 .231 .249 -.004
Manny Machado 25.8 303 .287 .282 .262 -.004
Jesse Winker 25.8 319 .303 .298 .302 -.005
Nolan Arenado 25.4 336 .267 .262 .263 -.005
Harold Castro 25.7 160 .285 .280 .278 -.005
Jed Lowrie 25.5 300 .278 .272 .263 -.005
Anthony Rendon 25.3 217 .234 .228 .237 -.005
Elias Diaz 25.7 159 .260 .254 .213 -.005
Eric Sogard 25.7 160 .202 .196 .248 -.006
Carson Kelly 25 150 .277 .271 .255 -.006
Giovanny Urshela 25.6 295 .265 .259 .274 -.006
Michael Brantley 25.7 282 .341 .335 .325 -.006
Travis Shaw 25.1 178 .232 .226 .189 -.006
Justin Turner 25.2 306 .286 .280 .305 -.007
Brandon Crawford 25.1 266 .275 .268 .286 -.007
Christian Vazquez 25.2 276 .241 .233 .259 -.007
Jesus Aguilar 24.8 299 .283 .275 .262 -.007
Omar Narvaez 24.9 213 .258 .251 .298 -.008
Victor Caratini 25.1 196 .231 .224 .221 -.008
Anthony Rizzo 25.1 275 .269 .261 .242 -.008
Maikel Franco 25.3 290 .246 .237 .220 -.008
Joey Votto 24.9 218 .279 .271 .257 -.008
Eric Hosmer 25.5 301 .287 .278 .265 -.009
Ty France 25.1 294 .256 .247 .258 -.009
Asdrubal Cabrera 24.6 192 .221 .212 .236 -.009
Carlos Santana 24.8 309 .250 .241 .244 -.009
Tucker Barnhart 24.4 202 .222 .212 .267 -.010
Wilmer Flores 24.4 220 .239 .229 .253 -.010
Martin Maldonado 23.7 215 .194 .184 .172 -.010
Giancarlo Stanton 24.6 252 .260 .250 .269 -.010
Josh Donaldson 24.5 229 .276 .265 .244 -.010
Daniel Vogelbach 24.5 171 .247 .237 .216 -.010
Jose Trevino 24.5 165 .264 .253 .224 -.011
Buster Posey 24.4 201 .302 .291 .328 -.011
Colin Moran 24.2 157 .266 .254 .278 -.011
Miguel Cabrera 24.3 253 .238 .226 .243 -.012
Yasmani Grandal 23.5 182 .236 .224 .184 -.012
Mitch Moreland 24.3 160 .230 .218 .233 -.012
Jacob Stallings 23.7 219 .243 .229 .228 -.014
Yadier Molina 23.1 245 .276 .261 .256 -.015
Albert Pujols 22.4 196 .281 .262 .240 -.018
Default sort: ∆ Old → New xBA





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.

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
ArmadilloFury
2 years ago

Probably should have a sprint speed adjustment for liners and flyballs as well for xwoba and xslug since speedier hitters will be more likely to take the extra base.