Top 100 Spring Hitters by OPS
As we know, spring stats are fluky and small samply. Usually any crazy production is statistical noise, but sometimes there is signal hiding in the weeds. Next week, I’ll apply a technique that can thin the herd by providing a short list of players who might be on the verge of a breakout.
For now, here is a manually compiled, sortable leaderboard of the top 100 spring hitters with over 20 at bats. Remember, apply every caveat imaginable. The BABIP column does not include sacrifices, so it could be a little off. The data I exported did not include that stat.
| PLAYER | POS | TEAM | AB | HR | AVG | OBP | SLG | OPS | BABIP |
|---|---|---|---|---|---|---|---|---|---|
| Andrew McCutchen | CF | PIT | 25 | 3 | 0.560 | 0.593 | 1.000 | 1.593 | 0.611 |
| Chris Davis | 1B | BAL | 22 | 3 | 0.500 | 0.560 | 1.000 | 1.560 | 0.533 |
| Mike Moustakas | 3B | KC | 35 | 4 | 0.486 | 0.558 | 0.943 | 1.501 | 0.481 |
| Russell Martin | C | PIT | 21 | 4 | 0.381 | 0.458 | 1.000 | 1.458 | 0.308 |
| Francisco Cervelli | C | NYY | 25 | 3 | 0.480 | 0.519 | 0.880 | 1.399 | 0.500 |
| Roger Bernadina | LF | CIN | 25 | 1 | 0.440 | 0.588 | 0.800 | 1.388 | 0.500 |
| Brandon Moss | 1B | OAK | 28 | 3 | 0.464 | 0.531 | 0.857 | 1.388 | 0.556 |
| Steve Clevenger | C | BAL | 22 | 1 | 0.545 | 0.600 | 0.773 | 1.373 | 0.579 |
| Robinson Cano | 2B | SEA | 23 | 0.609 | 0.654 | 0.696 | 1.350 | 0.636 | |
| Bryce Brentz | RF | BOS | 22 | 3 | 0.409 | 0.480 | 0.818 | 1.298 | 0.500 |
| Yangervis Solarte | 2B | NYY | 29 | 2 | 0.517 | 0.563 | 0.724 | 1.287 | 0.565 |
| Jerry Sands | LF | TB | 27 | 3 | 0.370 | 0.414 | 0.852 | 1.266 | 0.438 |
| Austin Jackson | CF | DET | 32 | 1 | 0.469 | 0.514 | 0.750 | 1.264 | 0.519 |
| Chris Heisey | LF | CIN | 38 | 5 | 0.368 | 0.368 | 0.895 | 1.263 | 0.333 |
| Brad Miller | SS | SEA | 30 | 3 | 0.367 | 0.441 | 0.800 | 1.241 | 0.421 |
| Steven Souza | SS | WAS | 31 | 3 | 0.355 | 0.429 | 0.806 | 1.235 | 0.333 |
| A.J. Pollock | CF | ARI | 40 | 1 | 0.425 | 0.477 | 0.750 | 1.227 | 0.500 |
| Jose Bautista | RF | TOR | 30 | 3 | 0.367 | 0.459 | 0.767 | 1.226 | 0.421 |
| Brandon Hicks | SS | SF | 30 | 1 | 0.400 | 0.472 | 0.733 | 1.205 | 0.524 |
| Anthony Rizzo | 1B | CHC | 28 | 2 | 0.393 | 0.452 | 0.750 | 1.202 | 0.409 |
| Alex Gonzalez | SS | BAL | 23 | 2 | 0.435 | 0.458 | 0.739 | 1.197 | 0.421 |
| Martin Prado | 3B | ARI | 40 | 1 | 0.475 | 0.488 | 0.700 | 1.188 | 0.514 |
| Zoilo Almonte | LF | NYY | 24 | 1 | 0.458 | 0.480 | 0.708 | 1.188 | 0.476 |
| Kolten Wong | 2B | STL | 33 | 2 | 0.394 | 0.459 | 0.727 | 1.186 | 0.458 |
| Neftali Soto | C | CIN | 33 | 2 | 0.424 | 0.424 | 0.758 | 1.182 | 0.400 |
| Marc Krauss | LF | HOU | 26 | 2 | 0.385 | 0.407 | 0.769 | 1.176 | 0.533 |
| Dustin Ackley | CF | SEA | 37 | 1 | 0.432 | 0.462 | 0.703 | 1.165 | 0.500 |
| Danny Santana | SS | MIN | 23 | 0.391 | 0.462 | 0.696 | 1.158 | 0.429 | |
| Derek Norris | C | OAK | 25 | 2 | 0.400 | 0.423 | 0.720 | 1.143 | 0.381 |
| Nick Markakis | RF | BAL | 25 | 0.440 | 0.462 | 0.680 | 1.142 | 0.478 | |
| Stephen Vogt | C | OAK | 29 | 1 | 0.414 | 0.485 | 0.655 | 1.140 | 0.440 |
| Matt Long | RF | LAA | 40 | 1 | 0.425 | 0.465 | 0.675 | 1.140 | 0.457 |
| Nick Castellanos | 3B | DET | 41 | 2 | 0.415 | 0.432 | 0.707 | 1.139 | 0.417 |
| Miguel Cabrera | 1B | DET | 32 | 2 | 0.406 | 0.513 | 0.625 | 1.138 | 0.423 |
| Marwin Gonzalez | SS | HOU | 28 | 0.464 | 0.448 | 0.679 | 1.127 | 0.500 | |
| Chris Colabello | 1B | MIN | 26 | 1 | 0.385 | 0.500 | 0.615 | 1.115 | 0.474 |
| Zach Walters | SS | WAS | 28 | 1 | 0.393 | 0.469 | 0.643 | 1.112 | 0.500 |
| Mike Trout | CF | LAA | 35 | 2 | 0.371 | 0.421 | 0.686 | 1.107 | 0.379 |
| Tim Wheeler | CF | COL | 28 | 2 | 0.321 | 0.424 | 0.679 | 1.103 | 0.368 |
| Chris Iannetta | C | LAA | 21 | 1 | 0.333 | 0.483 | 0.619 | 1.102 | 0.333 |
| Josh Harrison | 2B | PIT | 22 | 1 | 0.364 | 0.417 | 0.682 | 1.099 | 0.438 |
| James Loney | 1B | TB | 22 | 1 | 0.409 | 0.462 | 0.636 | 1.098 | 0.444 |
| Dan Johnson | 1B | TOR | 24 | 3 | 0.333 | 0.346 | 0.750 | 1.096 | 0.313 |
| Hunter Pence | RF | SF | 36 | 4 | 0.306 | 0.342 | 0.750 | 1.092 | 0.333 |
| Justin Ruggiano | LF | CHC | 24 | 2 | 0.375 | 0.423 | 0.667 | 1.090 | 0.412 |
| Jarrod Dyson | CF | KC | 25 | 1 | 0.360 | 0.529 | 0.560 | 1.089 | 0.381 |
| Skip Schumaker | LF | CIN | 30 | 1 | 0.433 | 0.486 | 0.600 | 1.086 | 0.444 |
| Salvador Perez | C | KC | 33 | 2 | 0.424 | 0.417 | 0.667 | 1.084 | 0.462 |
| Adam Lind | 1B | TOR | 27 | 1 | 0.370 | 0.414 | 0.667 | 1.081 | 0.450 |
| Elliot Johnson | 2B | CLE | 33 | 2 | 0.364 | 0.382 | 0.697 | 1.079 | 0.455 |
| Michael Choice | CF | TEX | 37 | 2 | 0.378 | 0.395 | 0.676 | 1.071 | 0.429 |
| Paul Janish | SS | COL | 31 | 1 | 0.452 | 0.485 | 0.581 | 1.066 | 0.464 |
| Tommy Medica | 1B | SD | 48 | 2 | 0.396 | 0.420 | 0.646 | 1.066 | 0.415 |
| Jonathan Schoop | 2B | BAL | 30 | 1 | 0.400 | 0.424 | 0.633 | 1.057 | 0.550 |
| Stephen Piscotty | 3B | STL | 26 | 1 | 0.346 | 0.438 | 0.615 | 1.053 | 0.348 |
| Jeremy Moore | RF | TB | 28 | 3 | 0.286 | 0.333 | 0.714 | 1.047 | 0.313 |
| Dan Uggla | 2B | ATL | 33 | 3 | 0.273 | 0.432 | 0.606 | 1.038 | 0.353 |
| Nolan Arenado | 3B | COL | 34 | 2 | 0.353 | 0.389 | 0.647 | 1.036 | 0.370 |
| Deven Marrero | SS | BOS | 21 | 1 | 0.333 | 0.462 | 0.571 | 1.033 | 0.500 |
| Juan Francisco | 1B | MIL | 24 | 2 | 0.333 | 0.407 | 0.625 | 1.032 | 0.462 |
| Don Kelly | LF | DET | 28 | 1 | 0.357 | 0.424 | 0.607 | 1.031 | 0.375 |
| Carlos Gonzalez | LF | COL | 25 | 1 | 0.360 | 0.429 | 0.600 | 1.029 | 0.400 |
| Ryan Lavarnway | C | BOS | 26 | 2 | 0.346 | 0.414 | 0.615 | 1.029 | 0.368 |
| Robbie Grossman | LF | HOU | 29 | 1 | 0.414 | 0.441 | 0.586 | 1.027 | 0.478 |
| Alex Rios | RF | TEX | 21 | 1 | 0.429 | 0.455 | 0.571 | 1.026 | 0.500 |
| Rickie Weeks | 2B | MIL | 23 | 1 | 0.348 | 0.500 | 0.522 | 1.022 | 0.412 |
| Alex Dickerson | 1B | SD | 25 | 2 | 0.280 | 0.379 | 0.640 | 1.019 | 0.313 |
| Justin Maxwell | RF | KC | 43 | 1 | 0.419 | 0.409 | 0.605 | 1.014 | 0.515 |
| Juan Perez | CF | SF | 40 | 1 | 0.325 | 0.413 | 0.600 | 1.013 | 0.375 |
| Tyler Collins | RF | DET | 29 | 2 | 0.276 | 0.323 | 0.690 | 1.013 | 0.286 |
| Zach Lutz | 3B | NYM | 26 | 3 | 0.308 | 0.321 | 0.692 | 1.013 | 0.357 |
| Jason Heyward | RF | ATL | 40 | 3 | 0.350 | 0.409 | 0.600 | 1.009 | 0.367 |
| Rob Brantly | C | MIA | 20 | 1 | 0.350 | 0.409 | 0.600 | 1.009 | 0.375 |
| Carlos Peguero | RF | KC | 23 | 1 | 0.348 | 0.483 | 0.522 | 1.005 | 0.438 |
| Michael Brantley | LF | CLE | 26 | 0.423 | 0.467 | 0.538 | 1.005 | 0.423 | |
| Yunel Escobar | SS | TB | 24 | 0.417 | 0.462 | 0.542 | 1.004 | 0.500 | |
| Reed Johnson | LF | MIA | 28 | 1 | 0.393 | 0.433 | 0.571 | 1.004 | 0.417 |
| Miguel Rojas | SS | LAD | 27 | 0.444 | 0.483 | 0.519 | 1.002 | 0.462 | |
| Daniel Nava | LF | BOS | 26 | 2 | 0.269 | 0.424 | 0.577 | 1.001 | 0.238 |
| Rene Rivera | C | SD | 21 | 0.429 | 0.429 | 0.571 | 1.000 | 0.500 | |
| Michael Taylor | RF | OAK | 43 | 3 | 0.302 | 0.388 | 0.605 | 0.993 | 0.357 |
| Jay Bruce | RF | CIN | 31 | 1 | 0.290 | 0.436 | 0.548 | 0.984 | 0.333 |
| Jose Pirela | SS | NYY | 21 | 1 | 0.381 | 0.409 | 0.571 | 0.980 | 0.389 |
| Jesus Montero | C | SEA | 29 | 2 | 0.310 | 0.355 | 0.621 | 0.976 | 0.350 |
| Yonder Alonso | 1B | SD | 35 | 2 | 0.343 | 0.343 | 0.629 | 0.972 | 0.385 |
| John Mayberry | RF | PHI | 26 | 2 | 0.308 | 0.357 | 0.615 | 0.972 | 0.286 |
| Ian Kinsler | 2B | DET | 33 | 2 | 0.303 | 0.395 | 0.576 | 0.971 | 0.320 |
| Matt Holliday | LF | STL | 23 | 0.391 | 0.444 | 0.522 | 0.966 | 0.474 | |
| Kirk Nieuwenhuis | CF | NYM | 30 | 1 | 0.300 | 0.432 | 0.533 | 0.965 | 0.444 |
| Marcus Semien | SS | CHW | 24 | 0.375 | 0.464 | 0.500 | 0.964 | 0.450 | |
| Wilson Ramos | C | WAS | 26 | 1 | 0.385 | 0.385 | 0.577 | 0.962 | 0.375 |
| Cole Gillespie | LF | SEA | 23 | 0.391 | 0.440 | 0.522 | 0.962 | 0.450 | |
| Giancarlo Stanton | RF | MIA | 36 | 3 | 0.306 | 0.350 | 0.611 | 0.961 | 0.308 |
| Oswaldo Arcia | LF | MIN | 22 | 1 | 0.318 | 0.370 | 0.591 | 0.961 | 0.500 |
| Adam Eaton | LF | CHW | 29 | 1 | 0.345 | 0.441 | 0.517 | 0.958 | 0.409 |
| Adonis Garcia | CF | NYY | 22 | 0.455 | 0.455 | 0.500 | 0.955 | 0.556 | |
| Asdrubal Cabrera | SS | CLE | 29 | 0.345 | 0.472 | 0.483 | 0.955 | 0.417 | |
| Todd Frazier | 3B | CIN | 32 | 2 | 0.313 | 0.361 | 0.594 | 0.955 | 0.364 |
| Xavier Scruggs | 1B | STL | 24 | 1 | 0.250 | 0.455 | 0.500 | 0.955 | 0.294 |
| Brock Peterson | 1B | WAS | 26 | 1 | 0.346 | 0.414 | 0.538 | 0.952 | 0.500 |
You’ll notice right away that there are some very high BABIP’s on this list. There is a theory – I’m not sure if it’s ever been definitively proven – that hitters will post an unusually high BABIP when they out class the pitcher. Intuitively, that must be true to some extent. I imagine a guy like McCutchen can hit the ball X percent harder with more line drives and deep flies against below major league quality pitching. Traditionally, we see this theory applied to MiLB stats to say “Player X had a .400 BABIP, but that’s not necessarily a bad sign since it could mean he’s ready for a promotion.”
One thing we do know about BABIP is that it will regress towards league average. Maybe not all the way, but we can expect a guy with a .500 BABIP like Bernadina to regress towards his .291 career rate. So there’s your warning about BABIP in case you forgot to apply that caveat above (I told you to apply ALL caveats). Also remember that the Cactus league is a much friendlier run scoring environment than the Grapefruit League.
Let’s pick out a few names that smell interesting. I’ll start with five here, but let’s discuss more in the comments.
Chris Heisey, OF
Since arriving in camp, Heisey has received plenty of positive press. He’s made a minor mechanical change by lowering his hands in his setup. Historically, that could mean nothing or everything. Usually nothing. The scuttlebutt is that he’s hitting the ball with more authority than past seasons. Internet writers have also speculated that he’ll have the freedom to be more patient now that Bryan Price is running the ship. So far, he has five spring home runs, which makes him the current home run leader.
At the moment, he’s the fourth outfielder on the depth chart, behind Bruce, Billy Hamilton, and Ryan Ludwick. Schumaker will also see some time in the outfield. With Ludwick and Hamilton in starting roles, there are a lot of ways to work Heisey into a semi-regular role. Ludwick’s had a mediocre spring, so Heisey could potentially jump up the depth chart with a few more good games.
Dan Uggla, 2B
Despite my bold prediction to the contrary, Uggla is not giving away his job to Thomas La Stella. He’s showcasing his usual combination of power and patience. The typical fantasy batting average is around .250, so a .210 mark from Uggla isn’t automatically ruinous. Meanwhile, he still has 30 home run upside and he’s being extremely ignored in all but the deepest formats. Even there sometimes.
Nolan Arenado, 3B
Arenado’s best skill is supposed to be his glove, but the FanGraphs crew witnessed a classic Roger Dorn “Ole.” Later, he also handled a batted short hop where I swear his head was turned away. Fantasy owners care more about his five extra base hits. I’ve seen some people get really excited about him, but I look at him as an ideal waiver streamer in standard depth leagues. I’d rather roster Kelly Johnson and his position flex.
Zach Lutz, 1B/3B
He’s shown good power this spring, with three home runs. Power development is his ticket to any real or fantasy relevance. He’s currently behind Ike Davis and Lucas Duda. If they start the season on the disabled list, then the Mets will presumably swing Daniel Murphy to first base and Eric Young to second base. Josh Satin’s also between Lutz and playing time. I could still see speculating on Lutz in a very deep NL Only league or perhaps a dynasty format. Weird things happen to the Mets.
Michael Taylor, OF
Taylor is a certified Big Guy, but the Stanford swing has been blamed for mediocre power development. He’s performed quite well in the minors – he’d be a top 25 pick if we were playing Triple-A fantasy. His translation to the majors just hasn’t worked out. This is probably his last chance with the A’s, so it’s encouraging to see three home runs in his spring line.
Honorable Mentions
It’s nice to see Heyward and Stanton hitting well without any BABIP help.
Remember when Jack Zduriencik said the M’s had no expectations for a newly fat(ter) Montero? Well he’s popped a .310/.355/.610 spring line with a reasonable .350 BABIP. And just when you thought this would be an easy decision. He’s already been optioned to Triple-A, so don’t get any crazy ideas in your head.
You can follow me on twitter @BaseballATeam
Ackley!
Moose!
Tacos!
Despite the batting line, Montero looked like crap at the plate and in the field. He did not put together good at-bats. Still too aggressive and unable to recognize/lay off certain pitches. He ran into a couple, which as we all know, happens in spring when you know what a guy is going to throw when he’s working on something rather than trying to mess with your timing. Ask Alex Liddi. AAA is a good decision for Montero until he proves otherwise.
how is a typical fantasy batting average around 250? league average last year was 253, and most teams arent carrying the Jordy Mercers of the world
poorly worded. That average fantasy hitter has an average around .250, despite that the worst BA guys aren’t usually rostered. Good owners obviously aggregate a much better team wide AVG in most cases.
I’m looking at 3 years worth of data for a 12 team league. 1 catcher, MI,CI,4OF,UTL so pretty standard (if a little deep).
The average has sat withing a point of .270 for all 3 years.
I have no clue why fangraphs thinks: 1) fantasy average is .250 and 2)fantasy BA has been declining over the last couple years.
I’m looking at a leaderboard of all hitters with over 150 PA last year. Only 119 players hit .260 or better. I’ll guess about 15% of them are guys like Gregor Blanco or worse, so let’s call it a 100 player list. A typical 12 team league rosters about 230 position players (16 active roster spots plus ~3.5 bench players). So the median player is hovering around .250. For the point I was making, median is better anyway.
Brad, you have lost me too and in a number of ways:
(1) You have not defined what you mean my a typical fantasy hitter or average fantasy hitter.
(2) Beyond your lack of a definition, I don’t think you are considering what should be the correct measure, which simply put, is this: How much pain does a hitter who bats .210 inflict on a fantasy team’s batting average?
(3) In order to answer question (2) you need to know what effect such an average would have on a team whose batting average of in the middle of the bell curve for that league. I can tell you that in a deep A.L. only league with 12 owners, 23 man active rosters and 17-man reserves, the middle of the bell curve has hovered close to .260 the past 4 years and close to .270 the six years before that. Averaging that difference, the question becomes how much does a .210 batting average for Uggla drag down a team batting average of .265. In a shallower league, the average team batting average would be higher and the effect by Uggla more dramatic.
(4) When you consider that on a typical deep fantasy team such as in my league, some players don’t get full time at-bats, a full-time player like Uggla night get 8% or 9% of the at-bats. That would results in a loss in batting average of roughly 4.5 points. If your team batting average is near the middle of the bell curve, in a roto league you are probably looking at a loss of 3 to 5 points in the BA category.
(5) As to your claim about the number of players with 150 at-bats who hit .260 or better, I believe you are looking at the leaders board incorrectly. When I filter that list for those with 300 plate appearances, I found 140 batters at .260 or above. When I lower the threshold to 150 plate appearances, as you said you did, there were 179 players who hot .260 or above, not 119, so your numbers appear wildly wrong.
(6) The sum total of batting average for fantasy players while on the bench has no effect on either league or team averages and is irrelevant to the question that you posed, what effect Uggla would have on a team’s fantasy prospects.
(7) Uggla might fit a roster well in a deeper league but only if that roster was carefully constructed in a manner that accounted for the drain he placed on batting average by having enough high average players to keep the team batting average above the bell of the curve. Once you start to slip into the pack rather than keeping a safe margin ahead of it, you risk a big loss in points. Some deep league owners may be forced to assume that risk even when they lack those safeguards but they do so to almost certain detriment.
To point #5, you are correct. I think I tripped a problem with changing the page results from 30 to 50 and then navigating to a different page via the url bar. The numbered results were reduced by 20 per page (3 pages total), which gave me 119 instead of 179. Good catch.
As to the rest, it’s just Dan Uggla. 99% of us don’t need to consider him except in an extreme emergency. In which case there are usually bigger problems than a crappy BA in play.
Collins!
How long is Francisco Cervelli’s next PED suspension? I keed, I keed.
AJ Pollock!
…one man bandwagon
Probably less likely to derail than my one man Juan Perez bandwagon…
Two man band wagon.
Am I the only one who wishes that, when you guys post charts like this, you would intersperse the headings at various intervals so we can see them without scrolling back up and losing your place?
I’d love if they could implant it so the header scrolls with you but I don’t know if it’s feasible with the current set up.
how about that Anthony Rizzo? 20th best OPS, but on a not ridiculous (for spring training) BABIP.
There’s been a lot of Rizzo breakout talk this offseason on this site. Certainly he has done nothing this spring to make it seem less likely.
Count me a believer in the breakout.
I’ll let others take that as their baby. I don’t have any special statistical or scouting insight that points to a substantial improvement. I do expect a marginal improvement, perhaps a slight step forward and K and BB rates.
it looks like he will probably trip John Dewan’s threshold, which is semi-accurate at predicting power spikes.
Jerry Sandz son
Everybody thinks the Yankees brought in Brian Roberts to replace Cano, but after reading this, I think we all he’s just a cover for their real acquisiton: Yangervis Solarte!
That .636 BABIP! (Cano)
Cano’s hitting .609, but it’s a pretty empty .609.
Kelly Johnson over N. Arenado??? I was there was some way to hold you to that and revisit it later. Surely it is a typo?
Or let’s see where they end the season and why Arenado has a ADP 7 plus rounds ahead of Johnson.
That comment was specific to the way I manage rosters. I get a lot of value out of positional flexibility.
In a standard 12 team league, I’m going to do my best to block Arenado from 3B/CI/UTIL starts, such that he might play 50 games for me. On the other hand, KJ will play more games by virtue of being eligible at more positions. Most of those games will be times where I had nobody to start at that position. On other occasions, I’ll use his flex to bump a player with a bad matchup onto the bench. So with KJ, he starts maybe 120 games compared to 50 for Arenado and the rest of my roster improves in some of those games.