Engineered for high-stakes GPP tournament portfolio building. Solve 730-player FanDuel slates to verified global optimality in milliseconds using Google OR-Tools CP-SAT, with full exposure controls, stacking rules, team limits, and FanDuel CSV exports.
| Action | Gp | Pos | Player | Matchup | Salary | Proj FP | Floor | Ceil | Own% | Value | Min% | Max% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
{{ grp.name.length > 5 ? grp.name.substring(0, 4) + '..' : grp.name }}
|
{{ isSingleGame ? (p.position === 'MVP' ? 'MVP' : 'FLEX') : p.position }} |
{{ p.name }}
đ
{{ p.injury_status }}
|
{{ p.team }} vs {{ p.opp }} | ${{ p.salary.toLocaleString() }} | {{ p.floor ? p.floor.toFixed(1) : '-' }} | {{ p.ceiling ? p.ceiling.toFixed(1) : '-' }} | {{ p.ownership.toFixed(1) }}% | {{ p.value.toFixed(2) }}x |
Configure linear inequalities: Min ⤠overlap in lineup ⤠Max across any custom subset of players. Solved to mathematical precision with CP-SAT.
Quickly instantiate proven DFS tournament inequality rules.
Create a group above or click one of the 1-click rule presets (Backfield Limit, Elite WR Spend-Up, Value Punt) to apply conditional bounds.
Configure portfolio size, projection tolerance, objective mode, and computational depth.
Quickly configure build parameters based on contest type.
0% Deterministic Optimal: Mathematically highest-projected lineup. Identical output on every solve.
{{ optParams.randomness_pct }}% Gaussian Variance: Perturbs projections each iteration scaled by position volatility (WR/TE high variance, RB lower variance).
Enforce quarterback pass-catcher stacks, opposing bring-backs, and opposing DST negative correlation rules.
Set global team roster caps or customize individual team minimums and maximums across the 24 teams on this slate.
Enforces a roster-wide upper bound on players from any single NFL franchise.
| Team | Opponent | Available Players | Min In Lineup | Max In Lineup |
|---|---|---|---|---|
| {{ t.team }} | vs {{ t.opp }} | {{ t.player_count }} |
Solved in {{ solveTime }} ms. Validated 100% compliant with {{ isSingleGame ? 'FanDuel Single Game (1 MVP @ 1.5x + 4 AnyFLEX)' : 'FanDuel Classic' }} rules.
Click 'Run Build Now' or '⥠OPTIMIZE' to generate your optimal DFS portfolio.
Simulated correlated field dynamics, duplication prize dilution, and GPP expected value in {{ simulationResults.sim_time_ms }} ms.
Complete this 5-step operational workflow each week when new DFS contest slates are released. Prepare player salaries, sportsbook betting lines, starter depth charts, external feeds, and run the Dingus Quant Model.
Upload official contest CSV exports from FanDuel or DraftKings, or LineupHQ format. Strict player identity deduplication ensures 0 duplicate entries.
Fetch real-time DraftKings Sportsbook game totals, spreads, and implied team totals. Implied totals directly scale player pace and touchdown equity.
| Matchup | Spread | Game Total | Away Implied | Home Implied | Actions |
|---|---|---|---|---|---|
| {{ g.away || g.away_team }} @ {{ g.home || g.home_team }} | {{ typeof g.spread === 'number' ? (g.spread > 0 ? '+' + g.spread : g.spread) : g.spread }} | {{ (g.ou || g.over_under) ? Number(g.ou || g.over_under).toFixed(1) : '-' }} | {{ (g.away_total || g.away_implied) ? Number(g.away_total || g.away_implied).toFixed(1) : '-' }} | {{ (g.home_total || g.home_implied) ? Number(g.home_total || g.home_implied).toFixed(1) : '-' }} | |
| No games found for active slate. Click "Fetch Live DraftKings Odds" above to populate. | |||||
Fetches live sportsbook player props (Pass/Rush/Rec Yds, TDs, Receptions) and converts market medians into fantasy point baselines.
Sync depth charts (QB1, RB1, WR1-3, TE1) and official game status declarations. Backups with 0 projected snaps will have their projections zeroed out.
Starters verified with primary snap volume. Backup players without projected offensive snaps are preserved from receiving starter baseline points.
Live status tagged directly on player pool rows and player cards.
Confirmed Out players are automatically excluded or locked from solver generation.
Ingest third-party projections (Stokastic, ETR / RunTheSims, LineupHQ, FantasyPros, NumberFire, or Custom). Standardizes headers and matches player identities.
Executes the full quantitative projection engine incorporating Vegas totals, offensive pace, depth chart volume, and advanced analytics. Sets the default consensus projections for all users.
When you calculate and publish, the model runs across all active players in the slate. Backups without projected snaps remain zeroed out, while offensive starters receive Vegas-scaled volume projections.
| Player | Pos | Team | Salary | Consensus & Variance | {{ s.name }} {{ s.slot || 'SLOT' }} | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
Name
{{ matrixSortKey === 'name' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Pos | Team |
Sal
{{ matrixSortKey === 'salary' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Avg Proj
{{ matrixSortKey === 'consensus_proj' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Avg Own%
{{ matrixSortKey === 'consensus_own' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Spread
{{ matrixSortKey === 'spread' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
# Rpt |
Proj
{{ matrixSortKey === s.id + '.proj' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Own%
{{ matrixSortKey === s.id + '.own' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Ceil
{{ matrixSortKey === s.id + '.ceil' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Flr
{{ matrixSortKey === s.id + '.flr' ? (matrixSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
|
{{ r.name }}
{{ r.injury_status }}
|
{{ r.pos }} | {{ r.team }} | ${{ r.salary.toLocaleString() }} | {{ r.consensus_proj.toFixed(1) }} | {{ r.consensus_own.toFixed(1) }}% | {{ r.spread.toFixed(1) }} | {{ r.reporting_count }} | {{ r.sources[s.id] ? r.sources[s.id].proj.toFixed(1) : '-' }} | {{ r.sources[s.id] ? r.sources[s.id].own.toFixed(1) + '%' : '-' }} | {{ r.sources[s.id] ? r.sources[s.id].ceil.toFixed(1) : '-' }} | {{ r.sources[s.id] ? r.sources[s.id].flr.toFixed(1) : '-' }} |
| Player | Pos | Team | Salary | Game Environment | đĨ Best Prop Value Bet | Passing Markets (Attempts, Completions, Yards, TDs, INTs) | Rushing Markets (# of Rushes, Yards, Longest Rush, TDs) | Receiving Markets (Targets, Catches, Yards, Longest Rec, TDs) | Touchdown Equity & Pick'em Benchmark Lines | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Name
{{ statsSortKey === 'name' ? (statsSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Pos | Team |
Sal
{{ statsSortKey === 'salary' ? (statsSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Spread | O/U | Team Tot | Market | Bet Recommendation |
Edge (Î)
{{ statsSortKey === 'best_bet.diff' ? (statsSortAsc ? 'â˛' : 'âŧ') : 'â
' }}
|
Att (Mod/Veg) | Cmp (Mod/Veg) | Pass Yds (Mod/Veg) | Î Yds | Pass TD (Mod) | INT (Mod) | Carries (Mod/Veg) | Rush Yds (Mod/Veg) | Î Rush Yds | Long Rush | Rush TD (Mod) | Tgts (Mod/Ext) | Catches (Mod/Veg) | Rec Yds (Mod/Veg) | Î Rec Yds | Long Rec | Rec TD (Mod) | ATTD% (Veg / Mod) | Total TDs (Mod vs Veg) | PrizePicks (Ext) | Underdog (Ext) |
|
đ
{{ r.name }}
{{ r.injury_status || 'OUT' }}
Scorecard
|
{{ r.pos }} | {{ r.team }} | ${{ r.salary.toLocaleString() }} | {{ r.game_lines.spread }} | {{ r.game_lines.ou.toFixed(1) }} | {{ r.game_lines.implied_total.toFixed(1) }} | {{ r.best_bet ? r.best_bet.market : '-' }} | â Inactive ({{ r.injury_status || 'OUT' }}) No Line ⲠOVER {{ r.best_bet.line }} âŧ UNDER {{ r.best_bet.line }} Neutral | {{ r.best_bet.diff > 0 ? '+' : '' }}{{ r.best_bet.diff }} ({{ r.best_bet.edge_pct }}%) - | {{ r.dingus.pass_att > 0 ? r.dingus.pass_att.toFixed(1) : '-' }} / {{ r.vegas.pass_att > 0 ? r.vegas.pass_att.toFixed(1) : '-' }} | {{ r.dingus.pass_cmp > 0 ? r.dingus.pass_cmp.toFixed(1) : '-' }} / {{ r.vegas.pass_cmp > 0 ? r.vegas.pass_cmp.toFixed(1) : '-' }} | {{ r.dingus.pass_yds > 0 ? r.dingus.pass_yds.toFixed(1) : '-' }} / {{ r.vegas.pass_yds > 0 ? r.vegas.pass_yds.toFixed(1) : '-' }} | {{ r.diffs.pass_yds_diff > 0 ? '+' : '' }}{{ r.diffs.pass_yds_diff.toFixed(1) }} - | {{ r.dingus.pass_tds > 0 ? r.dingus.pass_tds.toFixed(1) : '-' }} | {{ r.dingus.ints > 0 ? r.dingus.ints.toFixed(1) : '-' }} | {{ r.dingus.rush_att > 0 ? r.dingus.rush_att.toFixed(1) : '-' }} / {{ r.vegas.rush_att > 0 ? r.vegas.rush_att.toFixed(1) : '-' }} | {{ r.dingus.rush_yds > 0 ? r.dingus.rush_yds.toFixed(1) : '-' }} / {{ r.vegas.rush_yds > 0 ? r.vegas.rush_yds.toFixed(1) : '-' }} | {{ r.diffs.rush_yds_diff > 0 ? '+' : '' }}{{ r.diffs.rush_yds_diff.toFixed(1) }} - | {{ r.dingus.longest_rush > 0 ? r.dingus.longest_rush.toFixed(1) : '-' }} / {{ r.vegas.longest_rush > 0 ? r.vegas.longest_rush.toFixed(1) : '-' }} | {{ r.dingus.rush_tds > 0 ? r.dingus.rush_tds.toFixed(1) : '-' }} | {{ r.dingus.targets > 0 ? r.dingus.targets.toFixed(1) : '-' }} / {{ (r.lineuphq.targets ? r.lineuphq.targets.toFixed(1) : (r.vegas.targets > 0 ? r.vegas.targets.toFixed(1) : '-')) }} | {{ r.dingus.recs > 0 ? r.dingus.recs.toFixed(1) : '-' }} / {{ r.vegas.recs > 0 ? r.vegas.recs.toFixed(1) : '-' }} | {{ r.dingus.rec_yds > 0 ? r.dingus.rec_yds.toFixed(1) : '-' }} / {{ r.vegas.rec_yds > 0 ? r.vegas.rec_yds.toFixed(1) : '-' }} | {{ r.diffs.rec_yds_diff > 0 ? '+' : '' }}{{ r.diffs.rec_yds_diff.toFixed(1) }} - | {{ r.dingus.longest_rec > 0 ? r.dingus.longest_rec.toFixed(1) : '-' }} / {{ r.vegas.longest_rec > 0 ? r.vegas.longest_rec.toFixed(1) : '-' }} | {{ r.dingus.rec_tds > 0 ? r.dingus.rec_tds.toFixed(1) : '-' }} | {{ r.vegas.anytime_td_prob > 0 ? (r.vegas.anytime_td_prob * 100).toFixed(0) + '%' : '-' }} (Mod: {{ r.dingus.anytime_td_prob > 0 ? (r.dingus.anytime_td_prob * 100).toFixed(0) + '%' : '-' }} ) | {{ r.diffs.td_diff > 0 ? '+' : '' }}{{ r.diffs.td_diff.toFixed(2) }} 0.00 | {{ r.lineuphq.pp_line ? r.lineuphq.pp_line.toFixed(1) : '-' }} | {{ r.lineuphq.ud_line ? r.lineuphq.ud_line.toFixed(1) : '-' }} |
| Wk | Opp | Cmp | Att | Cmp% | Yds | TD | Int | Car | Rush Yds | Rush TD | Snaps | FP |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.pass_cmp }} | {{ g.pass_att }} | {{ g.pass_pct }}% | {{ g.pass_yds }} | {{ g.pass_td }} | {{ g.pass_int }} | {{ g.rush_att }} | {{ g.rush_yds }} | {{ g.rush_td }} | {{ g.snaps }} | {{ g.fp }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.pass_cmp }} | {{ currentSeasonData.totals.pass_att }} | {{ currentSeasonData.totals.pass_pct }}% | {{ currentSeasonData.totals.pass_yds }} | {{ currentSeasonData.totals.pass_td }} | {{ currentSeasonData.totals.pass_int }} | {{ currentSeasonData.totals.rush_att }} | {{ currentSeasonData.totals.rush_yds }} | {{ currentSeasonData.totals.rush_td }} | - | {{ currentSeasonData.totals.fp }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.pass_cmp }} | {{ currentSeasonData.averages.pass_att }} | {{ currentSeasonData.averages.pass_pct }}% | {{ currentSeasonData.averages.pass_yds }} | {{ currentSeasonData.averages.pass_td }} | {{ currentSeasonData.averages.pass_int }} | {{ currentSeasonData.averages.rush_att }} | {{ currentSeasonData.averages.rush_yds }} | {{ currentSeasonData.averages.rush_td }} | {{ currentSeasonData.averages.snaps }} | {{ currentSeasonData.averages.fp }} |
| Wk | Opp | Car | Rush Yds | YPC | Rush TD | Tgt | Rec | Rec Yds | Rec TD | Touches | Snaps | FP |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.rush_att }} | {{ g.rush_yds }} | {{ g.rush_ypc }} | {{ g.rush_td }} | {{ g.targets }} | {{ g.rec }} | {{ g.rec_yds }} | {{ g.rec_td }} | {{ g.touches }} | {{ g.snaps }} | {{ g.fp }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.rush_att }} | {{ currentSeasonData.totals.rush_yds }} | {{ currentSeasonData.totals.rush_ypc }} | {{ currentSeasonData.totals.rush_td }} | {{ currentSeasonData.totals.targets }} | {{ currentSeasonData.totals.rec }} | {{ currentSeasonData.totals.rec_yds }} | {{ currentSeasonData.totals.rec_td }} | {{ currentSeasonData.totals.touches }} | - | {{ currentSeasonData.totals.fp }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.rush_att }} | {{ currentSeasonData.averages.rush_yds }} | {{ currentSeasonData.averages.rush_ypc }} | {{ currentSeasonData.averages.rush_td }} | {{ currentSeasonData.averages.targets }} | {{ currentSeasonData.averages.rec }} | {{ currentSeasonData.averages.rec_yds }} | {{ currentSeasonData.averages.rec_td }} | {{ currentSeasonData.averages.touches }} | {{ currentSeasonData.averages.snaps }} | {{ currentSeasonData.averages.fp }} |
| Wk | Opp | Tgt | Rec | Catch% | Yds | YPR | TD | Air Yds | WOPR | Snaps | FP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.targets }} | {{ g.rec }} | {{ g.catch_pct }}% | {{ g.rec_yds }} | {{ g.rec_ypr }} | {{ g.rec_td }} | {{ g.air_yds }} | {{ g.wopr }} | {{ g.snaps }} | {{ g.fp }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.targets }} | {{ currentSeasonData.totals.rec }} | {{ currentSeasonData.totals.catch_pct }}% | {{ currentSeasonData.totals.rec_yds }} | {{ currentSeasonData.totals.rec_ypr }} | {{ currentSeasonData.totals.rec_td }} | {{ currentSeasonData.totals.air_yds }} | {{ currentSeasonData.totals.wopr }} | - | {{ currentSeasonData.totals.fp }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.targets }} | {{ currentSeasonData.averages.rec }} | {{ currentSeasonData.averages.catch_pct }}% | {{ currentSeasonData.averages.rec_yds }} | {{ currentSeasonData.averages.rec_ypr }} | {{ currentSeasonData.averages.rec_td }} | {{ currentSeasonData.averages.air_yds }} | {{ currentSeasonData.averages.wopr }} | {{ currentSeasonData.averages.snaps }} | {{ currentSeasonData.averages.fp }} |
| Wk | Opp | FGM | FGA | FG% | 1-39 | 40-49 | 50+ | XPM | XPA | FP |
|---|---|---|---|---|---|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.fgm }} | {{ g.fga }} | {{ g.fg_pct }}% | {{ g.fgm_1_39 }} | {{ g.fgm_40_49 }} | {{ g.fgm_50p }} | {{ g.xpm }} | {{ g.xpa }} | {{ g.fp }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.fgm }} | {{ currentSeasonData.totals.fga }} | {{ currentSeasonData.totals.fg_pct }}% | - | - | - | {{ currentSeasonData.totals.xpm }} | {{ currentSeasonData.totals.xpa }} | {{ currentSeasonData.totals.fp }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.fgm }} | {{ currentSeasonData.averages.fga }} | {{ currentSeasonData.averages.fg_pct }}% | - | - | - | {{ currentSeasonData.averages.xpm }} | {{ currentSeasonData.averages.xpa }} | {{ currentSeasonData.averages.fp }} |
| Wk | Opp | Pts All | Sack | Int | FR | Def TD | Safety | Blk | FP |
|---|---|---|---|---|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.pts_allow }} | {{ g.sack }} | {{ g.def_int }} | {{ g.fum_rec }} | {{ g.def_td }} | {{ g.safety }} | {{ g.blk_kick }} | {{ g.fp }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.pts_allow }} avg | {{ currentSeasonData.totals.sack }} | {{ currentSeasonData.totals.def_int }} | {{ currentSeasonData.totals.fum_rec }} | {{ currentSeasonData.totals.def_td }} | - | - | {{ currentSeasonData.totals.fp }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.pts_allow }} | {{ currentSeasonData.averages.sack }} | {{ currentSeasonData.averages.def_int }} | {{ currentSeasonData.averages.fum_rec }} | {{ currentSeasonData.averages.def_td }} | - | - | {{ currentSeasonData.averages.fp }} |
| Week | Opponent | FP | Major Stat Line | Snaps |
|---|---|---|---|---|
| Wk {{ g.week }} | {{ g.opp }} | {{ g.fp }} | {{ g.stat_line }} | {{ g.snaps }} |
| {{ currentSeasonData.totals.label }} | - | {{ currentSeasonData.totals.fp }} | - | {{ currentSeasonData.totals.snaps }} |
| {{ currentSeasonData.averages.label }} | - | {{ currentSeasonData.averages.fp }} | - | {{ currentSeasonData.averages.snaps }} |
Auto-detects column signatures for Daily Fantasy Fuel (DFF), FantasyPros, NumberFire, LineupHQ, and Stokastic.
{{ authMode === 'login' ? 'Sign in with your Admin or Member account' : 'Register to build and export custom NFL lineups' }}
Strictly calibrated to official FanDuel NFL contest rules. All stats, gamelogs, and projections reflect these exact point allocations.
Drop or paste any official FanDuel or DraftKings contest salary CSV. The optimizer will automatically resolve player identities and link live DraftKings sportsbook odds.
Adjust Game Total (O/U), Spread, or Implied Team Totals. Modifying lines automatically rescales Dingus Quant projections for both teams.
Generate in-house proprietary projections, import third-party CSV/spreadsheets, or toggle and weight any combination of sources.
Press Ctrl+V to paste screenshots of LineupHQ MVP and AnyFLEX tables. Extracts Player Projections, pOwn%, Floor, and Ceil directly.
| Slot | Player | Team | Salary | Proj FPTS | pOwn% | Floor | Ceil |
|---|---|---|---|---|---|---|---|
| {{ p.is_mvp ? 'MVP (1.5x)' : 'FLEX' }} | {{ p.name }} | {{ p.team }} | ${{ p.salary }} | {{ p.projection.toFixed(2) }} | {{ p.ownership.toFixed(2) }}% | {{ p.floor.toFixed(1) }} | {{ p.ceiling.toFixed(1) }} |