The Little Engine That Could - January, 14th 2020

I noticed my lineup optimizer created lines that would finish 1st in a large grand prize pool tournament (GPP) . I then applied machine learning algorithms to use outputs from a monte carlo simulation to find the winning lineups. Looking at the data, I realized “beaufourd” was wrong- he assumed winning lineups would fall within the top 20% of the monte carlo simulation. It turns out “middle of the pack” lines far exceed their expectations and win GPPs!!! I think this is a product of a chaotic system- NBA player performance night to night is random, the lineup combinations you face night to night are random; injury and late scratches change optimal lineups in a blink of an eye. In the past, I had to use advanced statistics to predict antenna performance- characteristic functions are the inverse of probability density functions but can be used to model chaotic systems. Applying some of these concepts to the contest simulator, I was able to fish out the highest scoring lineup.

This discovery lead to a set of a python scripts I call the DFS Engine.

My DFS Engine was used to generate a lot of lineups. These lineups were then uploaded to low stakes tournaments on DraftKings and FanDuel. The Engine’s results will be tracked from 12/28/2019 to 2/01/2020.

January 12th – January 18th, I will feed different projections systems to my lineup optimizer.

This weekend I spent some time looking at Awesemo, Daily Fantasy Solutions, Custom DFS, RotoGrinders and an independent DFS site, BathrobeDFS. I had to download each sites player list and make a master name so I could use python’s map function (similar to VLOOKUP) to match site projections to DraftKings player ID. Then I had to setup a script to scrub the projections into a format that I could feed into my optimizer. Once the optimizer was setup, l built 1000 lineups with each projections. So far Awesemo was the easiest to integrate due to names being most similar to DraftKings. I was able to retrieve Awesemo, RotoGrinders and Bathrobe DFS projections early in the day (at least 5 hours before the slate). Daily Fantasy Solutions projections were provided a couple hours before the Sunday slate and Custom DFS site was down, so no projections. Now that I have my scripts up and running. I will spend sometime this week analyzing which projections systems is best for my engine.

Last Night’s Results (Sunday January 12th)

I generated 40 lineups , put 20 lineups in the NBA $5K Quarter Jukebox Tournament, 10 lineups in $1 50-50 contest (no more than 100 people), 6 in NBA $30K And-One, 1 in the NBA $2K Daily Dollar, and 3 in qualifiers. My highest lineup of the night was in the NBA $5k Quarter Jukebox and scored 336.75 fantasy points. This line finished in the top 0.27%

Below are my tennis results. I’m going to spend sometime finding additional stats to include into my projections so they can become more accurate. I will outline this process in another post and will publish my projections for others to review and comment.

DFS Engine Notes

Yesterday was my Uncle’s birthday so I took the day off to celebrate. On the drive back to my house, I listened to the Optimal Living Daily podcast Episode: 1493 [Part-2] “Why You Lost Your Child-Like Creativity (And How to Rediscover It) by Michael Blankenship of Get your Gusto Back”. The author featured in the podcast talks about letting go of negative thoughts while working on projects. He also goes into the difference between self-reflection and self-judgement. Self-rejection is asking questions like, “why can’t I make a good song?, “why should I make a podcast, no one will listen”. Instead we should be doing more self reflecting and asking questions like “how can I make a good song?” , “what can I do to generate more listeners for my podcast”.

Now applying this to daily fantasy… Self rejection = Why can’t I take down a tourney? Why can’t I win the milly maker?… Self-reflection = “What can I do differently to improve my chances to take down a tournament?”. On Sunday I was a few lineups away from winning the Quarter Jukebox. I realized if I had increased the max threshold on predicted lineup performance by 2 pts I would have had the winning lineup. To help my chances in the future, I have increased my predicted lineup performance max threshold from 323 fantasy points to 327 FPTS

I have a few side projects going on:

  • creating a smart speaker app to (1) give updated player news and (2) allow DFS players to change lineups with their voice
    • I registered as a twitter developer and created a script to save tweets based off a hashtag. The next step is to download Amazon Lambda’s API so I can create a smart speaker application to read the tweets in real time
  • creating another optimizer but with a different solver. I will be using a variant of integer programming instead of mixed integer that uses linear programming (which I believe the entire DFS industry is using)
    • I started to dive into the Julia JuMP package and python’s PuLP package. Also I started exploring the GAMS package that has many different variants of mixed integer programming solvers such as the COIN-OR BONMIN.

If you are interested in collaborating on one of these projects let me know. Also find out more about the engine at: Sailing Wide Right

Player Exposures

This blog was updated on January 14th, 2020 at 800AM (EST). When reading this remember a lot will change from now till lock. Players highlighted are important pillars to my lineup builds. Purple shows my core plays, green shows my cash play and red shows my GPP dart. Percentages next to players name show my exposures.


Core: Ben McLemore, Clint Capela, and P.J. Tucker

Cash: Kawhi Leonard

GPP: Rudy Gobert

If you have any questions, comments or would like to hash out an idea, DM me @Numeric_DFS and we can continue the discussion.

About the Author


  • mpuntsch

    Thanks for sharing this with us. I am not as tech savvy as you and some of your explanation is beyond what I understand but the basic premise is something I have thought about and tried to do but in an archaic paper and pencil manner. When I have had a few extra minutes to formulate my lineups for the night, I have looked at the projections from a few sites and tried to identify those that overlap with higher projections and build my lineups around those players. Good luck moving forward, looking to hear more and that you have hit that gpp winning lineup.

  • 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.

  • FanDuel

    Get 1-month of RotoGrinders Premium for FREE (a ~$40value) by signing up through one of our links!

    Learn More
  • DraftKings

    Sign up for DraftKings using a RotoGrinders link & receive our DraftKings Premium content FREE for 1 month. That’s a ~$40 value! No DraftKings promo code necessary!

    Learn More
  • FantasyDraft

    FantasyDraft strives to put players first, with a mission to “provide a fun and fair experience for all.” To this end, the site has a well-built, easy-to-use interface and a the first of its kind in offering “Rake-Free” fantasy contests.

    Learn More 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. Our goal is to help all of our members make more money playing daily fantasy sports!

Bet with your head, not over it!
Gambling Problem? Call 1-800-Gambler