Fantasy Football · Monte Carlo Simulation

Finding Edges in the Fantasy Draft

Five seasons of historical average draft position (ADP), actual scoring, and simulated draft rooms reveal where draft-position leverage comes from and why paths may matter more than tiers.

Problem

For about a year, I kept coming back to one fantasy football question: are certain draft positions structurally better than others?

I looked around and couldn’t find a dataset or tool that answered the question the way I wanted. Most fantasy draft analysis focuses on rankings, tiers, or individual player values instead of looking at how your own starting position might impact what draft options are available to you.

So, I built my own simulator.

Methodology

How do you create a dataset where none exists? For me, the answer was Monte Carlo simulation.

Using historical ADP and actual season results, I built a Python simulator that approximates fantasy draft rooms before the season, then evaluates how those drafted teams would have performed using real historical scoring. The simulator is agnostic to league size and scoring format. However, results here focus on 12-team half-point per reception (half-PPR).

At a high level, the simulator uses bot drafters following a snake format with defined strategy rules. Position abbreviations used throughout are running back (RB), wide receiver (WR), quarterback (QB), and tight end (TE).

  1. Each bot is assigned a strategy that dictates the positions it targets in the early rounds. For example, a WR Heavy strategy starts WR-WR-RB-WR.
  2. Bots can break strategy if a player falls meaningfully past ADP. In my model, this happens at randomized override thresholds, typically 5 or 9 picks past ADP.
  3. After Round 4, bots fill roster needs unless another major ADP value falls, in which case they can add that player to the bench.
  4. Bench spots are filled after starters, with kicker and defense selected last.

After each completed draft, the simulator aggregates season points for each team’s starting lineup, identifies the winner and top three teams, and stores corresponding metadata such as draft strategy and draft position for analysis.

The historical dataset spans 2021-2025. Each season includes 15,000 complete 12-team simulated drafts, or 180,000 simulated teams. Across the five-year historical sample, that totals 75,000 drafts and 900,000 simulated teams. For consistency with fantasy playoff timing, Week 18 is excluded from season totals.

Key assumptions

Modeling choiceImplementationRationale
InjuriesNo replacement scoring when a drafted player misses timePreserves durability as part of the value of the original draft pick without assuming waiver behavior
Bye weeksNo replacement scoringEvery player has a bye, so the effect is broadly distributed across teams
Waivers / bench managementNot modeledKeeps the analysis focused on roster quality created on draft day rather than assumptions about manager skill
Fantasy playoffsSeason-long points determine winners and Top 3Avoids layering a few weeks of high playoff variance onto the draft analysis
Week 18ExcludedBetter reflects the typical fantasy-football season
Projection uncertaintyNo additional random variance added to projectionsProjections are already uncertain; current-year outputs are interpreted directionally rather than as precise forecasts

These are deliberate simplifications. The simulator is not intended to recreate every aspect of a managed fantasy season. Instead, it isolates the quality of the roster created on draft day while minimizing assumptions about injuries, waiver decisions, lineup management, and playoff variance.

Results

Let's start with the question that inspired this project: Are certain draft positions advantaged in snake draft leagues?

Win rate by starting draft position: Overall

Draft order remains fixed from pick 1 through pick 12

Note: The y-axis rescales by season so within-season differences remain visible. Exact percentages are labeled above each bar.

The model shows Position 1 has a slight advantage, followed by a dip through the middle and a recovery toward the end. However, when a game-breaking asset like CMC is the 1.01 we see something remarkable in 2023.

2023 is the extreme case. Draft slots 1 and 2 accounted for 58.9% of simulated first-place finishes, with slot 1 alone winning 40.0%.

Since the first two positions had access to CMC they dominated the win equity of the season accounting for roughly 60% of all first-place finishes. Looking forward, we can use this information to make the case that when there’s a potentially monster player at the 1.01, they’re disproportionately valuable. Maybe the lesson here is that auction drafts are fairer and avoid edge cases like this one.

