The Little Engine That Could - January, 18th 2020

I noticed my lineup optimizer created lines that 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 3/01/2020.

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

Each day I have been saving the projections from RotoGrinders, Awesemo.com, Dailyfantasysolutions.com, CustomDFS and BathrobeDFS. Yesterday, I was traveling to San Francisco and had a massive layover so I had plenty of time to review previous slates and retroactively build lineups. I plan to analyze which projections/combination of projections works best for my engine. Stay tuned for a weekend post.

Last Night’s Results (Friday, January 17th)

I decreased the variability on my optimizer from 5 to 4 unique players and generated 80 lineups . Next time I will leave the unique players to 5 for a 7 game slate, because only a handful of lines finished above 300 pts (weird slate!). My highest scoring lineup finished with 310.50 pts in the NBA $400 Dime Time.

Here are my results from the qualifiers. The one on the left had 475 people and the qualifier on the right had 190 people.

DFS Engine Notes

ConfidentStrategy on reddit this morning posted “I see day in and day out people fretting over Player X vs Player Y people with 10,000-word write-ups. All that stuff matters very little over the long term of DFS. There are so many things you will overlook or inflict human biases that you are doing yourself a disservice fretting over all that “noise”.” I agree with this 100%. I have been able to create top 5% lineups because I’ve taken a step back and viewed the problem at a higher level- I no longer worry about individual match ups and value plays. However, if I can find a way to apply slate knowledge to my retrieval process(where I down select from 1000 lineups to 80 lineups), I think I can become more profitable in the long run. Pmayankees also brought up a good point “ it depends what kind of dfs player you are….a professional gambler would like (first dfs priority make money, hopefully a background in data science or similar or you’re in for a bad time), while others are here as fantasy sports players (first priority enjoy sports more, making money is a nice bonus)”. For me, its all about developing optimizers, using machine learning and building up my technical skills. Its a bonus that I’m applying it to fantasy sports and there is a potential to win money.

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 18th, 2020 at 11AM (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.
****************************************************************************************************************************************************

DraftKings:

Core: Anfernee Simons, Joe Ingles, and Alec Burks

Cash: Hassan Whiteside

GPP: Kevin Love

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

Comments

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

RotoGrinders.com 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