MLB Data Detective - Takeaways from the 2019 season

As a professional software developer with 15+ years of experience working with data in the finance industry, my passion is using data analysis to gain a competitive advantage. I developed a software application that allows me to do an in-depth analysis of statistics generated from play-by-play logs of every MLB game in recent history, and I will use this blog to share my DFS-related findings as I explore this data.

Hi everyone! After a long hiatus from blogging, I’m feeling refreshed and excited to get back to the daily grind of the MLB season, whenever that may be. I made some improvements to my app during the offseason and am ready for the challenge to see if I can improve upon last season’s 53% success (cash) rate for stack recommendations, which was a big improvement from my 43% GPP cash rate in 2018.

While we’re all trying to stay healthy & safe during the pandemic and waiting for baseball to start up again, I thought it would be useful to analyze stats for all 2430 games from last season to refresh my memory on which players stood out and to see if I could uncover any useful trends to help formulate a strategy heading into the new DFS & season-long fantasy season. Here’s what I found…keep in mind that I calculated fantasy points (FPTS) using the FanDuel scoring system but this should be relevant to DraftKings players as well.

Who were the top-scoring players in 2019?

Hitters with most FPTS per game started (min 25 games started):

Player FPTS / game started # of games started
Christian Yelich (OF, MIL) 16.44 127
Mike Trout (OF, LAA) 15.56 133
Mitch Garver (C, MIN) 15.31 76
Nelson Cruz (DH, MIN) 14.75 114
Cody Bellinger (OF, LAD) 14.71 151
George Springer (OF, HOU) 14.58 119
Yordan Alvarez (OF, HOU) 14.47 83
Anthony Rendon (3B, LAA) 14.38 146
Ronald Acuna (OF, ATL) 14.28 154
Fernando Tatis (SS, SD) 14.23 82

Most of these players are pretty obvious, but the name that caught me by surprise is Mitch Garver. Heading into last season most of us would have expected to see J.T. Realmuto as the top fantasy catcher, but Garver took that honor instead and finished behind only Yelich and Trout in per-game DFS production. I’m a bit wary of last season being a fluke because he only had 7 total home runs in his first two major-league seasons (348 at bats) but that number jumped to an astounding 31 in 311 at bats last season. It also doesn’t help that his sample size is relatively small compared to others on this list. He will be a boom-or-bust pick in season-long leagues and probably someone that I will shy away from in DFS as well until he proves that last season wasn’t a fluke.

Hitters with most FPTS per plate appearance (min 100 plate appearances):

Player FPTS / plate appearance # of plate appearances
Christian Yelich (OF, MIL) 3.61 579
Mike Trout (OF, LAA) 3.45 600
Cody Bellinger (OF, LAD) 3.37 661
Yordan Alvarez (OF, HOU) 3.34 370
Mitch Garver (C, MIN) 3.29 360
Anthony Rendon (3B, LAA) 3.25 646
Nelson Cruz (DH, MIN) 3.25 522
Joey Gallo (OF, TEX) 3.24 297
Aristides Aquino (OF, CIN) 3.16 226
Alex Bregman (3B, HOU) 3.16 691

There’s Garver sitting high on this list as well. The other name that jumps out is Aristides Aquino, who took the fantasy world by storm when he made his major-league debut over the last two months of the season (not counting his single plate appearance in 2018) with a frenzy of home runs. If you project his production from those 226 plate appearances over a full season, you’re looking at someone who has a chance to go toe-to-toe with the best in the league. I’ll believe it when I see it, but he’s another intriguing boom-or-bust prospect heading into the new season.

Pitchers with most FPTS per game started (min 10 games started):

Player FPTS / game started # of games started
Gerrit Cole (P, NYY) 50.18 33
Justin Verlander (P, HOU) 47.09 34
Max Scherzer (P, WAS) 44.78 27
Jacob deGrom (P, NYM) 42.81 32
Mike Clevinger (P, CLE) 42.33 21
Shane Bieber (P, CLE) 41.21 33
Stephen Strasburg (P, WAS) 40.76 33
Lucas Giolito (P, CWS) 40.07 29
Clayton Kershaw (P, LAD) 39.18 28
Lance Lynn (P, TEX) 38.91 33

