zStats for Hitters, June Update

Daniel Kucin Jr.-USA TODAY Sports

Among the panoply of stats created by Statcast and similar tracking tools in recent years are a whole class of stats sometimes called the “expected stats.” These types of numbers elicit decidedly mixed feelings among fans – especially when they suggest their favorite team’s best player is overachieving – but they serve an important purpose of linking between Statcast data and the events that happen on the field. Events in baseball, whether a single or a homer or strikeout or whatever, happen for reasons, and this type of data allows us to peer a little better into baseball on an elemental level.

While a lucky home run or a seeing-eye single still count on the scoreboard and in the box score, the expected stats assist us in projecting what comes next. Naturally, as the developer of the ZiPS projection tool for the last 20 (!) years, I have a great deal of interest in improving these prognostications. Statcast has its own methodology for estimating expected stats, which you’ll see all over the place with a little x preceding the stats (xBA, xSLG, xwOBA, etc). While these data don’t have the status of magic, they do help us predict the future slightly less inaccurately, even if they weren’t explicitly designed to optimize predictive value. What ZiPS uses is designed to be as predictive as I can make it. I’ve talked a lot about this for both hitters and for pitchers. The expected stats that ZiPS uses are called zStats; I’ll let you guess what the “z” stands for!

It’s important to remember that these aren’t predictions in themselves. ZiPS certainly doesn’t just look at a hitter’s zBABIP from the last year and go, “Hey, sounds good, that’s the projection.” But the data contextualize how events come to pass, and are more stable for individual players than the actual stats. That allows the model to shade the projections in one direction or the other. And sometimes it’s extremely important, such as in the case of homers allowed for pitchers. Of the fielding-neutral stats, homers are easily the most volatile, and home run estimators for pitchers are much more predictive of future homers than actual homers allowed are. Also, the longer a hitter “underachieves” or “overachieves” in a specific stat, the more ZiPS believes the actual performance rather than the expected one.

A good example of this last point is Isaac Paredes. There was a real disconnect between his expected and actual performances in 2023 and that’s continued into 2024. But despite some really confounding Statcast data, ZiPS now projects Parades to be a considerably more productive hitter moving forward than it did back in March. Expected stats give us additional information; they don’t give us readings from the Oracle at Delphi.

One thing to note is that bat speed is not part of the model. The data availability is just too recent to gauge how including it would improve the predictive value of these numbers. It’s also likely that even without the explicit bat speed data, the model is already indirectly capturing a lot of the information bat speed data provides.

What’s also interesting to me is that zHR is quite surprised by this year’s decline in homers. There have been 2,076 home runs hit in 2024 as I type this, yet before making the league-wide adjustment for environment, zHR thinks there “should have been” 2,375 home runs hit, a difference of 299. That’s a massive divergence; zHR has never been off by more than 150 home runs league-wide across a whole season, and it is aware that these home runs were mostly hit in April/May and the summer has yet to come. That does make me wonder about the sudden drop in offense this year. It’s not a methodology change either, as I re-ran 2023 with the current model (with any training data from 2023 removed) and there were 5,822 zHR last year compared to the actual total of 5,868 homers.

Let’s start with the over/underachievers for OPS. This is OPS calculated knowing only a player’s zBABIP, zHR, zSO, and zBB.

zOPS Overachievers (6/12, min. 150 PA)
Name OPS zOPS DIFF
Isaac Paredes .843 .628 .215
Max Muncy .798 .584 .214
Connor Wong .839 .646 .193
Elias Díaz .791 .598 .193
Ezequiel Tovar .814 .635 .179
Marcell Ozuna .994 .815 .179
Steven Kwan .984 .808 .177
David Fry 1.024 .859 .165
Daulton Varsho .757 .592 .165
Kyle Tucker .979 .835 .144
Kerry Carpenter .914 .780 .134
Jurickson Profar .924 .792 .132
Adley Rutschman .822 .695 .127
Christian Yelich .894 .769 .125
Jose Miranda .754 .640 .114
Tyler O’Neill .854 .743 .111
Teoscar Hernández .861 .752 .109
Kyle Schwarber .777 .670 .106
Mookie Betts .917 .815 .102
José Ramírez .878 .777 .102

