What Is Monte Carlo Simulation in DFS? Why Averages Lose Tournaments
Monte Carlo simulation in DFS runs your slate thousands of times with players drawn from full score distributions instead of single-point projections — revealing each lineup's ceiling, floor, and win probability rather than one misleading average.
Every projection you've ever seen is a compression. When a site tells you a player projects for 42.5 fantasy points, it has collapsed an entire probability distribution — the blowup games, the duds, the injury-shortened nights — into one number. That compression is convenient and, for tournament play, quietly ruinous. This guide explains what Monte Carlo simulation actually does with that distribution, why the mean is the wrong number to optimize in guaranteed prize pools (GPPs), and how iteration count changes what you can trust.
Averages are a cash-game tool wearing a GPP costume
Consider two players who both project for 40 points. Player A is a metronome: his real outcomes cluster between 34 and 46. Player B is volatile: plenty of 22-point duds, but a meaningful share of 65-point eruptions. A classic optimizer sees two identical 40s. A tournament sees two completely different assets — in a 100,000-entry GPP, Player A's 46-point best case is nearly worthless, while Player B's 65-point tail is exactly what first place is made of.
The math behind this is not exotic. A large-field GPP pays roughly the top 20% of entries, but the life-changing money sits in the top 0.01%. To finish there, your lineup doesn't need the highest expected value — it needs the highest probability of an extreme outcome. Those are different optimization targets, and only one of them is visible in a mean projection.
What one iteration actually does
A single Monte Carlo iteration is one alternate universe of the slate:
- For every player, draw one score from that player's distribution — not their projection, a random sample consistent with their range of real outcomes.
- Score every candidate lineup against those sampled outcomes.
- Record where each lineup finished.
Repeat ten thousand times and the bookkeeping becomes a distribution per lineup: how often it beat a target score, its 90th-percentile outcome (a realistic ceiling), its 10th-percentile outcome (a realistic floor), and how often it beat the other candidates. None of those numbers exist in a single-point projection.
According to DFS Simulator's engine design, the difference between a 500-iteration and a 50,000-iteration run isn't the average — means converge almost immediately — it's the tails: at 500 iterations, only ~25 samples land beyond the 95th percentile, versus ~2,500 at 50,000 iterations, which is the difference between guessing at a ceiling and measuring one.
How many iterations are enough?
The honest answer is: it depends on which number you want to trust. Some rough sampling arithmetic, using the fact that the count of samples in a tail follows a binomial distribution:
| Statistic | 500 iterations | 10,000 iterations | 50,000 iterations |
|---|---|---|---|
| Mean / median lineup score | Solid | Excellent | Excellent |
| 80th-percentile outcome | Usable (~100 tail samples) | Solid (~2,000) | Excellent (~10,000) |
| 95th-percentile ceiling | Noisy (~25 tail samples) | Usable (~500) | Solid (~2,500) |
| 99th-percentile GPP tail | Unreliable (~5 samples) | Noisy (~100) | Usable (~500) |
Sampling-theory arithmetic, not benchmarks: tail-sample counts are iterations × tail probability, and estimates sharpen roughly with the square root of that count. Real-world reliability also depends on how well the underlying player distributions are specified — no iteration budget rescues bad inputs.
This is why DFS Simulator's plans scale by iteration budget — 500 on Basic, 10,000 on Pro, 50,000 on Elite. Cash-game decisions stabilize quickly; tournament tail-hunting is where the extra iterations earn their cost.
Correlation: the part most simulators skip
Independent sampling — every player drawn separately — already beats point projections. But real slates are correlated: a quarterback's big game usually is his receivers' big game; a hockey line scores together; when an NBA game goes to overtime, everyone in it gets a minutes bump. Correlated multivariate simulation draws whole-game scripts rather than isolated player outcomes, which is the only honest way to price a stack. That deserves its own article — how stacking correlation wins GPPs covers the math.
Reading simulation output like a tournament player
- Ceiling (90th–99th percentile): your GPP number. Sort by it — the ordering will disagree with mean projections more than you expect.
- Floor (10th–20th percentile): your cash-game number. High-floor lineups sacrifice tail upside for consistency, which is exactly the right trade in double-ups.
- Win rate vs. your own candidates: when building a multi-entry portfolio, you want lineups whose simulated wins come in different universes — not 20 variations that all need the same game script.
The workflow in any supported sport is the same: pick a slate, adjust the projections you disagree with, lock or block players, run the sim, and read the distribution end that matches your contest type.