One of the most common questions we get about PropEdge is how our projection model actually works under the hood. The short answer is that we use a combination of Normal CDF probability estimation and Monte Carlo simulation to project player performance. This article dives deep into the Monte Carlo side of that equation.
What is Monte Carlo Simulation?
Monte Carlo simulation is a technique where you use random sampling to estimate the probability of different outcomes. It is named after the Monte Carlo casino in Monaco because the core idea involves running thousands of random trials, similar to spinning a roulette wheel thousands of times to see what happens.
In the context of player props, Monte Carlo simulation means taking a player's historical performance data, generating thousands of simulated game outcomes based on that data, and then counting what percentage of those simulations result in the player going OVER or UNDER a given line.
The beauty of Monte Carlo is that it naturally captures the full shape of a player's performance distribution, including skewness, fat tails, and multi-modal patterns that simple averages miss entirely.
Why Simple Averages Fail
Consider a player who scores 25 points per game on average. Their line is set at 24.5 points. A naive analysis would say this player goes OVER more than 50% of the time because the average is above the line.
But averages are misleading. Here is why:
Suppose this player has scored 25, 14, 31, 28, 8, 35, 30, 22, 27, 30 in his last 10 games. The average is 25.0, but notice the two very low games (14 and 8). Those games might have been back-to-backs, games where the player got in foul trouble early, or blowouts where the starters were pulled.
A simple average treats the 8-point game and the 35-point game as equally likely to happen again. Monte Carlo simulation, combined with exponential decay weighting, does not make this mistake.
How PropEdge Implements Monte Carlo
Here is the step-by-step process our model follows:
Step 1: Gather Game Log Data
We pull each player's game log from ESPN going back through the current season. For a mid-season NBA player, this typically means 50 to 70 games of data. We extract the specific stat we are projecting (points, rebounds, assists, etc.) along with minutes played for each game.
Step 2: Apply Exponential Decay Weighting
Recent games matter more than games from three months ago. We apply an exponential decay function where the most recent game gets a weight of 1.0 and each earlier game gets exponentially less weight. The decay rate is tuned so that games from 20+ appearances ago still contribute but do not dominate.
This means if a player has been on a hot streak over the last 5 games, the simulation will reflect that increased probability. Conversely, if a player has been slumping, the simulation captures that too.
Step 3: Run 10,000 Weighted Simulations
The simulation draws 10,000 random samples from the player's game log, weighted by the exponential decay function. Each sample represents one possible outcome for the upcoming game.
For each simulation, we record the stat value. After all 10,000 runs complete, we have a full probability distribution of possible outcomes.
Step 4: Calculate Win Probability
Once we have 10,000 simulated outcomes, calculating the OVER probability is straightforward: count how many simulations exceeded the line and divide by 10,000.
If 6,840 out of 10,000 simulations resulted in a points total above 24.5, the Monte Carlo win probability is 68.4%.
Step 5: Extract Additional Metrics
Beyond the win probability, we extract several other useful metrics from the simulation:
- Median — the 50th percentile outcome, which is often more reliable than the mean for skewed distributions
- P25 and P75 — the 25th and 75th percentile outcomes, giving you a sense of the likely range
- Floor — the 5th percentile, representing the worst realistic outcome
- Blowup probability — the chance of a catastrophically low outcome (DNP, injury, blowout)
Monte Carlo vs Normal CDF
PropEdge uses both Monte Carlo simulation and Normal CDF (cumulative distribution function) probability estimation. These two methods complement each other.
Normal CDF assumes the player's performance follows a normal (bell curve) distribution. It calculates the probability of exceeding a line based on the weighted mean and standard deviation. This is fast to compute and works well for players with symmetric performance distributions.
Monte Carlo makes no assumptions about the shape of the distribution. It captures skewness, bimodality, and heavy tails that Normal CDF cannot. However, it requires more computation (10,000 random samples per prop).
When both methods agree, the signal is strong. When they disagree, it often means the player's distribution is not normal. A player who usually scores around 20 points but occasionally explodes for 40 will have a right-skewed distribution. Normal CDF might underestimate the OVER probability because the skew means the median is below the mean, but Monte Carlo captures this correctly.
PropEdge flags these disagreements as "model disagreement" and adjusts accordingly.
Real-World Impact on Pick Quality
When we added Monte Carlo simulation to our model, we saw measurable improvements in pick quality:
Better calibration on low-volume stats. Stats like blocks and steals have very non-normal distributions. A player who averages 1.2 blocks per game might have a distribution heavily concentrated at 0, 1, and 2 with occasional 4+ games. Normal CDF handles this poorly. Monte Carlo handles it well.
Improved blowout detection. By looking at the simulation floor (5th percentile), we can flag players who have a high probability of a disastrous game. If the floor is 0 or near 0 for an OVER pick, that is a warning sign.
More accurate Goblin and Demon picks. PrizePicks Goblin (OVER only, 66.7% breakeven) and Demon (OVER only, 44.7% breakeven) picks require different probability thresholds. Monte Carlo gives us more precise probability estimates at these specific thresholds.
How to Use This Data
If you are using the PropEdge API (Data tier), every projection includes Monte Carlo output:
{
"sim_win_prob": 68.4,
"sim_median": 26.0,
"sim_p25": 21.0,
"sim_p75": 30.0
}
You can use sim_win_prob as your primary probability estimate and cross-reference it with model_prob (the Normal CDF estimate). When both are high, the pick has strong statistical backing. When they diverge, investigate why before committing.
The sim_p25 to sim_p75 range gives you the interquartile range. A narrow range means the player is consistent. A wide range means high variance, which might make you want to size your bet differently.
The Bottom Line
Monte Carlo simulation is not a crystal ball. No model can predict the future with certainty. What it does is give you a rigorous, data-driven estimate of probabilities that accounts for the full complexity of real player performance data.
When you combine Monte Carlo with Normal CDF, exponential decay weighting, matchup adjustments, and multi-source signal validation, you get a projection model that consistently identifies mispriced lines. That is what PropEdge does every day, automatically.