zOPS Underachievers (6/12, min. 150 PA)
Name OPS zOPS DIFF
MJ Melendez .554 .763 -.209
Brandon Nimmo .715 .902 -.187
Adam Duvall .608 .785 -.177
Vinnie Pasquantino .742 .904 -.162
Corbin Carroll .610 .763 -.154
Javier Báez .456 .605 -.149
Austin Riley .635 .783 -.148
Francisco Lindor .699 .845 -.146
Jackson Merrill .671 .815 -.144
Jesús Sánchez .633 .771 -.138
Ronald Acuña Jr. .716 .849 -.133
Ian Happ .693 .825 -.132
Brendan Donovan .680 .811 -.131
Yandy Díaz .685 .816 -.131
Colt Keith .545 .670 -.125
Jo Adell .686 .809 -.124
Matt Chapman .713 .835 -.122
Bo Bichette .635 .757 -.121
Andrew Benintendi .514 .633 -.119
Matt Olson .752 .871 -.119

He didn’t make the top 20, but one of the most depressing things about Spencer Torkelson’s struggles this year is that zStats think he should have actually hit worse than his already anemic triple-slash line (.201/.266/.330). Matt Olson was basically lapping the underachievers field in mid-May — when he was underperforming by nearly .300 (!) points — but he’s been hitting more like he’s expected to over the last month or so. His seasonal 2024 line is still well below what it was last year, but it’s a huge improvement over where it was about a month ago.

One of the most interesting hitters by zStats is one who didn’t make either chart, Aaron Judge. He’s been on an absolute tear, and for the season his zStats are in the neighborhood of his actual numbers. Shohei Ohtani led the league in zOPS early, but he’s hit like a mere mortal for the last calendar month, at .248/.321/.446. To better illustrate the ridiculousness of Judge’s performance thus far, let me just throw in another chart, the overall zOPS rankings.

zOPS Leaders (6/12, min. 150 PA)
Name OPS zOPS DIFF
Aaron Judge 1.149 1.109 .040
Shohei Ohtani .965 .962 .003
Juan Soto 1.020 .946 .075
Bobby Witt Jr. .929 .923 .007
Alec Bohm .810 .921 -.111
Vinnie Pasquantino .742 .904 -.162
Brandon Nimmo .715 .902 -.187
Gunnar Henderson .974 .880 .094
Ketel Marte .846 .879 -.033
Matt Olson .752 .871 -.119
Fernando Tatis Jr. .835 .862 -.028
David Fry 1.024 .859 .165
Salvador Perez .853 .857 -.004
Yordan Alvarez .871 .854 .017
Joc Pederson .878 .850 .028
Ronald Acuña Jr. .716 .849 -.133
Freddie Freeman .899 .849 .050
Jarren Duran .784 .846 -.062
Francisco Lindor .699 .845 -.146
Gavin Sheets .773 .841 -.068

In zOPS, there’s as large a gap between Judge and Ohtani, as there is between Ohtani and Jake Cronenworth in 36th place! It’s also worth noting that while Guardians utilityman David Fry is one of the larger overachievers, ZiPS still thinks he’s been a very solid hitter this year.

zBABIP Overachievers (6/12, min. 150 PA)
Name BABIP zBABIP zBABIP Diff
LaMonte Wade Jr. .436 .328 .108
Connor Wong .389 .291 .099
Isaac Paredes .315 .236 .079
Kerry Carpenter .327 .249 .078
Ezequiel Tovar .380 .303 .077
Tyler O’Neill .329 .254 .076
Elias Díaz .350 .275 .076
Wilyer Abreu .348 .277 .071
Spencer Torkelson .253 .183 .070
Christian Yelich .382 .314 .068
Jose Miranda .289 .224 .065
J.D. Martinez .358 .296 .062
Steven Kwan .400 .338 .062
Brenton Doyle .353 .301 .052
Ozzie Albies .297 .245 .051
Daulton Varsho .254 .205 .049
Christian Walker .299 .252 .047
Jurickson Profar .356 .309 .047
Salvador Perez .333 .287 .047
David Fry .362 .316 .046

zBABIP Underachievers (6/12, min. 150 PA)
Name BABIP zBABIP zBABIP Diff
Jo Adell .217 .324 -.107
Adam Duvall .195 .290 -.095
MJ Melendez .180 .268 -.089
Josh Naylor .201 .274 -.072
Francisco Lindor .245 .314 -.069
George Springer .220 .289 -.069
Brandon Nimmo .281 .349 -.068
Nick Castellanos .239 .304 -.065
Eddie Rosario .208 .272 -.064
Lars Nootbaar .275 .337 -.063
Santiago Espinal .207 .269 -.062
Jack Suwinski .218 .279 -.061
Andrew Benintendi .217 .276 -.059
CJ Abrams .278 .333 -.055
Bryson Stott .267 .322 -.055
Christopher Morel .216 .270 -.054
Ceddanne Rafaela .261 .314 -.053
Javier Báez .226 .278 -.052
Lane Thomas .255 .306 -.052
J.P. Crawford .242 .293 -.051

