Every night (NHL, NBA) and every Sunday main slate (NFL) I run my DFS lineup optimizers through a paper trading test. Each lineup set builds its lineups for real DraftKings contests, then I score them against the real field and the real payout table. Real contests, real fields, fake entry fees: nothing on this page is real money.
The method is deliberately boring. Projections come from public sources (DailyFantasyFuel, Frozen Tools and, for some NFL sets, nflverse data), the settings of every set are fixed in advance, and I never hand-pick a player or use any sports judgment. In NHL, the one thing I do by hand is set the actual starting goalies and remove late scratches, because this tests lineup building, not keeping up with the news. That makes the results a little kinder than real life would be.
I explain the whole idea, and how to read the tables, in the intro post. One slate tells you almost nothing, so look at the top-1% columns against what chance would give, not just at profit.
Last updated: November 9, 2026 (the most recent night scored).
NHL
Headline set: Line+D, line+G stack (pat1). I chose it when this scoreboard launched and it stays the headline however it does; it is currently -36.0% ROI after 13 nights.

NHL summary, Oct 27 to Nov 9 (13 nights)
| Set | Nights | Entries | Fees paid | Winnings | ROI | Top-1% hits (expected) | Top-0.1% hits (expected) | Top-10 finishes | Best finish |
|---|---|---|---|---|---|---|---|---|---|
| Line+D, line+G stack pat1 Headline set (fixed since launch) | 13 | 1,600 | $9,800.00 | $6,276.00 | -36.0% | 23 (16.1) | 2 (1.60) | 3 | 0.014% (1/7284, Oct 31) |
| Simulated + DFF upside sim_dffv5_k1 | 13 | 1,600 | $9,800.00 | $5,285.00 | -46.1% | 34 (16.1) | 4 (1.60) | 9 | 0.014% (1/7284, Oct 31) |
| Plain, DFF plain_dff | 13 | 1,600 | $9,800.00 | $5,187.00 | -47.1% | 21 (16.1) | 3 (1.60) | 4 | 0.014% (1/7284, Oct 31) |
| Plain, DFF + Vegas plain_dffv | 13 | 1,600 | $9,800.00 | $5,118.00 | -47.8% | 32 (16.1) | 7 (1.60) | 9 | 0.027% (2/7284, Oct 31) |
| Simulated average sim_k0 | 13 | 1,600 | $9,800.00 | $4,826.00 | -50.8% | 26 (16.1) | 4 (1.60) | 7 | 0.014% (1/7284, Oct 31) |
| Simulated upside sim_k1 | 13 | 1,600 | $9,800.00 | $4,672.00 | -52.3% | 27 (16.1) | 4 (1.60) | 9 | 0.014% (1/7284, Oct 31) |
| Plain, goalies halved plain_dffv_g50 | 13 | 1,600 | $9,800.00 | $4,550.00 | -53.6% | 26 (16.1) | 6 (1.60) | 7 | 0.027% (2/7284, Oct 31) |
| Grid, deeper pool grid_depth | 13 | 1,600 | $9,800.00 | $4,332.00 | -55.8% | 2 (16.1) | 0 (1.60) | 0 | 0.220% (16/7284, Nov 7) |
| Grid, top lines grid_top | 13 | 1,600 | $9,800.00 | $4,311.00 | -56.0% | 11 (16.1) | 0 (1.60) | 1 | 0.137% (10/7284, Nov 7) |
| Two lines, split D pat4 | 13 | 1,600 | $9,800.00 | $3,878.00 | -60.4% | 18 (16.1) | 0 (1.60) | 1 | 0.137% (10/7284, Nov 7) |
| Goalie-team grid grid | 13 | 1,600 | $9,800.00 | $3,632.00 | -62.9% | 3 (16.1) | 0 (1.60) | 0 | 0.578% (27/4668, Nov 9) |
| Plain, Frozen Tools plain_ft | 13 | 1,600 | $9,800.00 | $2,711.00 | -72.3% | 10 (16.1) | 3 (1.60) | 7 | 0.082% (6/7284, Oct 31) |
NHL ROI by night, newest first
| Date | Games | Line+D, line+G stack pat1 | Simulated + DFF upside sim_dffv5_k1 | Plain, DFF plain_dff | Plain, DFF + Vegas plain_dffv | Simulated average sim_k0 | Simulated upside sim_k1 | Plain, goalies halved plain_dffv_g50 | Grid, deeper pool grid_depth | Grid, top lines grid_top | Two lines, split D pat4 | Goalie-team grid grid | Plain, Frozen Tools plain_ft |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Nov 9 | 3 | -83.7% | -88.5% | -87.6% | -89.3% | -86.8% | -84.8% | -87.0% | -47.0% | -31.4% | -86.5% | -39.7% | -93.2% |
| Nov 8 | 4 | -65.7% | -56.0% | -32.6% | -54.9% | +276.6% | -66.9% | -43.4% | -90.9% | -76.0% | -66.3% | -90.9% | -62.3% |
| Nov 7 | 9 | +64.0% | +52.0% | -65.3% | +6.7% | +149.3% | +18.7% | -4.0% | -20.0% | +45.3% | +30.7% | -30.7% | -78.7% |
| Nov 6 | 3 | -84.9% | -54.0% | -29.3% | -50.3% | -55.1% | -61.1% | -51.6% | -51.0% | -43.2% | -88.4% | -51.0% | -64.9% |
| Nov 5 | 11 | -77.3% | -84.0% | -76.0% | -89.3% | -69.3% | -88.0% | -89.3% | -97.3% | -88.0% | -54.7% | -97.3% | -78.7% |
| Nov 4 | 4 | -83.7% | -76.6% | -78.5% | -72.4% | -82.5% | -85.1% | -74.5% | +16.6% | -93.2% | -84.1% | -88.7% | -85.1% |
| Nov 3 | 11 | -10.7% | -65.3% | -43.5% | -56.3% | -57.3% | -50.7% | -56.3% | -84.5% | -71.3% | -44.7% | -84.5% | -95.0% |
| Nov 2 | 4 | +86.1% | -92.1% | -84.2% | -93.0% | -89.6% | -89.9% | -87.6% | -93.2% | -78.6% | -46.3% | -93.2% | -88.7% |
| Nov 1 | 4 | -71.4% | +334.3% | -49.7% | -3.4% | +1.7% | -5.1% | -40.6% | -85.1% | -95.4% | -84.0% | -85.1% | +474.9% |
| Oct 31 | 4 | +606.7% | +865.3% | +730.7% | +485.3% | +736.0% | +822.7% | +470.7% | -41.3% | -5.3% | -49.3% | -38.7% | +6.7% |
| Oct 29 | 11 | -54.9% | +17.9% | +15.7% | +104.9% | -44.9% | +11.1% | +22.7% | +16.3% | +44.9% | -51.9% | +16.3% | -51.2% |
| Oct 28 | 4 | -76.9% | -0.8% | -41.1% | -31.3% | -46.9% | -54.8% | -33.9% | -31.3% | +3.4% | -78.9% | -31.0% | -21.3% |
| Oct 27 | 11 | -67.6% | -80.0% | -71.3% | -80.0% | -73.8% | -74.8% | -75.2% | -59.8% | -81.0% | -62.0% | -59.8% | -98.6% |
NBA
Headline set: Bring-back, 1 game (bb_K1_dff). I chose it when this scoreboard launched and it stays the headline however it does; it is currently -32.2% ROI after 12 nights.

