Build a lineup pool against real constraints, then find out which of those lineups actually wins the contest you are entering. Bring your own projections; the maths is yours to check.
Home win probability and modelled margin from data/survivor.json (market or model). No totals.
Load a DraftKings slate to see AWAY @ HOME with kickoff and modelled home win odds.
Score contests on the Screener sheet (or wait for the lobby pull). Top Play-band shows up here.
Week N not graded — ingest standings on the Standings sheet.
Upload one data sheet or load live DraftKings salaries through toto. Build lineups to create the simulator and exposure results. Player data stays in this browser.
Uses toto → DraftKings draftables (salaries + OUT/Q). No Export CSV required. Opens on the next-locking Classic/Showdown when online.
One CSV loads salaries, projections and ownership together. Supports ETR Classic / Showdown and DraftKings salary exports.
Actions stay outside the gear. Use Refresh / Load / Read / Match below.
Edit any projection or ownership number directly. Lock forces a player into every lineup, Out removes them entirely, and Max% caps how many of your lineups may contain them. A player with no projection is left out of the pool — a blank is not a zero.
Upload your data sheet above, or load the demo slate to see the whole rig work end to end.
Contest-aware presets (Bible §4.1) set lineups / uniques / randomness / stacks. An exact integer solve returns the highest-projected roster under those constraints. There is no lineup-count paywall.
Correlation is the only free lunch in a tournament: a quarterback and his receiver score the same touchdown twice. The estimated size of that effect is on the Method sheet.
Bible §4.2 — pass/warn only (never hard-block). E[dupes] uses §3.2 priors until ≥3 weeks of standings (I5).
The solver asks what scores most. This asks what beats the room — and in a top-heavy tournament those are rarely the same lineup.
Opponent lineups are generated to hit the ownership you supplied, spending close to the cap the way real entries do. The field is a sample — your finishing rank is measured against it and then scaled to the real contest size.
Read this before you read the ROI column. If the simulated room is weaker than the room you are actually in, every ROI on this page is too high.
Default sort is EV (dupe-adj) with Top-10 tiebreak (I4 / Bible §3.4). Top-10 is literal places 1–10 (B5), not a cut of the field. EV (dupe-adj) divides each cashed prize by 1+E[dupes] — prior until ≥3 weeks standings (I5). ROI stays visible but is not the selection key. Proj is the sum of your projections. Mean differs from Proj because scoring is skewed. Dupes (field sample) is the expected number of other entries holding exactly this lineup.
Sample-winner % is how often a player appears in the highest-scoring sampled opponent. The difference from imported ownership is a model diagnostic, not an exact optimal-lineup rate or proven leverage.
Start with the best projected lineup. Then compare how much projection you give up for a different path to winning. Tap a candidate card or any dot to inspect the roster.
Set the entry count and paid places for each goal, using your actual contests. Presets are examples. The goal controls the axis and color; the comparison evaluates all four contests. Cash, 3× and 5× use flat prizes of 2×, 3× and 5× the entry fee.
Generate the pool first, then compare contests. The benchmark respects the salary floor, locks, exclusions and team limit. The comparison keeps candidates below the projection frontier so correlated upside remains eligible.
A 150-lineup pool is only worth building if it is a portfolio rather than 150 copies of one opinion. The grey mark on each bar is projected ownership, so a bar past the mark is where you are overweight the field.
The old cumulative-ownership frontier sweep has been retired from the Exposure sheet. Selection uses dupe-adjusted EV / literal Top-10 (Bible §3.4 / I4). The Lineup lab above explores contest fit; it is not that hull.
Build lineups in Solver to see how often each player appears across your lineup pool.
Every contest you have entered, and what it actually returned. Stored on this device only — nothing is sent anywhere.
DraftKings → My Contests → History → Export. The columns it writes are detected automatically; each row is one entry.
Rank contests by rake / payout shape (Bible §5) and map each to a generation preset (§4.1). Pull from lobby loads top contests for the slate draft group via toto; type by hand anytime. Nothing leaves this device.
Higher rank = better on rake / 10th÷1st / min-cash bands. Preset from mapPresetFull. Cells are hand-editable; Apply pushes the preset into Solver.
| Verdict | Rank | Contest | % filled | Preset | Rake | 10th÷1st | Min-cash |
|---|
Use Apply to push that contest's §4.1 preset into the Solver sheet. Edit buy-in / prizes inline or via the form above.
No contests scored yet.
Week 1+ receipts (Bible §9.1). Paste a GameCenter standings CSV; it stays in IndexedDB on this device only (I3). Entry names are hashed on ingest. Grades (§9.3) run below on whatever exists.
| Week | Key | Name | Entries | Imported |
|---|
Nothing stored yet.
Bible §9.1–9.3. Grades run on whatever exists; empty sections stay labelled prior (I5) until data lands.
The simulator does not assume how a quarterback and his receiver move together — it measures it. Every cell below is estimated from nflverse weekly stats, regular season only, scored under DraftKings rules including the 100/300-yard bonuses and the defence points-allowed tiers.
Weekly scores are converted to z-scores inside each player-season before correlating. Without that step the number would mostly measure which player is better, not how their outcomes move together in a game. Roles are assigned by season usage — targets for pass catchers, carries plus targets for backs — never by fantasy points, because ranking by the outcome would let the outcome pick the role and inflate the very correlation being measured.
Read the pairs that matter: a quarterback with his top receiver, a quarterback with the opposing quarterback (the shootout), and a defence with the quarterback it is facing.
Coefficient of variation — one week's standard deviation as a share of the average — by position and scoring level, from the same sample. Cheap players are wildly more volatile than expensive ones, which is most of why punt plays win tournaments and lose cash games.
Outside the estimated range the nearest band is reused rather than extrapolated. Skill positions are drawn lognormal so the mean is preserved and the tail is on the right side; defences are drawn normal, because a DraftKings defence can finish below zero and a lognormal cannot.
These are projections, not promises — and they are your projections. This tool has no opinion about how good a player is; feed it a bad number and it will optimise that bad number perfectly. The correlation structure is measured, but it is the league-average structure across seven seasons, not this specific game. Nothing here knows about news after you pasted your file, weather at kickoff, or a late inactive.
The simulated field is the weakest link. It is generated from your ownership estimate, and ownership is itself a guess; the room is also modelled as a sample of a few thousand lineups and extrapolated, so finishing positions deep in a large field are approximate. If the modelled field is softer than the real one — and a field built from ownership alone usually is — the ROI column reads high. The field-strength card on the Simulator sheet exists so you can check that rather than take it on faith.
There are no receipts here yet. This tool has not been run forward against a declared benchmark for a single week, so it sits in Labs and it stays in Labs until it has. Paid incumbents run $25–$200 a month and gate the simulator behind lineup-count caps; this being free is not evidence that it is better.