zBABIP includes information such as sprint speed in order to get a better idea of whose stats are out of whack with the inputs. CJ Abrams makes an appearance in the underachievers, suggesting that his weak May is probably more of an outlier than his blazing hot April. If Reddit conversations are a representative cross-section of fans, I expect no Mets fans will trust zStats as a result of its thinking Francisco Lindor ought to have a much higher average than his actual mark of .231.

zHR Overachievers (6/12)
Name HR zHR zHR Diff
Gunnar Henderson 21 12.8 8.2
Josh Naylor 17 10.9 6.1
Kyle Tucker 19 12.9 6.1
Teoscar Hernández 17 11.3 5.7
José Ramírez 18 12.9 5.1
Alec Burleson 9 4.2 4.8
Marcell Ozuna 18 13.3 4.7
Max Muncy 9 4.5 4.5
Nolan Schanuel 7 2.6 4.4
Paul DeJong 13 8.6 4.4
Adley Rutschman 13 8.8 4.2
Isaac Paredes 10 5.8 4.2
Daulton Varsho 10 6.1 3.9
Mookie Betts 10 6.2 3.8
Nolan Gorman 15 11.3 3.7
Ezequiel Tovar 11 7.5 3.5
Anthony Santander 14 10.5 3.5
Bryce Harper 15 11.8 3.2
Mark Canha 6 3.0 3.0
Jackson Chourio 7 4.0 3.0

zHR Underachievers (6/12)
Name HR zHR zHR Diff
Austin Riley 3 8.4 -5.4
Salvador Perez 10 15.1 -5.1
Bobby Witt Jr. 11 16.0 -5.0
Vinnie Pasquantino 7 11.7 -4.7
Ian Happ 6 10.5 -4.5
Charlie Blackmon 2 5.9 -3.9
Alec Bohm 6 9.9 -3.9
Javier Báez 1 4.8 -3.8
Mike Tauchman 5 8.7 -3.7
Jackson Merrill 3 6.7 -3.7
Matt Olson 9 12.6 -3.6
Elehuris Montero 3 6.6 -3.6
Vladimir Guerrero Jr. 7 10.5 -3.5
Colt Keith 2 5.4 -3.4
Wyatt Langford 1 4.3 -3.3
Corbin Carroll 2 5.2 -3.2
Davis Schneider 7 10.2 -3.2
Ronald Acuña Jr. 4 7.0 -3.0
Matt Chapman 8 11.0 -3.0
LaMonte Wade Jr. 2 5.0 -3.0

I’m from Baltimore, so as much as it pains me to note that Gunnar Henderson probably isn’t actually a 50-homer hitter, which is his current pace, I certainly wouldn’t mind if, like the O’s as a team last year, he defied what my projections say! Even if you wring some homers out of Gunnar’s line, he’s still an ultra-elite shortstop and dare I say, the team’s biggest star, rather than Adley Rutschman.

Three of the top four underachievers in home runs here are Royals, including Salvador Perez, who is already having a dynamite season without adding any more blasts to the butcher’s bill. Vinnie Pasquantino is one of the larger underachievers overall, which ought to be a boon to Kansas City as the season goes on given that the team’s offensive depth is rather unimpressive. zStats do include their own park factors, so Kauffman Stadium isn’t putting its figurative thumb on the scale.

zBB Overachievers (6/12)
Name BB zBB zBB Diff
Bryce Harper 42 29.4 12.6
Nico Hoerner 24 13.7 10.3
Bryson Stott 29 20.1 8.9
Ha-Seong Kim 41 33.1 7.9
Corey Seager 30 22.8 7.2
Elehuris Montero 17 9.8 7.2
Willson Contreras 18 11.7 6.3
George Springer 28 21.7 6.3
Brett Baty 16 9.8 6.2
Michael Harris II 15 9.0 6.0
LaMonte Wade Jr. 33 27.0 6.0
Vladimir Guerrero Jr. 36 30.2 5.8
Jake Fraley 13 7.2 5.8
David Fry 24 18.2 5.8
Jack Suwinski 20 14.4 5.6
Mike Tauchman 31 25.5 5.5
Rafael Devers 28 22.6 5.4
Ryan McMahon 31 25.7 5.3
Jurickson Profar 39 33.9 5.1
Enrique Hernández 14 9.0 5.0

