Daily Fantasy League (DFS) Lineup Optimizer
Looking to crush your daily or weekly fantasy football (DFS) league? Our DFS Lineup Optimizer is here to help! Through our webapp, this tool delivers unparalleled accuracy by pulling data from multiple projection sources and gives you full control to apply any league settings. The tool will pick the players who maximize projected points for the user’s scoring settings, while balancing consistency and minimizing risk. Let’s break down how this game-changing tool works and how you can use it to build the ultimate lineup. To use the DFS Optimizer App, you will need to subscribe to FFA Insider (for more info, see here).
How it Works
- A script is used to pull player projections and DFS salaries from various sources.
- Based on the user’s scoring inputs, projections are calculated with default weights on sources. The weighting of each source can be changed, along with which are included and what type of mean is calculated.
- We calculate a player’s uncertainty level using two values: the range of projections and the standard deviation, weighted equally (50/50). The combined result is adjusted to fit a scale from 1 to 99. On this scale, a higher number means the player is less predictable (more uncertain), while a lower number means their performance is more consistent and reliable.
Range of projections: This is the difference between the highest and lowest projections for the player, showing how much the predictions vary.
Standard deviation: This measures how spread out the projections are, giving another view of variability. - Based on the user’s set position requirements, cap available, and maximum risk, the Rglpk package used then finds your optimal lineup. It will maximize the lineup’s projected points while meeting all the constraints set by the user. For a similar execution using Excel’s Solver function, see here.
How to Setup The Optimizer
Sidebar Controls
- Season: Select the NFL season for projections
- Week: Select the specific week for projections

Main Settings
Roster Configuration
- Number of Starters: Configure the size of your starting lineup by position
- Set the required number of players for each position (QB, RB, WR, etc.)

Scoring Settings
- Configure point values for each statistical category, default half PPR

Data Aggregation Settings
- Average Type: Choose between three projection calculation methods:
- Weighted Average (Default): Uses analyst weights based on historical accuracy
- Mean: Equal weights for all analysts
- Analysts Selection
- Choose which analysts to include in projections
- Set custom weights for each analyst when using weighted average
- FantasyPros and FantasyFootballNerd, by default, are excluded from the weighting to avoid double counting of sources. The user is able to weight them in the data aggregation settings if they would like to.

Auction/DFS Settings
- Auction Cap: Total salary available for your lineup
- DFS Salary Source: Select your DFS platform for accurate salary data
- Optimizer Objective: Choose optimization target:
- Points: Maximize expected points
- Ceiling: Maximize upside potential
- Floor: Maximize safety/consistency
- Max Uncertainty: Set threshold for player projection risk
- Custom Cost: Upload custom salary data via CSV file

How to Use the Optimizer
- The optimizer automatically displays the default optimal lineup based on your current settings
- This lineup maximizes based on your selection for Optimizer Objective (default = points) while staying within salary constraints
Locking Players in Your Lineup
- For players already in the optimal lineup:
- Find the player you want to lock
- Click the lock icon next to their name
- Enter the salary you paid/will pay for the player
- Click Submit to confirm
- For players not in the current optimal lineup:
- Use the Projection Details table to find the player
- You can search by name, team, or position
- Click the lock icon next to their name
- Enter the salary you paid/will pay
- Click Submit to confirm
Removing Players
- To unlock a previously locked player: Click the blue unlock icon
- To exclude a player from consideration: Click the red X in the Exclude column
Real-Time Optimization
- The optimizer automatically recalculates the optimal lineup after each change
- This includes:
- Locking players
- Unlocking players
- Excluding players
- Changing any settings
DFS Optimizer Definitions
- Salary: Player’s draft/auction cost
- Floor: 10th percentile projection (downside scenario)
- Points: Average projected points across selected analysts
- Ceiling: 90th percentile projection (upside scenario)
- SD: Standard deviation of projections
- Uncertainty: Variability and risk associated with player projections (1 = little uncertainty, 99 = large degree of uncertainty). Learn more about uncertainty.
- Tier: Position-based performance tier
- PPD: Points per Dollar (value metric)
Projection Graph
- Scatter plot showing salary vs. projected points
- Trend line slope interpretation: Points increase per $1,000 salary
- Example: Slope of 2.27 means $1,000 salary increase typically yields 2.27 additional projected points
- Use the dropdown filter to change the position shown in the graph