The 2020 ZiPS Projection Wrap-up, Part II: The Hitters

While there’s still a bit of baseball left to be played, this is always the time of the year when I dissect the current season’s ZiPS projections. Baseball history is not so long that we suffer from a surfeit of data, and another season wrapped means more for ZiPS to work with. ZiPS is mature enough at this point that (sadly) the major sources of systematic error have been largely ironed out, but that doesn’t mean that the model doesn’t learn new things from the results.

Last week, we looked at the team projections. Now, we turn our eyes to the hitters. Given the length of the 2020 season, the accuracy and bias of hitters’ projections this year likely offer fewer broadly applicable lessons, but they can still help us learn something about how projections ought to treat truncated seasons.

The first thing I can say with confidence is that, at least when it comes to ZiPS, there was no group tendency that could be gleaned from the projection errors. I assessed the errors using a variety of tools to see if certain types of players had more or less accurate projections or a 2020 tendency to over- or underperform the projections as a group. For instance, did fastball hitters fare better or worse? Did young players, or faster players?

The answer for these and other similar comparisons I looked at was no; none of these attributes had significant predictive value when it came to the magnitude of the errors or the bias of the projections. That’s good news in that 2020 didn’t feature any new calibration errors, but bad news in that we didn’t really learn anything new about short seasons. If, for example, my analysis had revealed that older hitters overperformed their projections as a group, it may have given us new insight into how aging players can better maintain their performance in 60 games rather than 162. On the whole, the errors were uncorrelated in this manner. The exception was the usual one: players with shorter resumés had less accurate projections than players with longer ones, but that’s always the case.

So, let’s go through the various categories and take a look at the biggest over- and underachievers, at least relative to what ZiPS thought. 100 plate appearances were required to make these lists.

First up: batting average.

2020 ZiPS BA Underachievers
Player BA ZiPS BA Miss
Jo Adell .161 .273 .112
Christian Yelich .205 .300 .095
Gary Sánchez .147 .242 .095
Omar Narváez .176 .270 .094
Shohei Ohtani .190 .284 .094
Luis Rengifo .156 .247 .091
Gregory Polanco .153 .244 .091
Scott Kingery .159 .247 .088
Jose Altuve .219 .303 .084
Edwin Encarnación .157 .241 .084
Ender Inciarte .190 .273 .083
Elvis Andrus .194 .276 .082
Daulton Varsho .188 .270 .082
Willie Calhoun .190 .269 .079
J.D. Martinez .213 .291 .078
Hunter Renfroe .156 .233 .077
Bryan Reynolds .189 .263 .074
Tyler O’Neill .173 .245 .072
Rougned Odor .167 .238 .071
Javier Báez .203 .273 .070
Ehire Adrianza .191 .261 .070
Kris Bryant .206 .269 .063

The biggest disappointment to me on this list has to be Jo Adell, the only player who fell short of his projecting batting average by at least 100 points. There were no particular worries about Adell coming into the season; he was generally well-liked by both the projections and scouts, though Eric Longenhagen did note that strikeout issues might limit his production upon his initial big-league promotion. Sure, he was far from amazing in his short stint in Triple-A in 2019 (.264/.321/.355), but a 42% strikeout rate en route to a pitcher-esque .161/.212/.266 line is just a miserable season. And he’s not even eligible for the Rookie of the Year award in 2021; MLB adjusted the service time requirements so that September roster days do count towards rookie status.

Meanwhile, a few other players can at least point to injuries as mitigating factors for their underperformance. Willie Calhoun returned from an extremely painful broken jaw. Shohei Ohtani suffered from a sore forearm that left him unable to pitch, and while I’m not a hitting mechanics expert, I’d assume having use of your arms helps you at the plate.

Christian Yelich was a stupefying miss, but in his case, at least he can complain about a BABIP 95 points lower than his career numbers to help explain his down season. There are still concerns here — for example, his contact numbers continuing to worsen even as he was more selective at the plate — but I’m not aboard the panic bus just yet.

Others can join Yelich on the BABIP Blame Train, including Gary Sánchez (.159 BABIP), Edwin Encarnación (.156), Hunter Renfroe (.141), Rougned Odor (.157), and Tyler O’Neill (.189). Sixty games is brutal for these kinds of BABIP misses and there’s little reason to think that sub .200 BABIPs are ever real for legitimate major league hitters. After all, pitchers across the majors had a .243 BABIP in 2019.

