Blog

One Scratched Winger Was in 29% of My NHL DFS Lineups

On October 16 a single DFS late scratch sat in 29.1% of the NHL lineups I had built for a two-game slate. Egor Chinakhov, a $4,100 Penguins winger, was ruled out about 25 minutes before puck drop, and my Frozen Tools set had him in 134 of its 461 lineups. In the real DraftKings contests, 1.6% of entries had him. I have since rebuilt the night without him, checked four other nights, and added a “Check late news” button to my NHL lineup optimizer and the other three sports. The surprise is how little removing him changed.

Continue reading “One Scratched Winger Was in 29% of My NHL DFS Lineups”

A Free NBA Lineup Optimizer for DraftKings and FanDuel

The free NBA lineup optimizer is live. It builds lineups for DraftKings and FanDuel classic contests, there is no signup, and it makes up to 150 lineups from the player file you download from the site. The last step is a CSV you upload straight back.

It is the basketball version of my MLB, NFL and NHL optimizers. Same engine, different rules on top. The NBA season opens on October 20, 2026, so the timing works.

Continue reading “A Free NBA Lineup Optimizer for DraftKings and FanDuel”

How to Play Fantasy Sports Strategically: My Review

A review of Haugh and Singal’s DFS paper on modeling opponents, and the simulation-based NHL lineup generator I built from it.

Earlier this week I wrote about what an MIT DFS paper taught my NHL lineup optimizer. Read that paper and you quickly run into its follow-up: Martin Haugh (Imperial College) and Raghav Singal (Columbia), How to Play Fantasy Sports Strategically (and Win), later published in Management Science. It builds directly on the MIT work and asks the one question that paper skipped: what is everybody else doing? Their answer is that to play fantasy sports strategically you can’t just maximize your own points. You have to beat a field of lineups you can’t see yet.

I read it for a selfish reason. I have been paper-trading my NHL lineups for a week (I build them before lock, then score them against the real DraftKings fields once the games are over), and after five slates no setup has made money. None of them (that is not a typo). So this post is half review, half lab notebook: what the paper does, what I borrowed, and the different kind of lineup generator I am building along the same lines.

Bar chart of return on entry fees over five NHL slates with each night’s best prize removed: plain settings -81%, simulation picking by expected payout -71%, simulation with top-1% coverage -67%, power-play stack with Vegas filter -64%. The average entry loses about 16%.
Five DraftKings NHL slates, Oct 2–6, 2026, every contest filled to its entry cap and scored against the real field. Blue is the new simulation-based generator.
Continue reading “How to Play Fantasy Sports Strategically: My Review”

My NHL Lineup Optimizer Now Skips the Solver (Mostly)

My NHL lineup optimizer used to build every lineup the same way: hand the whole problem to a solver and wait. It now skips the solver for most of the work. It lists the stacks that are allowed, scores them, and picks the best one, and it does that for a whole batch on a DraftKings or FanDuel slate in about a tenth of a second. The solver I have always reached for is still in the tool, but as the referee rather than the player.

Horizontal bar chart on a log scale. Time to build a batch of lineups with the solver versus the enumeration fast path: DraftKings 3-3 stacks 2.3 versus 0.1 seconds, FanDuel 3-2 stacks with cooldown off 44.9 versus 0.15 seconds.
Time to build the whole batch. The 3-3 rows were run through the app code on tonight’s DraftKings and FanDuel slates; the 3-2 rows were run against the engine directly on a FanDuel slate. FanDuel leaves its own projections blank this early in the season, so I used stand-ins, which do not change the timing. In every row the two methods produced the same lineup totals.
Continue reading “My NHL Lineup Optimizer Now Skips the Solver (Mostly)”

Yahoo DFS NHL Optimizer: Two Goalies, New Rules

My free NHL lineup optimizer now builds lineups for Yahoo, the third site after DraftKings and FanDuel. I expected a Yahoo DFS NHL optimizer to be a matter of a new file parser and a new roster shape. It was mostly that, except for one line in Yahoo’s roster that broke three of my assumptions: two goalies. This post is about what had to change, which settings would have quietly made every lineup impossible, and the one new rule I added because of it: never repeat the same goalie pair.

Bar chart of distinct goalie pairs. 6 lineups: 4 pairs with the limit off, 6 with it on. 20 lineups: 6 pairs off, 20 on.
Same Yahoo slate, same settings. Without a limit the solver keeps coming back to the same two or three goalie pairs.
Continue reading “Yahoo DFS NHL Optimizer: Two Goalies, New Rules”