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.

Yahoo’s NHL roster is different
Here are the three rosters side by side, as the sites’ own upload files lay them out:
- DraftKings: C, C, W, W, W, D, D, G, UTIL — $50,000 cap.
- FanDuel: C, C, W, W, D, D, UTIL, UTIL, G — $55,000 cap.
- Yahoo: G, G, C, C, W, W, W, D, D — $200 cap.
Nine players everywhere, but Yahoo spends one of them on a second goalie and gives up the utility spot to do it. That leaves exactly five forwards and two defencemen, with no flexible slot anywhere. The $200 cap is only a different unit; Yahoo prices players in single and double digits instead of thousands, and the solver doesn’t care.
The tool enforces what Yahoo’s general daily fantasy rules say about teams: players from at least three different teams, and no more than six from one team. I have not found an NHL-specific page that says otherwise, so if you know of one, tell me.
Two goalies break three rules
My optimizer has a handful of goalie rules that were all written with one goalie in mind. With two, each one had to be re-read.
Goalies from different games. This is a new rule, and it is mine, not Yahoo’s. Two goalies from the same team can’t both start. Two goalies facing each other are worse: one of them is going to lose, and the other one’s saves are the first one’s goals against. So the two goalies must come from different games. That rules out both cases with one constraint per game.
No skaters against your goalie. The rule was already written per goalie, so it simply applies twice. With two goalies it bites harder than you’d think: two opposing teams are off limits for your skaters, and on a five-game slate that is a fifth of the pool.
Goalie from a stacked team. Some of my settings want the goalie to come from a team you stacked, on the theory that if that team wins, the goalie gets the win and the skaters get the goals. With two goalies, asking for both would spend both stacks on goalie teams. I read it as “at least one of the two,” which is what I think the rule was trying to say.
One feature doesn’t apply at all. Build around goalies, which splits the batch among the goalies you pick and builds each share with that goalie locked in, assumes one goalie per lineup. It is hidden for Yahoo. With two goalies, the goalie-pair limit below does a similar job from the other direction.
The setting that made every lineup impossible
This one I didn’t see coming until I ran it. My GPP preset stacks two full forward lines, three players each. On DraftKings that’s six forwards, and there are six forward spots if you count the UTIL. On FanDuel it fits through the two UTILs. On Yahoo there are five forward slots, so two full lines can never fit. The solver doesn’t complain; it just says Infeasible.
Dropping to a single three-man line still failed, and that took me a minute. The culprit was the stack salary window, which says the stacked lines should cost between 50% and 75% of the cap. That was tuned for two lines. One line on its own can’t reach half the cap, so that was impossible too. I had written about why the rules across lineups are the hard part; this was the reverse, a rule inside one lineup that could never be met.
So on Yahoo the GPP preset becomes a 3-2: one full line plus two players from a second line, which is exactly five forwards. The salary window starts off. And if you set up a stack that needs more forwards than the site has, the tool now tells you so in plain words and suggests the 3-2, instead of handing you an Infeasible to decode.
Don’t repeat the goalie pair
Once lineups were coming out, I looked at the goalies and didn’t like what I saw. With nothing stopping it, the solver keeps choosing the same goalies, because the same two or three look best on paper every time. On my test slate, 20 lineups used only six different goalie pairs, and one pair showed up in seven of them. Six lineups used four pairs.
That matters because goalies are the swingiest position in hockey DFS. The MIT group behind Picking Winners in Daily Fantasy Sports Using Integer Programming found that once their model knew the probability of a goalie’s team winning, that was the only significant predictor of his score. If one pair loses, every lineup built on it loses with them. Seven lineups on one pair is seven copies of the same bet.
The optimizer already had the tool for this, just not for goalies. The rule called Max shared lines / PP units vs any prior lineup compares each new lineup against every earlier one and caps how many stacks it may share with any single one of them. I added the same idea for goalies: Max shared goalies vs any prior lineup, which shows up only for Yahoo, in the Across lineups section. At 1, a new lineup can share one goalie with any earlier lineup but never both. Each goalie can come back, just not with the same partner.
With the limit on, 20 lineups used 20 different goalie pairs, and six lineups used six. It isn’t free: the solver has to take goalies it rates a bit lower. On the six-lineup set, the weakest lineup dropped from 84.7 projected points to 82.3. The best lineup didn’t change. That’s the trade: a little less on paper for much less riding on one pair.
Why only Yahoo? With one goalie slot, two lineups can share at most one goalie anyway, so a limit of 1 does nothing on DraftKings or FanDuel. I checked it: the same DraftKings run with the limit on and off produced identical lineups. Setting it to 0 would mean never reusing a goalie at all, which runs out of goalies fast. That is why the control only appears when Yahoo is selected.
Getting the lineups into Yahoo
Yahoo’s player export lists players by a short id. The upload file wants a longer one that also names the game, in the form nhl.p.3980$nhl.g.13599943. The export alone doesn’t have it; the contest’s lineup template does. So the Yahoo page asks for both files. Load the template and the download uses the full ids.
Yahoo’s bulk template also has a Contest ID column in front of the nine roster columns. Type your contest id on the page and every row of the download carries it, ready to upload. Leave it blank and you get the plain nine columns.
One small thing: Yahoo’s file names have no date in them. The tool uses the date to fetch confirmed starting goalies and Vegas lines, so for Yahoo it assumes today and says so on the page.
A few caveats
All the numbers here come from one Yahoo slate from late September, with projections taken from Yahoo’s own points-per-game column and line combinations I made up for testing, since the line source doesn’t work from my development machine. The shape of the result — the solver piling onto a few goalie pairs — I’d expect on any slate. The exact counts will differ.
Yahoo is also a much smaller DFS site than the other two. The contests I looked at let you enter at most six lineups, which makes the goalie-pair limit easy to live with: six different pairs is rarely a stretch. Whether a smaller field is an easier one, I don’t know. That is a guess I’d like to test before I say it out loud.
The Yahoo option is in the free NHL lineup optimizer next to DraftKings and FanDuel. How the tool works in general, and why it stacks lines the way it does, is in A Free NHL Lineup Optimizer for DraftKings.
Things that I use, like, and am affiliated with:
Mint Mobile offers great cell phone service for $15 flat, get $15 off using the link. Get discounted phones with service activation and no contract.
I never spend money before I check Mr Rebates or Rakuten to get cashbacks, rebates, discounts, coupons or cheaper gift cards.
