Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.

Daily Fantasy Sports lineup optimzer for all popular daily fantasy sports sites

License

Notifications You must be signed in to change notification settings

pro-football-focus/pythondfs-lineup-optimizer

 
 

Repository files navigation

PYDFS-LINEUP-OPTIMIZER

pydfs-lineup-optimizer is a tool for creating optimal lineups for daily fantasy sport.

Installation

To install pydfs-lineup-optimizer, simply run:

$ pip install pydfs-lineup-optimizer

Example

Here is an example for evaluating optimal lineup for Yahoo fantasy NBA. It loads players list from "yahoo-NBA.csv" and select 10 best lineups.

from pydfs_lineup_optimizer import Site, Sport, get_optimizer


optimizer = get_optimizer(Site.DRAFTKINGS, Sport.FOOTBALL)
optimizer.load_players_from_csv("path_to_csv")
for lineup in optimizer.optimize(10):
    print(lineup)

optimizer features before model is ran
add_player_to_lineup players to include in all lineups
remove_player_from_lineup players to remove in all lineups
remove_player remove player from the optimization process
restore_player restore player to the optimization process
max_exposure set at player level or can set in optimize call for all players, Player max exposure has higher priority than max_exposure
min_exposure set at player level or can set in optimize call for all players
randomness can be set at the pool or player level through
set_deviation
min_deviation
max_deviation

optimizer.add_stack(TeamStack(3))  # stack 3 players
optimizer.add_stack(TeamStack(3, for_teams=['NE', 'BAL', 'KC']))  # stack 3 players from any of specified teams
optimizer.add_stack(TeamStack(3, for_positions=['QB', 'WR', 'TE']))  # stack 3 players with any of specified positions
optimizer.add_stack(TeamStack(3, spacing=2))  # stack 3 players close to each other in range of 2 spots.
optimizer.add_stack(TeamStack(3, max_exposure=0.5))  # stack 3 players from same team with 0.5 exposure for all team stacks
optimizer.add_stack(TeamStack(3, max_exposure=0.5, max_exposure_per_team={'MIA': 0.6}))  # stack 3 players from same team with 0.5 exposure for all team stacks and 0.6 exposure for MIA
optimizer.add_stack(PositionsStack(['QB', 'WR']))  # stack QB and WR from same team
optimizer.add_stack(PositionsStack(['QB', ('WR', 'TE')]))  # stack QB and WR or TE from same team
optimizer.add_stack(PositionsStack(['QB', 'WR'], for_teams=['NO', 'MIA', 'KC']))  # stack QB and WR for one of provided teams
optimizer.add_stack(PositionsStack(['QB', 'WR'], max_exposure=0.5))  # stack QB and WR with 0.5 exposure for all team stacks
optimizer.add_stack(PositionsStack(['QB', 'WR'], max_exposure=0.5, max_exposure_per_team={'MIA': 0.6}))  # stack QB and WR  with 0.5 exposure for all team stacks and 0.6 exposure for MIA
rodgers_adams_group = PlayersGroup([optimizer.get_player_by_name(name) for name in ('Aaron Rodgers', 'Davante Adams')], max_exposure=0.5)
brees_thomas_group = PlayersGroup([optimizer.get_player_by_name(name) for name in ('Drew Brees', 'Michael Thomas')], max_exposure=0.5)
optimizer.add_stack(Stack([rodgers_adams_group, brees_thomas_group]))

features during model optimization
n total number of lineups

About

Daily Fantasy Sports lineup optimzer for all popular daily fantasy sports sites

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%