Machine learning models trained on every NFL play call the slate one snap at a time, 20,000 times over. Lineups are built from those sims and scored against them, so the stacks, correlations and high-EV plays come from the simulation, not from a rule.
Every player's ceiling, every in-game correlation, and every QB stack ranked by how often it is the best stack on the slate against how much the field owns it.
| SLOT | PLAYER | SAL | PROJ | P10 | P50 | P90 |
|---|---|---|---|---|---|---|
| {{ r.slot }} | {{ r.name }} {{ r.team }} | {{ r.sal }} | {{ r.proj }} | {{ r.p10 }} | {{ r.p50 }} | {{ r.p90 }} |
Projected points are a mean. Maximising a mean hands you the same lineup everyone else's optimizer produced from the same projections. It scores well on average, which is not what a top-heavy tournament pays for.
That share is p_top_1. It rewards lineups whose players rise together in the same sims, and a portfolio is built from lineups that win in different sims, so the 150 entries are not 150 copies of one opinion.
SlateBreaker supplies no projections and never connects to a DraftKings account. You export the slate's salary file yourself, add a Projection column, and upload it. Your numbers set every player's level; the simulation supplies the correlation structure your numbers cannot.
Stack and bring-back rules, exposure caps, salary floor, locks, fades, uniqueness, seed. There is no single Generate button. Every run shows how your choices changed the portfolio, and the same inputs with the same seed always return the same lineups.
Six steps. Each one has a diagram, a number, and the thing it cannot do. Every number on this page is drawn from the demo artifact loaded in the simulator, so you can check it there.
The simulation does not sample fantasy points. It samples football: drive starts, play calls, targets, yards, turnovers, clock. Those distributions come from the full play-by-play record, and the model is hierarchical, so each level conditions the one below it. One artifact is built per slate, checksummed, and shared by every user.
Independent projections say a QB scores 22 and his receiver scores 14. They cannot say that in the sims where the QB throws for 350, the receiver usually caught two of those touchdowns. Below: the same two players, drawn from the artifact, 1,200 of their 20,000 joint scenarios.
A stack's projected total is the same whether or not you believe in correlation. Its p_top_1 is not. The sims where the QB has his best day are the sims where the lineup needs him to, and in those sims the receiver shows up too. Summing projections cannot see that. Sampling sims can.
Each player's 20,000 draws are shifted so their mean equals your number. The transform is mean-preserving and rank-preserving, so the scenario-to-scenario dependence is untouched: two players who rise and fall together before re-anchoring still do afterwards. Drag the projection and watch the distribution move without changing its correlation.
Every candidate lineup is totalled in all 20,000 scenarios. p_top_1 is the share of those scenarios in which it finishes in the top 1% of the candidate pool. 20,000 draws is a sample, so the number carries a binomial standard error and the app shows it.
What it is not. It is not a win probability. It is not a rate against the real DraftKings field, which the model does not observe. Rates against a synthetic modeled field exist as a labelled secondary diagnostic and never as the headline.
The 150 lineups with the highest p_top_1 tend to be the same lineup with one player swapped. They win in the same sims and lose in the same sims. Greedy coverage picks each next lineup to win in sims the already-picked lineups lose, so the portfolio's covered-sim share keeps growing.
Duplicate risk is priced. A lineup thousands of other entrants will also submit splits its prize thousands of ways. Each candidate's coverage gain is discounted by its estimated duplicates, which needs ownership. Without an ownership column, that discount is off and the app says so.
| POS | PLAYER | SAL | PROJ | 3X | P10 – P90 · 0 to {{ rMax }} | ρ vs {{ fShort }} | |
|---|---|---|---|---|---|---|---|
| {{ g.hdr }} | |||||||
| {{ r.pos }} | {{ r.sal }} | {{ r.proj }} | {{ r.x3 }} | ||||
| STACK | SAL | PROJ | P90 | TOP-STACK % | AVG OWN | LEV |
|---|---|---|---|---|---|---|
| QB{{ r.qb }}+{{ r.cPos }}{{ r.c }}{{ r.team }} · ρ {{ r.rho }} | {{ r.sal }} | {{ r.proj }} | {{ r.p90 }} | {{ r.top }} | {{ r.own }} | {{ r.lev }} |
| SCRIPT | SIMS | {{ fShort }} MEAN |
|---|---|---|
| {{ r.l }} | {{ r.share }} | {{ r.mean }} |
Every plan gets the same 20,000-scenario simulation, the same simulator, and the same entries file. Plans differ on how many lineups you can export per slate and how many slates you can run each week.
Anything not covered here: hello@slatebreaker.app. Replies within a day, faster on Sundays.
| SLATE | RUN | LINEUPS | P_TOP_1 MED | SEED | |
|---|---|---|---|---|---|
| {{ r.slate }} | {{ r.when }} | {{ r.n }} | {{ r.p }} | {{ r.seed }} | {{ r.st }} |