Last week, I wrote about where we are heading with ASL's Next Generation DFS Optimizer. We have some ambitious plans ahead, including more advanced probability mathematics, cross-correlation, strategy-based lineup building and portfolio optimization.
But before adding all of that, we are continuing something we have been doing aggressively for the last year: making today's DFS Optimizer stronger, more stable and easier to use.
ASL is a continuous-improvement company. We track software exceptions, investigate unusual behavior and maintain a backlog of issues we want to improve — including many that most customers will probably never encounter.
That work is paying off. Over the past year, our tracked rate of user-interface-related exceptions has fallen by more than 90%.
Knowing About a Problem Is More Than Half the Battle
One of the biggest advantages we have today is visibility.
When something unusual happens inside the optimizer, we increasingly have the information needed to understand where it happened and why. We have also built tools that allow us to capture and reproduce some of the more difficult edge cases.
That is important because intermittent problems are often the hardest ones to solve. If something happens once under an unusual combination of slate, settings and player selections, reproducing the exact conditions can be much harder than fixing the problem once it is understood.
Our first priority is always an issue reported by a customer. If something is affecting someone's ability to use the optimizer, we want to know about it and address it.
After that come the issues we know about even when customers aren't reporting them. Many are rare edge cases, cosmetic problems or situations that require an unusual sequence of actions. We still want to fix them.
That is how software becomes battle-hardened.
What Are We Working On?
The highest priority remains anything that can affect lineup construction.
We are aware of a few edge cases involving single-game and showdown contests, player locking, stacking and exposure settings. For example, certain combinations of locked players on a DraftKings single-game slate can incorrectly result in the optimizer determining that no valid lineup exists. Auto-Team Stack can also occasionally return no lineup or produce a stack smaller than the requested depth.
These aren't normal operating conditions for most users, but lineup correctness comes first, so these issues receive more attention than cosmetic problems.
We are also improving the way the optimizer explains what is happening. In some situations, such as when no legal lineup can be built, the underlying behavior may be reasonable but the optimizer doesn't clearly tell the user why the result is empty or unchanged. Better messages can sometimes improve the user experience almost as much as changing the calculation itself.
The multi-lineup tools are another area receiving attention. We are tracking several issues involving custom-projection templates, global exclusions, CSV files and re-optimized lineups. We are also continuing to improve session and browser-tab behavior so that longer optimization sessions are more resilient.
Data Quality Matters Too
Some of the issues we track don't originate with the optimizer itself.
The DFS Optimizer depends on large amounts of rapidly changing information: players, salaries, injuries, projections, ownership data, team information and available slates. Occasionally an upstream source returns something unexpected, a player status changes format, a projection isn't available, or a data-refresh cycle takes longer than normal.
We track these situations too. The objective isn't simply to say, "the outside data was bad." We want the optimizer to recognize unusual data, recover when possible and give the user useful information when it cannot.
That includes less common formats as well. For example, we are currently aware of an issue that can prevent some SuperFlex slates from appearing even though the format is supported.
Building the Foundation for Next Gen
None of this work is separate from the next-generation optimizer. It is part of getting there.
Every edge case we eliminate, every error we learn to reproduce and every confusing interaction we improve makes the existing product stronger. More importantly, it gives us a better foundation on which to build the much more advanced optimizer we have planned.
The goal isn't perfection — complex software interacting with constantly changing sports data will always produce new situations to solve. The goal is to see problems quickly, understand them, prioritize them intelligently and keep improving the product.
That is what we have been doing, and the results over the last year have been substantial.
If you ever encounter something that doesn't look right, have a question about the DFS Optimizer, or simply want to tell us which improvements matter most to you, please contact me at
Customer feedback remains one of the most important inputs into what we work on next.