DFS lineup simulator: how contest simulation works
An optimizer tells you the highest-projected lineup on paper. A simulator tells you what actually happens when that lineup plays out thousands of times against a real contest field. The difference between the two is the difference between "this looks good" and "here's how often this cashes, how often it wins, and how many other entries split the same outcome." This is a plain walkthrough of how contest simulation works and how to read the numbers it produces.
Want to see it on a real build? RadarPulse's Sim Lab runs your optimizer output through a seeded Monte Carlo contest sim and grades every lineup with a plain-English reason why it wins or loses.
Try RadarPulse free →Why a projection alone isn't the same as an edge
Every DFS site publishes projections, and every optimizer builds the highest-projected legal lineup it can find under the salary cap. That step is necessary but it stops well short of answering the question that actually determines whether a lineup is good: how does this lineup perform across the range of ways the slate could unfold, against the field it will actually face?
A projection is a single number, usually the median or expected outcome. It says nothing about how wide the range around that number is, whether your best players tend to boom and bust together or independently, or how many other entries in a 50,000-person tournament built something close to identical to what you just submitted. A simulator answers all three by running the contest, not once, but thousands of times.
Step one: sampling a range, not a single number
Instead of giving each rostered player one fixed score, a simulator samples a score for every player from a distribution built around a floor, a median projection, and a ceiling. A running back projected for 14 points might have a realistic floor near 6 (a quiet game capped by game script) and a ceiling near 28 (a multi-touchdown breakout). Sampling from that range, rather than locking in 14 every time, is what lets the simulation capture boom-and-bust outcomes instead of flattening every player into their average game.
This step alone changes how two players with an identical median projection can look completely different once simulated. A high-floor, low-ceiling veteran and a volatile boom-or-bust rookie can share the same 16-point projection while producing very different Win% and Top-10% numbers once their real variance is modeled, because a tournament is won in the tail of the distribution, not at the median.
Step two: correlation, so stacks behave like stacks
Players on the same team do not perform independently of each other. A quarterback throwing for 350 yards and three touchdowns almost certainly means his top two receivers also had good games; a team that gets blown out early and abandons the run usually means the running back's ceiling outcome did not happen. A simulator that samples every player as if his outcome were unrelated to his teammates will systematically underrate the payoff of a genuine stack and overrate the safety of rostering players who are secretly correlated with each other through the same game script.
A correctly built simulator applies a shared team factor to every sample: a single random draw per team that pushes every one of that team's rostered players up or down together, layered on top of each player's own individual variance. That single addition is what makes a QB-WR stack show a meaningfully higher ceiling in the simulation than the same two players' individual projections would suggest on paper, and it's the reason "which players are correlated with each other" matters as much as "which players have the highest projection" once you're building for a large tournament rather than a cash game.
Step three: modeling the field you're actually playing against
Your lineup's score only matters relative to the rest of the field's scores. A simulator builds a model field of thousands of entries, each one also sampled from the same player pool, weighted toward the players the public actually rosters heavily. A stud running back projected for 22 points at 45% ownership will show up in roughly half of the simulated field's lineups; a moderately-projected value play at 3% ownership will show up in almost none of them.
How chalky that modeled field is should change with the contest type. A cash game or 50/50 field concentrates hard around the week's most popular, safest plays, because most entrants are simply trying to beat half the field, not distinguish themselves from it. A single-entry tournament field is somewhat less concentrated. A massive-field GPP is the most spread out of the three, because differentiation is the whole point of that format. A simulator that uses one flat field model for every contest type will misprice exactly the tournaments where the field's ownership shape matters most.
Reading the output: Win%, Top-10%, Cash%, Sim ROI, and duplicates
Once the simulator has run a few thousand trials, each one sampling every player and scoring the whole modeled field, it reports back a set of numbers for every lineup you tested. Here's what each one actually means.
- Win% is the share of simulated contests your lineup finished first in. In any field larger than a few hundred entries this number is small for every single lineup, often well under 1%, because someone has to win and it's rarely the same build twice.
- Top-10% is the share of simulations landing in the top decile of the field. This is usually the more useful number for large-field tournaments, since it captures "does this lineup have a real path to a meaningful payout" without requiring the single best outcome in the whole slate.
- Cash% is the share of simulations that cleared that specific contest's payout line. This number moves a lot based on contest structure alone: a 50/50 or double-up pays roughly the top 44% of entries, so Cash% there tracks something close to "beat the field median." A large top-heavy GPP might only pay the top 15-20%, so the same lineup can show a dramatically lower Cash% purely because of the payout structure, not because the lineup itself changed.
- Sim ROI applies the contest's real payout curve to every simulated finish and averages the result, expressed as a percentage of entry cost. A Sim ROI near 0% means the lineup roughly breaks even against the field over the long run; consistently positive Sim ROI averaged across a full slate of entries, not any one lineup, is the real target, since tournament variance means most individual GPP lineups run negative even in a genuinely good process.
- Duplicate risk estimates how many other field entries likely built the same combination of your highest-owned players, computed from the product of each rostered player's projected ownership. A lineup built entirely from the week's most popular plays can carry a high Cash% while also carrying heavy expected duplicates, meaning that on the nights it does hit, the payout gets split many ways.
Cash games vs. tournaments: the simulation changes, not just the strategy
The advice "build safe for cash, build differentiated for GPPs" is common, but a simulator shows precisely why, rather than asking you to take it on faith. In a cash-game simulation, the field model concentrates hard around the safest, highest-floor plays, and the payout line sits near the median, so a lineup's Cash% is maximized by minimizing variance and simply beating the average outcome. Chasing a boom-or-bust ceiling play in a cash lineup shows up in the simulation as a lower Cash%, even if that same play would raise Top-10% in a tournament, because a single bust game can drag the whole lineup below the 50th percentile.
In a large-field GPP simulation, the payout structure rewards only the extreme right tail, so a lineup built purely to maximize Cash% (minimize variance, chase the safest median outcome) will often show a mediocre Sim ROI, because it has no realistic path to Top-10%, while a more volatile, correlated, lower-owned build shows a lower Cash% but a meaningfully higher Sim ROI, because when it does hit, it hits big and doesn't split the payout with half the field. Simulating both contest types side by side on the same slate is usually the fastest way to internalize why the two formats call for genuinely different lineup construction, not just different levels of caution.
Common mistakes a simulator exposes
Optimizing purely for projected points. The highest-projected legal lineup on a given slate is very often also one of the most heavily-owned, because everyone's optimizer is looking at the same projections. Simulated against a realistic field, it can show a perfectly reasonable Cash% alongside a mediocre Top-10% and heavy duplicate risk, since it has little room to separate from the pack when it hits.
Ignoring correlation entirely. A lineup built from eight players across eight different, unrelated games has a narrower realistic range of team-driven boom outcomes than a lineup with one real stack, even if the eight-players-eight-teams build has a slightly higher combined median projection. The stack's simulated ceiling is usually meaningfully higher once the shared team variance is modeled correctly.
Treating a single lineup's numbers as the goal. Tournament variance is large enough that almost no individual GPP lineup, even a genuinely well-built one, will show a positive result in most single simulated contests. The number that should trend positive is the average Sim ROI across your full portfolio of entries over time, not the outcome of any one lineup on any one night.
Skipping the re-roll. A simulation is a sample, not a guarantee, and a single run can make a good lineup look mediocre or a mediocre lineup look great purely from randomness in that particular batch of trials. Running the same lineup through a fresh seeded simulation and checking whether the grade holds is a fast sanity check before trusting any single result.
How RadarPulse's Sim Lab implements this
The Sim Lab inside RadarPulse's DFS Studio runs exactly this process on your own optimizer output: every player is sampled from a floor-median-ceiling range with a shared same-team correlation factor, a modeled field is drawn from projected ownership at a concentration that shifts with your contest profile (cash, single-entry, or GPP), and every lineup in your build comes back graded S through C with its Win%, Top-10%, Cash%, Sim ROI, and expected duplicates, plus a plain-English line explaining why it landed where it did, not just the number. Runs are seeded, so the same seed always reproduces the same result, and a one-tap re-roll draws a fresh simulation when you want a second read. It's modeled and educational, the same honest framing as any simulation tool, but it's real math you can rerun and check, not a black box.
Frequently asked questions
What does a DFS lineup simulator actually do?
It runs a contest thousands of times instead of once: sampling every player's score from a range rather than one fixed projection, modeling how the field likely built its lineups, and recording where your build finished each time to produce Win%, Top-10%, Cash%, and Sim ROI.
Why isn't a single projection enough?
A median projection hides the range around it. Two players can share a projection while one has a tight range and the other swings wildly; optimizing on the median alone treats them as identical, which a simulator corrects for by sampling a full range instead.
What's the difference between Win%, Top-10% and Cash%?
Win% is finishing first. Top-10% is landing in the field's top decile, usually the more useful GPP number. Cash% is clearing that specific contest's payout line, which moves a lot with contest structure alone (roughly top 44% in a 50/50, top 15-20% in a large GPP).
What is a good Sim ROI?
Near 0% means the lineup roughly breaks even against the modeled field. The real target is positive Sim ROI averaged across your full portfolio over time, not any single lineup, since tournament variance means most individual GPP entries run negative even in a sound process.
Simulate your own build before you enter
RadarPulse's Sim Lab grades every lineup in your DFS Studio build with Win%, Top-10%, Cash%, Sim ROI and a plain-English reason why. Free to try on Basic.
Open RadarPulse →