The Little Engine That Could - February 13th 2020

Hey everyone, my name is Kahlil aka @Numeric_DFS and I’m here to review the results of my engine and talk about today’s plays. A little about me, during the day I’m an engineer but at night I’m a full time DFS player. My goal is to build optimization tools with an emphasis on sports and daily fantasy. Long term, I hope to adapt these tools to other fields like economics, finance, and social sciences. I’ve always been interested in the intersection of math, economics and sports. And what is DFS? well it’s reading about sports, crunching numbers and using game theory to make lineups.

This is how I got my start:
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.

Last Night’s Results

I generated 120 lineups and entered 70 in the NBA $20K mini-Max, 15 in the NBA $20K mini-Max, 5 in the NBA $400K Mini Heartbreaker, 10 in the NBA $100K Four Point Play, and 20 in the NBA $50K and One. My highest scoring lineup was 359.25 pts and my retrieval algorithm successfully grabbed the second highest scoring lineup generated by the optimizer. 17 out of 70 cashed in the NBA $20 mini-Max, 2 out of 15 lineups cashed in the NBA $20K mini-Max, 2 out of 5 lineups cashed in the NBA $400K MIni Heartbreaker, 6 out of 10 lineups cashed in the NBA $100K Four Point Play, and 7 out of 20 lineups cashed in the NBA $50K And-One. My highest lineup of the night finished in the top 0.18% in the $20K mini-Max. Here is the lineup and the highest scoring lineups generated by my optimizer

Here are the top lineups my optimizer generated.

DFS Engine Notes

Thank you all for taking the time to read my blog and the feedback. I have been getting a lot of questions on how to use my player exposures to build lineups. There are 2 ways you can go about it. One way is to use a lineup optimizer and set each player’s max exposure to my current exposures. Then exclude players not mentioned on the exposure list and run a crunch for 20- 300 lineups. The second way is to lock in the 3 core plays, then pick 1-2 gpp darts, and then jam in as many cash plays as possible. This process is oriented for people who like to hand build lineups. Let me know if you have any questions I’ll respond as quickly as possible

Also as a side note, Brett and I were talking about our lineup building process and he mentioned about giving players grades for their projected points and grades for their perceived value. This is an interesting concept, especially if you implement a 4.0 GPA scale similar to most high schools and colleges. I could use this information to calculate the overall grade of each lineup and compare them to their actual performance. This could provide insight on my successful lineups and provide another input for my machine learning algorithm . If you use a grading metric to evaluate players leave a comment or shoot me a direct message. I would love to learn more on how you use them and implement them in your lineup building process.

Here are the projects I’m working 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.

*using a mechanical gaming keyboard to hardcode keyboard clicks. This can be used to reduce the clicking I do on RotoGrinders to download projections into a single button.

  • researching Razer gaming keyboards at the moment

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 February 13th, 2020 at 12:30PM (EST). I will post my exposures once projections get updated. 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: Jaylen Brown, Danilo Gallinari, and Gordon Hayward

Cash: Dennis Schroder

GPP: J.J. Redick

Summary:

If you have any questions, comments or would like to hash out an idea, ask in the comments section 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.

  • 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

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