NBA summary, Oct 27 to Nov 9 (12 nights)
| Set | Nights | Entries | Fees paid | Winnings | ROI | Top-1% hits (expected) | Top-0.1% hits (expected) | Top-10 finishes | Best finish |
|---|---|---|---|---|---|---|---|---|---|
| Bring-back, 1 game bb_K1_dff Headline set (fixed since launch) | 12 | 1,800 | $11,025.00 | $7,479.31 | -32.2% | 15 (18.0) | 2 (1.80) | 4 | 0.038% (2/5248, Oct 27) |
| No clashing pairs plain_dff_pair | 12 | 1,800 | $11,025.00 | $4,544.14 | -58.8% | 18 (18.0) | 0 (1.80) | 1 | 0.152% (8/5262, Nov 8) |
| Plain, DFF plain_dff | 12 | 1,800 | $11,025.00 | $4,291.86 | -61.1% | 15 (18.0) | 0 (1.80) | 1 | 0.190% (10/5262, Nov 8) |
| Bring-back, 2 games bb_K2_dff | 12 | 1,800 | $11,025.00 | $4,087.87 | -62.9% | 9 (18.0) | 0 (1.80) | 1 | 0.199% (10/5020, Nov 7) |
| Bring-back, 4 games bb_K4_dff | 7 | 1,050 | $5,250.00 | $1,141.16 | -78.3% | 2 (10.5) | 0 (1.05) | 0 | 0.769% (35/4551, Oct 31) |
| Bring-back, 3 games bb_K3_dff | 8 | 1,200 | $6,450.00 | $1,279.30 | -80.2% | 2 (12.0) | 0 (1.20) | 0 | 0.461% (24/5203, Nov 2) |
NBA ROI by night, newest first
| Date | Games | Bring-back, 1 game bb_K1_dff | No clashing pairs plain_dff_pair | Plain, DFF plain_dff | Bring-back, 2 games bb_K2_dff | Bring-back, 4 games bb_K4_dff | Bring-back, 3 games bb_K3_dff |
|---|---|---|---|---|---|---|---|
| Nov 9 | 7 | -94.7% | -79.2% | -87.0% | -93.3% | missing | missing |
| Nov 8 | 5 | -60.7% | -32.5% | -42.9% | -63.3% | missing | missing |
| Nov 7 | 5 | -45.6% | -49.0% | -49.0% | -39.2% | missing | missing |
| Nov 6 | 7 | -89.3% | -89.0% | -89.0% | -90.3% | -100.0% | -93.4% |
| Nov 5 | 2 | -39.2% | -40.3% | -39.4% | -42.8% | missing | missing |
| Nov 4 | 11 | -18.2% | -22.8% | -31.1% | -39.3% | -63.7% | -45.7% |
| Nov 2 | 11 | -56.5% | -73.1% | -71.2% | -74.3% | -97.3% | -85.8% |
| Nov 1 | 4 | -70.5% | -74.4% | -75.1% | -76.5% | -85.8% | -85.4% |
| Oct 31 | 5 | -73.0% | -76.0% | -77.3% | -83.0% | -69.5% | -84.3% |
| Oct 29 | 3 | -86.3% | -82.6% | -86.1% | -88.0% | missing | -90.8% |
| Oct 28 | 9 | -70.0% | -33.5% | -52.7% | -75.7% | -91.0% | -93.3% |
| Oct 27 | 4 | +343.6% | -42.1% | -56.3% | -55.7% | -35.9% | -41.3% |
NFL
Headline set: QB-stack grid (grid_nfl). I chose it when this scoreboard launched and it stays the headline however it does; it is currently -46.2% ROI after 4 Sundays.