2020 ZiPS BA Overachievers
Player BA ZiPS BA Miss
José Iglesias .373 .267 -.106
Willi Castro .349 .254 -.095
Salvador Perez .333 .247 -.086
Max Stassi .278 .203 -.075
Alec Bohm .338 .265 -.073
Brandon Belt .309 .236 -.073
Ryan Mountcastle .333 .262 -.071
DJ LeMahieu .364 .294 -.070
Michael Conforto .322 .257 -.065
Jared Walsh .293 .228 -.065
Dominic Smith .316 .251 -.065
Donovan Solano .326 .262 -.064
Travis d’Arnaud .321 .258 -.063
Nick Madrigal .340 .278 -.062
Jeimer Candelario .297 .237 -.060
Robinson Canó .316 .258 -.058
Marcell Ozuna .338 .281 -.057
Juan Soto .351 .295 -.056
Pat Valaika .277 .221 -.056
Trea Turner .335 .280 -.055
Dylan Moore .255 .201 -.054
Will Smith .289 .236 -.053

Raise your hand if you had the season’s big breakout candidate as José Iglesias! OK, put your hands down, liars. Iglesias was one of six players to put up a .400 BABIP in 2020 and five of them (Iglesias, Castro, d’Arnaud, Bohm, and Conforto) made this list. The more interesting names are the ones who overperformed despite only moderate BABIP spikes: Juan Soto cut a quarter of his strikeout rate, as did Max Stassi in more limited time. DJ LeMahieu kept 2019’s power while actually improving his contact numbers as well; I haven’t run the official projections yet, but I’m quite confident that his will put him in the elite second baseman category, even given the realities of being an over-30 middle infielder.

2020 ZiPS SLG Underachievers
Name SLG ZiPS SLG Miss
Willie Calhoun .260 .495 .235
Carter Kieboom .212 .413 .201
Eric Thames .317 .507 .190
Joey Gallo .378 .566 .188
Jo Adell .266 .450 .184
Gleyber Torres .368 .551 .183
Luis Rengifo .200 .382 .182
Omar Narváez .269 .445 .177
Eduardo Escobar .335 .500 .165
Shohei Ohtani .366 .525 .159
Jose Altuve .344 .502 .159
Gary Sánchez .365 .523 .157
J.D. Martinez .389 .546 .157
Daniel Murphy .333 .488 .154
Roberto Pérez .216 .370 .153
Javier Báez .360 .512 .152
Kris Bryant .351 .502 .151
Avisaíl García .326 .475 .149
Tommy Pham .312 .460 .148
Nomar Mazara .294 .440 .146
Shogo Akiyama .297 .441 .145
Ender Inciarte .250 .393 .143

Since there’s a lot of BA in SLG, there are some holdovers here. But there are some definite power disappointments, too. Carter Kieboom’s rookie season being more of a Kersplat than a Kieboom worries me; he only had a single extra-base hit in 122 plate appearances. He had more than that in 43 plate appearances in his 2019 debut! An 85 mph average exit velocity isn’t very exciting, nor the zero barrels he hit. Joey Gallo’s low average doesn’t worry me, but his lack of 2020 power certainly does. Gallo’s statcast data was down across the board and it’s a major concern for the Rangers as they can’t put together an offense that even aspires to being “normal-bad” without him producing.

The outlook may be especially worrisome for Kris Bryant. Even worse than slugging .351 is the numbers extrapolated from advanced data thinking you were fortunate to slug .351; his Statcast data led ZiPS to conclude he should only have slugged .344 in 2020. His oblique issue mitigates this somewhat, but at least hitters like Gallo and J.D. Martinez had slightly better power data than their bottom-line numbers.

2020 ZiPS SLG Overachievers
Name SLG ZiPS SLG Miss
Jared Walsh .646 .439 -.208
Dominic Smith .616 .409 -.206
Salvador Perez .633 .453 -.180
Jose Iglesias .556 .383 -.173
Brandon Belt .591 .418 -.172
Willi Castro .550 .380 -.170
Max Stassi .533 .367 -.166
Alex Dickerson .576 .411 -.165
Wil Myers .606 .444 -.162
DJ LeMahieu .590 .435 -.155
JaCoby Jones .515 .361 -.155
James McCann .536 .382 -.155
Anthony Santander .575 .422 -.153
Dylan Moore .496 .351 -.146
Robinson Canó .544 .398 -.145
Jose Abreu .617 .472 -.144
Byron Buxton .577 .439 -.138
Juan Soto .695 .560 -.134
Mike Yastrzemski .568 .436 -.132
Jake Cronenworth .477 .346 -.131
Trea Turner .588 .458 -.130
Marcell Ozuna .636 .508 -.128