This is mostly a who’s who list of the league’s top aces, but a couple names jumped out at me. I was surprised to see Lance Lynn, who narrowly beat out Chris Sale, appear on this list. Yup, that’s not a typo…Lynn had more FPTS per game than Sale! He quietly enjoyed a career year in his 7th full season in the majors, eclipsing 200 strikeouts for the first time (with 246) and posting his lowest WHIP (1.22) since his low-usage rookie season. Despite all that, though, I find it difficult to buy into this being a sustainable breakout so late in his career. He credits an improved diet for his improvement last season, but I’m skeptical to say the least. I might occasionally take him for a spin in DFS if the price is right but I plan to let someone else overpay for him in my season-long league.

Unlike Lynn, Lucas Giolito is a younger player with a great pedigree that supports the notion that 2019 was a breakout season for him. His K/9 nearly doubled compared to his first 3 seasons and his WHIP plummeted to an ace-caliber 1.06 last season. I’m all-in on him continuing this trend and solidifying his place as one of the leagues up-and-coming aces this season. To a lesser extent, Mike Clevinger also falls into this category. He’s young (at least in terms of major-league experience) and has been steadily improving in a number of key metrics since entering the league. He might be a good value in both DFS and season-long leagues as his recent performance exceeds his reputation.

Which players improved the most throughout the season?

Hitters with biggest increase in FPTS per plate appearance after All-Star break (min 100 plate appearances):