The opposite pattern emerges when high-ADP picks fail to reach expectations. Fantasy is noisy year to year, so looking both in aggregate and at individual seasons can help us understand when draft position matters and what kind of draft environment might create leverage.

Draft Strategy Results

Not all strategies are created equal. Maybe that’s obvious, but it’s nonetheless important to state. Looking in aggregate, the results are as follows for 12-team half-PPR.

Historical win rate by draft strategy: Overall

12-team half-PPR · strategies sorted by win rate within each view

Dashed line marks the 8.3% baseline win probability in a 12-team league. Bar labels show exact simulated win rates.

Strategy definitions
StrategyRounds 1-4Eligible draft slots
BalancedRB · WR · RB · WRAll
my StratRB · RB · QB · WRAll
Flex my StratRB · Open · QB · WRAll
Hero RBRB · WR · WR · WR1-8
Early QBRB · QB · Open · OpenAll
Early TEOpen · TE · WR · RB4-12
WR HeavyWR · WR · RB · WRAll
RB HeavyRB · RB · WR · RBAll
Best ADPOpen · Open · Open · OpenAll
WR BalancedWR · RB · WR · RBAll

Open means no position is forced in that round. The bot generally selects the best player available by ADP.

Early in development, ahead of the 2025 season, I noticed that RB-starting paths were performing well. I had also analyzed quarterbacks taken by Round 3 and found a conditional edge when those picks turned into elite QB outcomes. I combined those two ideas into a custom strategy I labeled my Strat, defined as RB-RB-QB-WR.

When I reran the historical simulations this year, most broad strategies clustered near the baseline win rate. The clearest exception was my Strat, which posted the highest overall win rate of any strategy tested at 10.0% across 2021-2025. What stands out isn't just the aggregate number, but the shape behind it. In its weaker years from 2021-2023, it finished mid-pack at 5th-6th of 10 strategies. In 2024 and 2025, it jumped to 2nd of 10 with win rates above 11%.

I devised the strategy using patterns mostly from the 2024 data, so 2025 provides the one genuine out-of-sample test.

An encouraging result no doubt, but it also points to a larger lesson: strategy labels only get you so far. The real value comes from inspecting the paths underneath the results.

Paths, Not Tiers

I think one of the more interesting findings from the project is moving from tier-based drafting systems toward what I call path analysis.

In traditional tier systems, a tier can tell you that several players are valued similarly in isolation. But drafts are sequential, and picks create consequences in later rounds. With tiers, it’s difficult to quantify those tradeoffs. In the simulation, positional cliffs instead emerge naturally through differences in total roster scoring.

I’d summarize the main issues with tier-based systems as:

  1. Traditional analysis often evaluates players at the pick level instead of the draft-path level. If I take an RB in Round 1, then RB and WR may not have equal value to me in Round 2, even if they sit in a similar overall tier.
  2. It often assumes equal access to players across a round. But your draft slot determines which players are realistically available. The options at pick 6 are not the same as the options at pick 12, even if both are technically “Tier 2.”

The simulator helps create reasonable paths instead of tiers as it creates data about what the bots had access to and which rosters performed best.

From my draft slot, which players realistically fall to me, and what roster paths do they create among top-three teams?

That is where the model became most useful. I could filter by draft position, strategy, or outcome and inspect the players that repeatedly appeared on top rosters. In other words, the tool moved the question from who is the best pick? to what path am I building through the draft?

This type of analysis becomes most useful once I have decided on a core strategy and know my draft position. For example, using 2026 projections, suppose I am drafting from position three and want to test an RB-heavy start: RB-RB-WR-RB. Instead of looking at a generic Round 3 WR tier, I can filter the simulation to that draft slot, that strategy, and successful teams to see which receivers actually appeared on strong roster paths.

Successful RB-Heavy Draft Paths from Pick 3

Most common Round 3 wide receivers among top-three simulated teams