ZiPS is a bit more skeptical about LeMahieu’s SLG than it was in 2019, but his BA projection will likely be strong enough that a drop in power won’t even matter. The players on this list ZiPS is the most confident will maintain their newfound thump are Juan Soto (some of this is BA) and Byron Buxton, who ZiPS thought should have slugged .540, which would be mighty impressive if he can stay healthy for an entire season one of these years. Jake Cronenworth’s .525 zSLG was actually even better than his actual bump to .477.

There are a lot of repeats in the overall OPS misses, so these tables are mostly for historical reference.

2020 ZiPS OPS Underachievers
Name OPS ZiPS OPS Miss
Willie Calhoun .491 .823 .332
Jo Adell .478 .776 .298
Gregory Polanco .539 .782 .244
Joey Gallo .679 .920 .241
Jose Altuve .629 .867 .238
Luis Rengifo .469 .704 .235
Eric Thames .617 .851 .234
Omar Narváez .562 .794 .231
J.D. Martinez .680 .911 .231
Gary Sanchez .618 .847 .228
Kris Bryant .644 .870 .226
Javier Báez .599 .824 .225
Daniel Murphy .608 .832 .224
Eduardo Escobar .605 .822 .216
Ender Inciarte .512 .727 .215
Shohei Ohtani .657 .871 .214
Tommy Pham .624 .829 .205
Scott Kingery .511 .707 .196
Edwin Encarnación .627 .822 .195
Carter Kieboom .556 .750 .193
Nolan Arenado .738 .930 .193
Josh Bell .669 .857 .188

2020 ZiPS OPS Overachievers
Name OPS ZiPS OPS Miss
Dominic Smith .993 .716 -.277
José Iglesias .956 .687 -.269
Brandon Belt 1.015 .760 -.255
Salvador Perez .986 .736 -.250
Willi Castro .932 .685 -.247
Max Stassi .886 .643 -.243
Jared Walsh .971 .735 -.236
DJ LeMahieu 1.011 .781 -.230
Dylan Moore .855 .631 -.224
Mike Yastrzemski .968 .747 -.221
Alex Dickerson .947 .731 -.216
James McCann .896 .683 -.214
Marcell Ozuna 1.067 .856 -.211
Juan Soto 1.185 .975 -.210
JaCoby Jones .849 .644 -.204
Miguel Rojas .888 .686 -.202
Wil Myers .959 .760 -.200
Darin Ruf 러프 .887 .691 -.197
Jose Abreu .987 .793 -.194
Donovan Solano .828 .636 -.192
Robinson Canó .896 .708 -.188
Will Smith .980 .793 -.187

The other useful question to ask is how did ZiPS fare in terms of its calibration? Remember, there’s more than a mean projection for each player; every player is given X% chance at hitting .300 or .350, or slugging .500, etc. ZiPS only projected four players with a .300 BA or better mean projection, but that’s not the same thing as saying that only four players will hit .300 because most players aren’t expected to be at their mean projections. This is one of the more depressing parts of working with projections, the knowledge that being too correct is also a miscalibration in a very real sense. In this case, ZiPS thought that 41.3 players would in fact hit .300 in a short season, while 39 actually did (keeping the 100 PA minimum).

2020 ZiPS Probability Buckets
Category ZiPS Expected Actual
>.400 BA 0.1 0
>.350 BA 4.2 3
> .300 BA 41.3 39
<.200 BA 38.6 35
<.150 BA 3.2 1
>.700 SLG 1.0 0
>.600 SLG 10.6 11
>.500 SLG 58.4 62
<.400 SLG 127.1 132
<.300 SLG 26.6 22
>.400 OBP 20.3 18
<.300 OBP 90.3 84
>1.000 OPS 6.0 5
<.600 OPS 30.5 28

While ZiPS was generally well-calibrated in this manner, it did see slightly more spread at the extremes than in reality, mostly in the BABIP components. This is useful information for any future shortened seasons, knowledge that hopefully will never actually prove useful!

In the next part, we’ll take a look at the pitchers.





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.

newest oldest most voted
WARonEverything
Member
WARonEverything

It would be nice to see BABIP in the BA chart. How about ISO vs SLG – might find some more that were not in the BA list?