Lineup Science · DFS analytics by Good Labs
Contest & ROI Simulator
Put your lineups under pressure.
| Finish | Prize | × entry |
|---|
One CSV with projections, salaries and ownership. Column names are matched loosely —
DK Proj, DK Salary, Large Field, DK Floor and
DK Ceiling are all recognised, as are plain Proj, Salary and Own.
The simulated field is built to match these numbers within a few tenths of a percent. If ownership is wrong, every ROI on the results page is wrong with it.
| Player | Pos | Team | Opp | Salary | Sim Proj | Floor | Ceil | Sim Own | Val |
|---|
Drop in a lineup CSV. The Reactor reads the
DKEntries_upload.csv and formula_lineups_detailed.csv files
The Formula exports, a DraftKings entries export, or any file with nine player names per row.
Players are matched by name against the slate you loaded.
This does not use your lineups. It invents test lineups in a shape you pick — a quarterback plus two of his own pass catchers and one opponent, say — then races that shape against the others over the same field. It answers "should I single or double stack Burrow this week", which finished lineups cannot tell you. Skip it if you already know how you want to build.
Every number on the results page comes out of the five steps below. Where the model is approximating something, it says so — you should know which digits to trust.
A projection of 18.0 is the mean of a shifted-lognormal fitted so its 10th percentile lands on your Floor column and its 90th on your Ceiling. That's what makes a $2,900 tight end with a 19.9 ceiling behave differently from a $7,500 receiver with the same projection. With no floor/ceiling columns, position-typical spread is used instead.
Outcomes are drawn through a correlation matrix — a QB with his WR1 at +0.60, with his own RB1 at +0.13, against the opposing defense at −0.38, and two backs splitting one backfield at −0.28. The matrix is repaired to the nearest mathematically valid one before use, so the correlations you get back are the ones specified rather than a shrunken copy. Players in different games are independent.
Opponent lineups are generated against real stacking rates and then iteratively re-weighted until every player's simulated ownership matches your projection — typically inside 0.3 percentage points. They obey the salary cap and roster rules, and they leave the same amount of salary on the table that real entries do.
Every simulation scores your lineups and the whole field, ranks them, and pays the prize table. Because the simulated field is a sample, the finish position in the real contest is drawn from how many sampled opponents you beat, not scaled from your rank. That keeps win rates honest.
Compare lineups against each other, never against a target number. Top 1% is the most stable upside signal — in a large-field GPP, win rate is so rare that even 20,000 simulations can't measure it. If the tallest bar in a lineup's finish distribution is the Top 1% bar, that lineup is built for a tournament.