Player ADP Frequency Projected Points Projected Skill Position Points
Rashee Rice275212241,610
Chris Olave241502101,592
Tetairoa McMillan283351941,595
DeVonta Smith291221931,598
Tee Higgins30221861,593
George Pickens2042111,590
Malik Nabers3431981,580
Zay Flowers3612021,574

Projected Skill Position Points are projected team points from QB, RB, WR, TE, and FLEX, excluding kicker and defense.

In this view, the third-round WR options are not theoretical. They are the players the bots realistically saw at pick 29 inside successful RB-heavy builds. Rashee Rice and Chris Olave stand out as useful targets. They both appear often enough, fit the pick range, and keep the broader roster path intact.

That is the practical value of the simulator. It does not just tell me which players project well. It helps me enter a draft with a small set of realistic paths: if I start RB-RB, these are the WR pockets I should be watching; if those players are gone, I know the path is changing.

Lastly, this is where user discretion matters. These projections are not randomized, and I use the outputs directionally rather than literally. The goal is not to declare that one player is objectively correct because the table says so. Instead, we can narrow the research problem. Instead of evaluating an entire tier of 20 names, I now have two or three realistic targets to study within a specific draft path.

Further Use Case: Early QB

One of the perennial debates in fantasy football is the early vs. late QB problem. Using the historical simulation results, we can quantify a few key probabilities and use conditionals to frame the decision.

Elite QB: A QB who scores 330+ points through the 17-week fantasy season. This output corresponds to roughly the top 10% of QBs in the historical data.

Early QB: A QB drafted by the end of Round 3, or mathematically, ADP ≤ 36.

Early QB and Elite QB Outcomes

Historical conditional probabilities from the simulated teams

P(elite QB | early QB)56%
P(elite QB | late QB)15%
P(win | elite QB)16%
P(win | non-elite QB)5%
(0.56 − 0.15) × (0.16 − 0.05) = 0.045 ≈ +4.5 percentage points

Combining those probabilities implies an expected lift of roughly 4.5 percentage points in win equity from the increased chance of landing an elite QB. However, when we look at the actual historical teams, those with QBs drafted in the top three rounds produced a smaller observed edge of +1.7 percentage points. That gap matters. It likely reflects the opportunity cost of passing on other elite players.

This leverage may seem modest on the surface, but even a modest edge can be valuable, especially when it compounds with other strong decisions.

Of course, not every year has a strong early-QB hit rate. In 2025, there were four reasonable early elite-QB targets by ADP: Lamar Jackson, Josh Allen, Jayden Daniels, and Jalen Hurts. Only Allen broke 330. Future years may move closer to the longer-run 56% benchmark, but 2025 is a useful reminder that the strategy depends on the quality of the early-QB pool.

There is also one glaring outlier in the data: Josh Allen. He has never missed this threshold, scoring between 375 and 394 points in each of the last five seasons. Historically, if we apply the same exercise to Allen, teams that draft him had an edge of +6 percentage points in win equity.

This year, the case for Allen looks even more extreme. Depending on the projection source, Allen projects for around 370 points, while the next tier of quarterbacks, Drake Maye and Lamar Jackson, project closer to 320-340. Combined with Allen’s edge in the simulation, the model makes a strong case that if he falls to you at the right draft slot, he’s difficult to pass up.

Conclusions

Fantasy is a cruel and noisy game. Even the most “accurate” predictions will miss key injuries, busts, and breakouts. This project can’t eliminate that uncertainty. Instead, it helps narrow the decision space by combining historical analysis with current player projections.

If nothing else, it’s been fun to put the model to the test. Last year, after integrating the simulator into my draft prep, I took Josh Allen in three leagues and started the first round with Bijan Robinson, Christian McCaffrey, and Saquon Barkley. I won one league, lost in the finals in another, and busted out in the third.

Three leagues obviously prove very little. But that’s also the point: the simulator can’t tell me who will get hurt or which preseason projection will be wrong. What it can do is help me understand the tradeoffs, identify historically valuable paths, and walk into a draft with a much smaller and more informed set of decisions to make. In a game this noisy, I’ll take that edge.