zBB Underachievers (6/12)
Name BB zBB zBB Diff
Brendan Donovan 19 30.6 -11.6
Mike Yastrzemski 16 23.7 -7.7
Seiya Suzuki 12 19.4 -7.4
Nick Fortes 4 10.6 -6.6
Luis Arraez 12 18.6 -6.6
Mitch Haniger 20 26.4 -6.4
Brandon Marsh 21 27.1 -6.1
Jo Adell 12 18.0 -6.0
Blake Perkins 18 23.5 -5.5
Nelson Velázquez 17 22.5 -5.5
Josh Bell 21 26.5 -5.5
Yandy Díaz 26 31.4 -5.4
Orlando Arcia 10 15.3 -5.3
Brendan Rodgers 11 16.2 -5.2
Ramón Urías 4 9.2 -5.2
Eugenio Suárez 17 22.1 -5.1
Adolis García 17 22.1 -5.1
Alec Bohm 20 25.1 -5.1
Jazz Chisholm Jr. 23 28.0 -5.0
Luke Raley 6 10.9 -4.9

zSO Overachievers (6/12)
Name SO zSO zSO Diff
Mookie Betts 31 47.5 -16.5
Dairon Blanco 16 32.3 -16.3
Cody Bellinger 39 54.1 -15.1
JJ Bleday 53 67.6 -14.6
Hunter Renfroe 34 47.2 -13.2
Harold Ramírez 33 46.2 -13.2
Bryan Reynolds 59 72.0 -13.0
Jake Meyers 42 55.0 -13.0
Juan Soto 48 60.8 -12.8
Nico Hoerner 23 35.6 -12.6
Johan Rojas 30 42.5 -12.5
Luis Arraez 18 30.3 -12.3
Andrés Giménez 40 52.0 -12.0
William Contreras 58 69.5 -11.5
J.D. Davis 30 41.3 -11.3
Carlos Santana 39 50.3 -11.3
Marcell Ozuna 60 71.2 -11.2
Francisco Lindor 48 59.0 -11.0
Willy Adames 64 74.9 -10.9
Randy Arozarena 70 80.9 -10.9

zSO Underachievers (6/12)
Name SO zSO zSO Diff
Cal Raleigh 81 57.7 23.3
Matt Olson 70 55.5 14.5
Brandon Marsh 53 38.5 14.5
Michael Busch 73 58.7 14.3
Ryan McMahon 80 66.2 13.8
Nathaniel Lowe 38 25.0 13.0
Ty France 56 43.5 12.5
Seth Brown 59 46.9 12.1
Julio Rodríguez 82 70.1 11.9
Cedric Mullins 51 39.2 11.8
Ryan Mountcastle 55 43.4 11.6
Luis Urías 31 19.4 11.6
J.T. Realmuto 60 48.5 11.5
J.P. Crawford 38 26.9 11.1
Will Benson 86 75.0 11.0
Sal Frelick 45 34.0 11.0
Yandy Díaz 39 28.1 10.9
Andy Pages 55 44.9 10.1
Jack Suwinski 51 40.9 10.1
Jonah Heim 43 33.2 9.8

These stats aren’t as important as their counterparts for pitchers, but they do provide additional value in predicting the future over the raw strikeout and walk totals. Strikeout and walks stabilize very quickly for hitters, but components of zSO and zBB stabilize even more quickly. It’s interesting that for both stats there’s a lot of non-overlapping explanatory variables. Contact information is really important for strikeout rate whereas swing-decision information isn’t, nor is called-strike percentage. But swing-decision data are far more important for modeling walk rate than is contact information. The r^2 for zBB% vs. BB% is just under 0.7, and for zSO% vs. SO%, a hair under 0.9. I’m most interested to see how bat speed data will interact with these numbers, but alas, that may be an article for 49-year-old Dan to write, not the current one.

I’ll run down the zStats one more time this season, in late August, and we’ll evaluate again how zStats performed vs. the actual numbers with two more months of data.





Dan Szymborski is a senior writer for FanGraphs and the developer of the ZiPS projection system. He was a writer for ESPN.com from 2010-2018, a regular guest on a number of radio shows and podcasts, and a voting BBWAA member. He also maintains a terrible Twitter account at @DSzymborski.

30 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Cam78
10 months ago

So, Duvall, Riley, and Olson all make the top 20 underachievers here (Acuña as well, but he doesn’t get to fix that this year…). So, you’re telling me there’s some hope?