NFL summary, Oct 18 to Nov 8 (4 Sundays)
| Set | Sundays | Entries | Fees paid | Winnings | ROI | Top-1% hits (expected) | Top-0.1% hits (expected) | Top-10 finishes | Best finish |
|---|---|---|---|---|---|---|---|---|---|
| QB-stack grid grid_nfl Headline set (fixed since launch) | 4 | 750 | $5,400.00 | $2,905.00 | -46.2% | 9 (7.5) | 2 (0.75) | 1 | 0.059% (17/28687, Nov 8) |
| Plain, DFF plain_dff | 3 | 600 | $2,400.00 | $1,699.00 | -29.2% | 11 (6.0) | 1 (0.60) | 0 | 0.079% (19/23931, Oct 25) |
| Plain, DFF + model plain_blend | 3 | 600 | $2,400.00 | $1,290.00 | -46.2% | 7 (6.0) | 1 (0.60) | 1 | 0.033% (8/23931, Oct 25) |
| Plain, DFF + Vegas plain_dffv | 3 | 600 | $2,400.00 | $934.00 | -61.1% | 7 (6.0) | 0 (0.60) | 0 | 0.241% (69/28687, Nov 8) |
| Plain, expected points plain_ffo | 3 | 600 | $2,400.00 | $408.00 | -83.0% | 1 (6.0) | 0 (0.60) | 0 | 0.547% (157/28687, Nov 8) |
Oct 18 excludes one $555 contest.
NFL ROI by Sunday, newest first
| Date | Games | QB-stack grid grid_nfl | Plain, DFF plain_dff | Plain, DFF + model plain_blend | Plain, DFF + Vegas plain_dffv | Plain, expected points plain_ffo |
|---|---|---|---|---|---|---|
| Nov 8 | 11 | +12.0% | -41.3% | -73.3% | -16.0% | -81.3% |
| Nov 1 | 11 | -51.6% | -43.2% | -60.8% | -57.5% | -86.3% |
| Oct 25 | 10 | +38.9% | -22.0% | -38.0% | -65.0% | -81.5% |
| Oct 18 | 10 | -91.0% | missing | missing | missing | missing |
What each set does
| Sport | Set | What it does |
|---|---|---|
| NHL | Line+D, line+G stack pat1 | Two stacked lines or power-play units; each stacked team also supplies a defenseman or the goalie, and the goalie comes from a stacked team. |
| NHL | Simulated + DFF upside sim_dffv5_k1 | The simulation blended 50/50 with DFF x Vegas, average plus one standard deviation. |
| NHL | Plain, DFF plain_dff | Maximize DailyFantasyFuel’s projected points, optimizer default settings, no stacking pattern forced. |
| NHL | Plain, DFF + Vegas plain_dffv | The same, with each skater’s DFF projection scaled by his team’s Vegas implied goals. |
| NHL | Simulated average sim_k0 | Projection = the average from my own simulation of player scoring built on recent game history. |
| NHL | Simulated upside sim_k1 | The same simulation, projection = average plus one standard deviation, which favors boom-or-bust players. |
| NHL | Plain, goalies halved plain_dffv_g50 | DFF + Vegas projections, but goalie projections cut in half so goalies are not picked on projection alone. |
| NHL | Grid, deeper pool grid_depth | The same grid, but lower-line skaters are allowed into the player pool too. |
| NHL | Grid, top lines grid_top | The same grid, but skaters only from first lines or first power-play units. |
| NHL | Two lines, split D pat4 | Two stacked lines, the goalie from one of the stacked teams, and the two defensemen from different games. |
| NHL | Goalie-team grid grid | One group of lineups for every goalie and stacked-team pairing, built on DailyFantasyFuel projections scaled by Vegas team totals. |
| NHL | Plain, Frozen Tools plain_ft | Maximize the Frozen Tools (DobberHockey) projection, optimizer default settings. |
| NBA | Bring-back, 1 game bb_K1_dff | The plain DFF build, but every lineup must hold players from both teams in at least 1 game (a bring-back). |
| NBA | No clashing pairs plain_dff_pair | The plain DFF build, but it never puts two teammates together whose scores have historically moved in opposite directions. |
| NBA | Plain, DFF plain_dff | Maximize DailyFantasyFuel’s projected points; at least 4 different players between any two lineups and the most-used players rested. |
| NBA | Bring-back, 2 games bb_K2_dff | Same, in at least 2 games per lineup. |
| NBA | Bring-back, 4 games bb_K4_dff | Same, in at least 4 games per lineup. |
| NBA | Bring-back, 3 games bb_K3_dff | Same, in at least 3 games per lineup. |
| NFL | QB-stack grid grid_nfl | One group of lineups for every team’s starting QB: the QB, at least two of his WR/TE and at least one opposing player (bring-back), built on DailyFantasyFuel projections scaled by Vegas implied team totals and solved exactly. |
| NFL | Plain, DFF plain_dff | Maximize DailyFantasyFuel’s projected points with the optimizer’s tournament settings: QB plus two stacked receivers, at most 4 players per team, no player in more than 40% of lineups. |
| NFL | Plain, DFF + model plain_blend | The same settings, with projection = the average of the DFF projection and the expected-points model. |
| NFL | Plain, DFF + Vegas plain_dffv | The same settings, with each player’s DFF projection scaled by his team’s Vegas implied points relative to the slate average. |
| NFL | Plain, expected points plain_ffo | The same settings, but projections come from a public expected-fantasy-points model (nflverse ffopportunity: expected yards, touchdowns and targets from recent games, converted to DraftKings scoring) instead of DFF. |
Column legend
- Set: one lineup-building method. Each set enters the same contests each night with the same number of lineups.
- Nights (NFL: Sundays): nights the set was scored. Entries: lineups entered in total.
- Fees paid: total entry fees. Winnings: total prize money won. ROI = winnings / fees paid – 1.
- Top-1% hits (expected): entries that finished in the top 1% of the field, and how many a random lineup would be expected to produce. Top-0.1% is the same for the top 0.1%.
- Top-10 finishes: entries that finished in the top 10 of a contest.
- Best finish: best single finish, as a percentile of the field (lower is better), with rank / field size and date.
- Games: games on the night’s slate (NFL: the main Sunday slate). missing: that set was not scored that night; it is not filled in.
Play responsibly: DFS has a lot of luck in it and even a good optimizer loses most nights. This is a paper test, not betting advice. If gambling is a problem for you, the National Council on Problem Gambling can help.
