Blog Archives

Without a Tout: Analyzing the DFS Analysts

If you’re a data scientist, and you happen to enjoy baseball, then MLB DFS (daily fantasy sports) is the game for you.  If you like parting ways with your money, then it’s doubly enjoyable.

There is no shortage of advice and access to statistics to help you in your never ending quest for the perfect lineup.  You can absorb knowledge about stacks, chalkiness, fading, and other esoteric terminology.  Experts will try to convince you that you must build lineups differently for cash games versus GPP tournaments.  Silly me, I just thought I had to build a lineup that’s better than everyone else’s, and then beat them all.  Kind of like real baseball.  I wonder if Tito Francona fields a different lineup if he thinks he’s in a cash game or a GPP?  I kind of doubt it.

Some of the most entertaining DFS advice can be found on Rotogrinders (  In addition to statistical models, statistical probabilities, and statistical statistics, there are podcasts and–on today’s topic—videos featuring past big winners sharing their strategies for the perfect lineup.

One such video, appearing a couple of times a week, is Beer’s MLB Six-Pack.  Chris “Beermakersfan” Prince runs through tonight’s slate of ball games, choosing 5 players who, according to past performance and gut instinct, should rack up those fantasy points tonight.  Then a sixth player is highlighted, the so-called “Beast of the Night.”  This player, saved for the grand finale of the video, is the equivalent of the “best bet” of all the players in all the lineups in all the games.  Chris’s recommendations are based on sound, empirical logic (what some of us still quaintly refer to as “sabermetrics” because it makes us sound profoundly smart) using the most recent statistics about every single aspect of a plate appearance.

So how reliable is Beer’s Six-Pack when it comes to building your lineup?  Well, like everything else in DFS, reliability can be quantified.  For the non-technical reader, that means “counting.”  Let’s see how Chris does.

I conducted some extensive research (i.e. searched YouTube) for this season’s Beer videos.  I had, of course, seen most of them before, coincidentally on the same day I was building my MLB lineup.  Imagine that.  I analyzed 19 days’ worth of videos, 114 separate recommendations (19 of whom were Beasts), across 5,060 players who had at least one plate appearance on those 19 days between April 3 and June 20.

Each day was analyzed separately.  The statistic of interest was this: how many FanDuel fantasy points did the Beer recommendation players produce relative to the rest of the league?  Did Chris choose the best 6 producers that night?

My methodology was to produce an ordinal rank each of the 6 recommendations relative to all of the other players in MLB lineups that day.  Since the number of available players differed based on the number of scheduled games, weather, and other occasional weirdness, I normalized the rankings be converting them to a percentile.

So, for example, Chris recommended the Red Sox’s left fielder Andrew Benintendi on April 3, and he produced 25.7 FanDuel points. He went 1 for 4, that one hit being a home run that yielded 3 RBI.  He also struck out once.

Benintendi’s 35.7 points put him in the 89th percentile of all 210 batters that night.  Not bad! Yasmani Grandal, the Dodgers’ catcher, delivered a whopping 40.9 points, putting him in the 97th percentile.  Here’s the analysis for April 3:


All in all, a good night for Beer (aren’t they all?).  But like everything else in baseball, the true measure of greatness is the full body of work.  Here are the results of all 19 games.  The center line represents the median score for that day for all players, and the blue bars show the results of Chris’s selections that outperformed the median.  The red bars show underperformers.  The BEAST scores are on the far right.


Overall, Chris’s picks outperformed the league average 51% of the time.  The 19 Beasts of the Night did marginally better, performing above average 57% of the time.


As a group, the Beasts scored about the same number of points as the league average, while the other 5 picks scored below that mark.  But this is one of those cases where averages can be misleading.  For instance, say you’re standing in a bucket of ice water with your head sticking in a hot oven.  On average, you feel fine.  That’s a data scientist joke.

Now is the time you ask, “so what?”  What do you do with this precious information?  Here’s my completely non-scientific hypothesis:

  • Chris “Beermakersfan” Prince probably knows more than you when it comes to building DFS lineups
  • You don’t even know what wOBA stands for, let alone wRC+.
  • You have a sneaky suspicion you want to put Edwin Encarnacion in your lineup tonight, and you watch the Six-Pack show, and sure enough, he’s the Beast of the Night! You came upon that roster spot independently! And Chris agrees with you!  What an intuition!  What a perfect lineup!  You’re a genius!
  • The Indians are rained out tonight.  Thanks for playin’.

What’s in a Name? MLB All-Star Analysis Part 1

The MLB All-Star game is coming up soon, so I thought I’d toss a few random analyses your way to commemorate the occasion.  Here’s one…


So you want to be an All-Star, do ya?  Then change your name to Rodriguez or Robinson.  Here are the surnames of the top 250 All-Stars, by number of All-Star game selections, going back to the dawn of the All-Star game, in 1933 Chicago.  Unfortunately, notable baseball fan Al Capone was probably not in attendance, since he had other commitments at the time in the Big House.  But I digress.  The bigger and bolder the name, the more someone with that name appeared in an All-Star uniform.   This fine graphic represents the intersection of baseball and big data. For example, Robinson refers to the Orioles’ immortal third baseman, Brooks Robinson (18 career All-Star games), Frank Robinson, player-manager for my beloved Tribe despite those gawd-awful red uniforms (14 career selections), Eddie Robinson, who represented the White Sox and Twins in 4 contests, and of course Jackie Robinson, with 6 games as a Brooklyn Dodger. Frank Robinson was an All-Star selection for 3 of the 4 teams he played for in his career–Cincinnati, Baltimore, and LA. He never made it to the All-Star game as an Indian. Of course. All of the Robinsons on this list are in Cooperstown. Rodriguez is attached to Alex, Ivan, Ellie, Francisco, and Henry.

The word cloud was created using the R wordcloud, tm, and rColorBrewer packages.  The simple R script and data file can be found at

Like all of this and my upcoming All-Star analysis, a huge shout-out goes to the data geniuses at Baseball Reference.  More baseball statistics than are fit for human consumption.   This blog has been cross-posted to the most excellent R-bloggers site as well.