Imagine stumbling upon a cave of wonders that holds some of the finest riches the world has ever seen. It's basically every kid’s dream after watching Aladdin. The question then becomes, what would you choose to grab to make the most of this once-in-a-lifetime opportunity?
Enter the knapsack problem, which refers to the common problem of packing the most valuable or useful items without overloading an already packed bag. This is all optimization is — you are forced to make the best or most effective use of something, based on constraints, to maximize your outcome.
Editor's note: Now available to all PFF ELITE subscribers, the PFF NFL DFS Optimizer gives both new and die-hard DFS players an opportunity to generate optimized single lineups and multiple lineups for DFS tournaments and contests on DraftKings, FanDuel and Yahoo DFS.
DFS is a simple game: score more points than those in the same contest as you and win a weighted share of the pool. It is a form of parimutuel betting, in which all bets of a particular type are placed together in a pool (after the house takes its share), with the payoff odds calculated by splitting the pool based on the finish.
The way to win is to score more points than the other contestants following the game's rules. These rules force roster and salary constraints, so decisions are made on players who will help produce the most points.
In its most simple form, a DFS lineup optimizer takes the site rules and maximizes a fantasy-point projection to give you an optimal lineup. It packs the best players at each position into a bag without overloading the bag (or bypassing the salary or roster constraints).
This is a great first step to see some of the best value opportunities for the given contest if your projections for a player are sound.
PFF’s lineup optimizer offers numerous options to streamline efficient builds that go beyond simply maximizing our industry-leading projected points, moving you toward the ability to maximize win probability.
The available configuration options exist throughout the user interface, and they are broken down into four categories:
# of Lineups
Select the number of optimal lineups to generate, based on input parameters.
Maximum Offense Players vs. DST
Control for how many QB, RB, WR and TEs will be allowed to oppose the DST.
Min. Salary Cap Percentage
Control the low salary point to allow for the optimal lineup. This is more beneficial when it comes to building more diversified lineups for either single games or slates with fewer games.
TE allowed in FLEX
Tight ends typically struggle to put up relevant fantasy performances compared to other skill positions. This toggle bans all tight ends from the flex position.
Maximum Repeating Players
Control how many players in a new lineup can be the same as the previous lineup. When a lower number is selected, this builds a more diversified lineup with few repeating players. When a higher number, or “any,” is selected, the optimizer creates a tighter cohort of players. This helps you control for how broad or focused your core of players ends up being.
Recalculate Exposure after Each Lineup Built
If setting min./max. exposure, this option will recalculate exposure after each lineup built instead of calculating the entire base of lineups. This improves the diversity of lineups, as choosing a max. exposure of 50% will allow the player to be in the first and then fourth lineup build. This option is incompatible with locked players and will throw an error if selected with a player that is locked into 100% of lineups.
Add Variance in Projections
This is another setting that increases the diversity of lineups. It modifies the projection for each player by at least the min. percentage and at most max. percentages selected by the end-user. For example, a projection of 20 with 5% min. and 15% max. deviation would convert to somewhere between 17-19 or 21-23 for each lineup build. This is randomized to build lineups using a floor or ceiling projection instead of the standard median projection.
The team stacks allow you to build multiple customized stacks that can be used in a certain percentage of your lineups. This is a great feature to use if you are trying to build various stacks based on certain teams but want a diversified set of players from each team. This can also force a stack from any team into every one of your lineups.
Select the total number of players to include in the selected stack.
Select the max. exposure for the custom stack you are building — 100% max. exposure will force the stack rule into all of your lineups. This is a great way to make diversified, unique stacks in one optimization run.
Choose specific teams to force a stack on, or choose any to run the optimizer wide open with a general stack forced in.
Choose specific positions to force into the stack. This is a great way to build a game-level stack with a run-it-back option at one or more positions.
Player Pool Options
Adjust Fantasy Points Projected
The adjusted column in the player pool allows you to change the player's median projection to any value you would like. This will be taken into account in the optimization, with the variance in projections built off this newly adjusted fantasy points projection. This is a great way to squeeze players you like more than our projections do into a majority of your lineups.
The “Ban/Lock” toggle allows you to either completely exclude or fully lock a player into every one of the lineup builds. This is a great way to force or completely exclude a player.
Set Min. or Max. Exposure
Min. or max. exposure allows you to force constraints on how little or how much a player is included in your lineups. Instead of using Ban/Lock, you can set a percentage of total lineups that will still allow you to have the player in a certain percentage of lineups without being included in every lineup build.
Our default options are a great place to get an initial idea of our projection's favorite players relative to salary. The stack option forces a two-player stack from any team, and that stack includes a quarterback and either a wide receiver or tight end.
This provides some initial correlation into every generated lineup. We also have our maximum repeating players default to two, which forces each lineup to be more unique because of the requirement to be dissimilar to the previous lineup built.
Simply clicking optimize after selecting the appropriate contest will build lineups based on our default settings — a great base from which to begin understanding value on the specific slate.
Doing the bare minimum typically won’t lead to success in guaranteed prize pool (GPP) contests. There is also an element of game theory that exists, where you are much more likely to run into duplicated lineups if you use the optimizer's default settings.
One of the best ways to avoid this is to build unique stacks that concentrate your ownership around a small subset of your favorite players. My preferred approach is to use the “team stacks” option, setting “players” to 2 or 3 and max. exposure to 100. We can then use the “team” and “position” dropdowns to identify the best quarterback and pass-catching stack to base our lineups around.
The “team stacks” option can be used multiple times, so we can also build a game stack using this approach by using the “players” (1 or 2) dropdown along with the appropriate team that is participating in the same game as your initial stack.
This ensures that we will get one or two pass-catchers from the opposing team in every one of our lineups, without necessarily locking in one specific player into all of our lineups. This creates diversification, which allows us to select maximum repeating players to any, since we are more focused on a core subset of players we have built into each lineup.
One of the best features is to also “Add Variance” to “Projections,” which provides a floor and ceiling projection for each player in the pool. This will provide us with unique game stacks based on players from our identified game, along with a variety of players who are plugged into lineups outside of the initial game stack.
The game stack can also be achieved by locking in a set of players that we like based on their shootout potential. This provides more concentrated builds, so setting exposure limits and adding variance to projections will help to provide more diversified lineups if this route is chosen.
Showdown is fairly simple for newer players, but the selection of the correct captain is vital to any sort of lasting success. One of the best ways to approach this selection process is to read the quality work done for each island game by PFF's Kevin Cole. In his showdown series, he highlights the best plays that provide the most leverage based on historical matchups. The optimizer can help identify the best value based on salary and projection.
My preferred method for Showdown optimization is identifying my favorite captain play and locking him automatically into that position. We can then set minimum and maximum exposures for some of the best flex options to build our showdown lineup around. Setting the min salary cap percentage down to the bottom also allows the optimizer to build lineups that will be more unique, as it doesn’t make maximum salary allocation as much of a priority. This is a great way to create more unique lineups, so you don’t end up splitting the top prize with 500 of your closest friends.
Showdown is also an excellent opportunity to add variance to projections that emphasize floor and ceiling outcomes. These floor and ceiling ranges can be adjusted by the user to account for as much or as little variance as you anticipate in the matchup.