Player FPTS / PA increase FPTS / PA before All-Star break (# of PA) FPTS / PA after All-Star break (# of PA)
Jose Ramirez (3B, CLE) 1.64 2.2 (365) 3.9 (180)
Starlin Castro (2B, WAS) 1.18 1.6 (372) 2.8 (306)
Austin Romine (C, DET) 1.04 1.7 (111) 2.8 (129)
Robinson Cano (2B, NYM) 1 1.7 (258) 2.7 (165)
Teoscar Hernandez (OF, TOR) 0.97 2.1 (236) 3 (228)
Yan Gomes (C, WAS) 0.97 1.7 (200) 2.7 (160)
Mike Tauchman (OF, NYY) 0.97 2.3 (130) 3.3 (167)
Garrett Hampson (2B, COL) 0.89 1.7 (140) 2.6 (188)
Ramon Laureano (OF, OAK) 0.86 2.6 (353) 3.5 (128)
Jose Altuve (2B, HOU) 0.85 2.3 (238) 3.2 (310)

We have to take this metric with a grain of salt because it doesn’t differentiate between good and bad players…it looks purely for improvement throughout the season. For instance, I’m not getting too excited about stodgy veterans Austin Romine and Yan Gomes elevating their games from abysmal to average as the season wore on. However, there are some interesting takeaways from this list, such as:

  • Jose Ramirez, like the entire Cleveland offense, was stuck in the mud early in the season. He came roaring back to life over the 2nd half of the season, however, and was the highest scoring hitter (see below) after the All-Star Break. His OPS nearly doubled from .652 to 1.105 and he averaged a HR in every 10 at bats after the break. Given his track record, I see no reason why he can’t carry this momentum into the new season.
  • If Mike Tauchman makes the Yankees’ opening day roster (which apparently is not a lock), he might be a nice value in both DFS and season-long leagues. He might be 29, but his 2019 season with the Yankees was essentially is rookie year considering how little the Rockies deployed him in 2017-2018. He improved as a hitter over the course of the season and batted .315 with a .977 OPS after the All-Star break. If given the opportunity to play regularly in that offense, I like his chances to continue hitting well.
  • Ramon Laureano is a young hitter who found his power stroke after the All-Star break (averaging a HR in ever 13 at bats) while still managing to bat a scorching .358 avg with a 1.090 OPS. He’s an ascending player with a well-rounded game. Provided his price tag remains reasonable at it was toward the end of last season, I will be loading up on him in my lineups.

Pitchers with biggest increase in FPTS per game started after All-Star break (min 10 games started):

Player FPTS / game increase FPTS / game before All-Star break (# starts) FPTS / game after All-Star break (# starts)
Jack Flaherty (P, STL) 20.18 28.6 (18) 48.7 (15)
Yu Darvish (P, CHC) 17.09 27.2 (18) 44.3 (13)
Gerrit Cole (P, NYY) 13.08 44.6 (19) 57.7 (14)
Mike Foltynewicz (P, ATL) 12.99 20.9 (11) 33.9 (10)
Sonny Gray (P, CIN) 9.95 31.1 (17) 41.1 (14)
Jacob deGrom (P, NYM) 8.97 38.9 (18) 47.9 (14)
Justin Verlander (P, HOU) 8.55 43.3 (19) 51.9 (15)
Eduardo Rodriguez (P, BOS) 8.53 30.3 (18) 38.8 (16)
Reynaldo Lopez (P, CWS) 7.76 22.1 (18) 29.9 (15)
Steven Matz (P, NYM) 6.29 25 (16) 31.3 (14)

Sitting atop this list, Jack Flaherty is exactly the type of player I look for here. He’s a young player with a great pedigree who struggled early last season but was absolutely dominant (0.71 WHIP and 0.91 ERA with 11.3 K/9) over the 2nd half of the season. He’ll be a hot commodity in season-long drafts, but I plan to target him for his upside provided I can get him at a bit of a discount compared to more established aces.

Yu Darvish had a rough start to the season as he returned from injury but eventually found his groove, with a 0.81 WHIP and 13.1 K/9 after the All-Star break. Considering his track record over his prior 5 seasons (not counting his injury-shortened 2018), I’m comfortable believing that he will pick up about where he left off this season even if a bit of regression is due. I expect him to be a solid value in both season-long leagues and DFS.

Who were the top players over the 2nd half of 2019?

Hitters with most FPTS per plate appearance after All-Star break (min 100 plate appearances):

Player FPTS / plate appearance # of plate appearances
Jose Ramirez (3B, CLE) 3.87 180
Nelson Cruz (DH, MIN) 3.68 253
Alex Bregman (3B, HOU) 3.52 297
Ramon Laureano (OF, OAK) 3.45 128
Mike Trout (OF, LAA) 3.43 209
Edwin Encarnacion (1B, CWS) 3.42 125
Ronald Acuna (OF, ATL) 3.42 303
Jorge Soler (OF, KC) 3.37 307
Mitch Garver (C, MIN) 3.32 184
Christian Yelich (OF, MIL) 3.31 214

As I alluded to earlier, Jose Ramirez was the top fantasy hitter after the All-Star break although I didn’t really notice along the way because I was too focused on Nelson Cruz crushing home runs night after night. It will be interesting to see if Ramirez can carry that momentum into the new season and avoid the ice cold start that plagued him last year.

Wow, I already illustrated Ramon Laureano improvement over the course of last season but had no idea that he was more productive than Trout, Acuna, and Yelich after the All-Star Break. If he can come anywhere close to that level of production over a full season he will be an incredible value in season-long leagues. And there’s Mitch Garver not too far behind. He also out-produced Yelich over the 2nd half of the season.

Pitchers with most FPTS per game started after All-Star break (min 10 games started):

Player FPTS / game started # of games started
Gerrit Cole (P, NYY) 57.71 14
Justin Verlander (P, HOU) 51.87 15
Jack Flaherty (P, STL) 48.73 15
Jacob deGrom (P, NYM) 47.86 14
Mike Clevinger (P, CLE) 44.69 16
Yu Darvish (P, CHC) 44.31 13
Shane Bieber (P, CLE) 42.8 15
Lucas Giolito (P, CWS) 42.67 12
Clayton Kershaw (P, LAD) 41.69 13
Stephen Strasburg (P, WAS) 41.27 15

To put in perspective just how good Jack Flaherty was after the All-Star break, he managed to out-produce deGrom over the 2nd half of the season. That’s surprising to me given how little fanfare he received at the time.

I already talked about Giolito and Clevinger, but Shane Bieber is another young pitcher who seems destined for stardom after a strong and consistent sophomore campaign. I’ll add him to the short list of aspiring aces who might provide good value in both DFS and season-long leagues.

Which of 2019’s top players were the most consistently good?

In this section, I’ll use my own “net upside deviation” statistic to identify the players who were the most consistently good last season —- i.e., players who provide maximum upside potential while at the same time limiting downside risk.

Net Upside Deviation = Upside Deviation – Downside Deviation

In case you missed it or need a refresher, I explained why net upside deviation is a better indicator of player consistency (at least the type of consistency that we care about in DFS) than standard deviation in my earlier Not All Variance Is Created Equal blog entry.

Hitters with highest net upside deviation in fantasy points per game started (min 25 games started):

Player Net upside deviation (FPTS / game) Downside deviation Upside deviation Std deviation Avg FPTS / game # of games started
Christian Yelich (OF, MIL) 11.41 3.94 15.36 14.48 16.4 127
Nelson Cruz (DH, MIN) 10.06 4.75 14.8 14.79 14.7 114
Yordan Alvarez (OF, HOU) 9.65 4.32 13.97 13.92 14.5 83
Mitch Garver (C, MIN) 9.2 4.68 13.89 13.65 15.3 76
Mike Trout (OF, LAA) 8.96 4.11 13.07 12.51 15.6 133
George Springer (OF, HOU) 8.64 4.32 12.96 12.86 14.6 119
Cody Bellinger (OF, LAD) 7.87 3.96 11.83 11.54 14.7 151
Josh Bell (1B, PIT) 7.72 4.93 12.65 13.25 12.9 140
Anthony Rendon (3B, LAA) 7.36 4.41 11.78 11.78 14.4 146
Mookie Betts (OF, LAD) 7.3 3.97 11.27 11.3 13.9 148
Trevor Story (SS, COL) 7.17 4.66 11.83 12.19 13.6 144
Ian Happ (OF, CHC) 7.04 5.41 12.45 13.18 13.2 28
Ronald Acuna (OF, ATL) 7.02 4.32 11.34 11.35 14.3 154
Fernando Tatis (SS, SD) 6.98 4.47 11.46 11.54 14.2 82
Miguel Sano (3B, MIN) 6.92 5.11 12.03 12.64 13.3 99
Aristides Aquino (OF, CIN) 6.91 5.04 11.95 12.52 13.3 53
Max Kepler (OF, MIN) 6.85 4.84 11.7 12.35 12.8 127
Ketel Marte (OF, ARI) 6.84 4.3 11.14 11.45 13.3 139
Alex Bregman (3B, HOU) 6.79 4.18 10.97 11.03 14 156
J.D. Martinez (OF, BOS) 6.76 4.93 11.68 12.32 13 144

This metric really illustrates what made Christian Yelich such a dominant fantasy hitter last season. He frequently gave us big games (i.e. high upside deviation) while somehow also managing to limit duds (low downside deviation). No other hitter came close to him in terms of consistently strong performances, and he makes a strong case to be the first player off the board in season-long leagues.

The only players on this list who really surprised me are Garver (whom I already spoke about at length) and Ian Happ. Although it’s based on a very small sample size, Happ is mildly intriguing because he’s a young player who hits with power (he averaged a HR every 12.7 at bats last season) and he is expected to re-claim a starting role this season. For someone who was often available at near-minimum prices in DFS last season, he might make a good high-upside punt play to fill lineups this season.

Pitchers with highest net upside deviation in fantasy points per game started (min 10 games started):

Player Net upside deviation (FPTS / game) Downside deviation Upside deviation Std deviation Avg FPTS / game # of games started
Gerrit Cole (P, NYY) 25.4 3.03 28.43 14.69 50.2 33
Justin Verlander (P, HOU) 22.92 2.97 25.89 14.82 47.1 34
Max Scherzer (P, WAS) 22.55 1.51 24.06 14.68 44.8 27
Jacob deGrom (P, NYM) 16.91 5.79 22.7 15.95 42.8 32
Lucas Giolito (P, CWS) 16.68 4.76 21.44 16.56 40.1 29
Stephen Strasburg (P, WAS) 16.34 5.56 21.91 16.81 40.8 33
Shane Bieber (P, CLE) 16.11 6.22 22.33 17.18 41.2 33
Chris Sale (P, BOS) 15.18 8.81 23.99 21.96 38.7 25
Walker Buehler (P, LAD) 14.88 8.5 23.38 21.48 38.2 30
Frankie Montas (P, OAK) 14.86 2.85 17.7 12.57 38.4 16
Clayton Kershaw (P, LAD) 14.53 3.09 17.62 11.71 39.2 28
Mike Clevinger (P, CLE) 14.5 8.71 23.21 18.34 42.3 21
Dinelson Lamet (P, SD) 14.03 2.51 16.54 14.78 33.5 14
Tyler Glasnow (P, TB) 13.57 3.12 16.69 13.59 35.8 12
Lance Lynn (P, TEX) 13.29 6.41 19.7 15.92 38.9 33
Patrick Corbin (P, WAS) 13.01 6.72 19.73 16.16 38.8 33
Charlie Morton (P, TB) 12.59 5.78 18.37 14.39 38.5 33
Mike Minor (P, TEX) 11.59 6.55 18.15 16.81 35.1 32
Jack Flaherty (P, STL) 11.24 7.39 18.63 16 37.7 33
Luis Castillo (P, CIN) 11.23 6.92 18.15 15.37 37.5 32

A couple of names on this list took me by surprise. After three mediocre seasons, Frankie Montas turned in an uncharacteristically strong campaign in 2019 with a 2.63 ERA, 1.11 WHIP, and 9.7 K/9. Considering that his season ended with a PED suspension (which might very well explain the sudden improvement) and his larger body of work, I’m extremely skeptical about whether his improvement is sustainable. I plan to let someone else take a chance on him in my season-long league and will proceed with caution in DFS. I already discussed how I’m bearish on Lynn, who I plan to avoid as well.

Dinelson Lamet and Tyler Glasnow are much more interesting to me. They’re both young pitchers who carry some risk but have a decent chance of continuing their success from last season. Lamet has been consistently strong in his first two seasons (1.24 WHIP & 11 K/9 in 2018 and 1.26 WHIP & 12.9 K/9 in 2019), while Glasnow had a rocky start to his career but has been steadily improving and was light-out last season (1.78 ERA, 0.89 WHIP, 11.4 K/9). They both have breakout potential and should offer solid value in both DFS and season-long leagues.

Anyway, that’s all for now. I hope you found some of these stats interesting and/or useful. I for one can’t wait for the season to start, and I’ll be back with my usual daily blog articles. Good luck this season, everyone!

About the Author


  • X Unread Thread
  • X Thread with New Replies*
  • *Jumps to your first unread reply

New to DFS?

Be sure to click through our links and use our exclusive promo codes to receive the industry's best sign-up bonuses, including free access to our premium content. is the home of the daily fantasy sports community. Our content, rankings, member blogs, promotions and forum discussion all cater to the players that like to create a new fantasy team every day of the week.

If you or someone you know has a gambling problem, crisis counseling and referral services can be accessed by calling 1-800-GAMBLER (1-800-426-2537) (IL). Gambling problem? Call 1-800-GAMBLER (NJ/WV/PA/MI), 1-800-9-WITH-IT (IN), 1-800-522-4700 (CO), 1-800-BETS OFF (IA), 1-888-532-3500 (VA) or call/text TN REDLINE 1-800-889-9789 (TN).