Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Machine learning and simulation

Monte Carlo Simulation

Estimates probabilities by simulating an event thousands of times with random numbers and counting the outcomes.

Beginnerpre-matchin-playstakingevaluation

In one sentence

Monte Carlo simulation plays out a match or betting season many thousands of times on a computer and reads probabilities off the share of outcomes.

How it works

Some probabilities are awkward to work out by hand: over 2.5 goals when each side's goals follow a model, more goals in the second half than the first, or your bank surviving 1,000 bets. Instead of solving the maths, you simulate it.

Give the computer the model's ingredients, such as each team's expected goals, and let it draw random scorelines again and again. After 100,000 runs, the fraction with three or more goals is your estimate of over 2.5.

The method is only as good as the model you feed it. Monte Carlo does not add information; it just does the arithmetic for you, with a small, measurable random error.

The maths

p^=1N∑i=1N1[event in run i]\hat{p} = \frac{1}{N} \sum_{i=1}^{N} \mathbf{1}[\text{event in run } i] SE(p^)=p^(1−p^)N\text{SE}(\hat{p}) = \sqrt{\frac{\hat{p}(1 - \hat{p})}{N}}
  • p-hat is the estimated probability.
  • N is the number of simulation runs.
  • The bold 1 is a counter that equals 1 when the event happens in a run and 0 when it does not.
  • SE is the standard error: the typical size of the simulation's random error.

In words: the probability is the share of runs where the event happened, and the error shrinks with the square root of the number of runs.

Worked betting example

A Poisson model gives the home side 1.6 expected goals and the away side 1.1.

  1. Simulate 100,000 matches, drawing each side's goals at random from its Poisson distribution.
  2. Result: 50.5% of simulated matches had three or more goals, and 48.7% were home wins.
  3. The exact Poisson calculation gives over 2.5 = 50.6% and home win = 49.0%, both within about two standard errors (roughly 0.16 points each) of the simulation.
  4. With only 1,000 runs the standard error would be about 1.6 points, too wide for pricing.

Fair odds for over 2.5 are 1 ÷ 0.506 ≈ 1.97.

  1. At 2.10 on Betfair, a £10 back wins £11: EV = 0.506 × £11 − 0.494 × £10 ≈ +£0.63, or about +£0.51 after 2% commission.
  2. At 1.95, EV after 2% commission is about −£0.23. No bet.

The simulation itself is not the edge; the 1.6 and 1.1 inputs are. If those are a little off, so is everything downstream.

Where it's good

  • Markets with no neat formula: Asian handicaps with extras, bet builders, player props, correct score grids with adjustments.
  • Season and tournament simulation: title, top-four and relegation odds.
  • In-play: simulating the rest of a football match from the current score and minute, for Correct Score and Second Half Goals prices.
  • Staking: estimating risk of ruin and likely drawdowns for a given strategy.
  • Stress-testing a model by varying its inputs to see how sensitive prices are.

Limitations and pitfalls

  • Garbage in, garbage out. A beautiful simulation of a miscalibrated model is still wrong.
  • Independence assumptions are baked in. Simulating goals as independent Poisson draws ignores the draw inflation and game-state effects that Dixon-Coles adjusts for.
  • Too few runs gives noisy prices. Check the standard error before trusting a small edge.
  • Parameter uncertainty is often ignored: 1.6 expected goals is itself an estimate. Simulating with fixed inputs understates how uncertain you should be.
  • Same-seed reuse across tests can create false confidence in comparisons; vary seeds or use common random numbers deliberately.
  • Tempting to tweak inputs until the simulated price matches your hunch. That is overfitting by hand.

How to build it

  • Python: numpy's random generator (vectorised draws), scipy.stats for distributions; R: base rpois, rbinom.
  • Data: a calibrated probability model for the underlying events.
  • Tip: where an exact answer exists, compute it and check your simulation matches before using simulation for the harder cases.
Learn it step by step
18+ only. Educational content, not financial or betting advice. Past results do not guarantee future returns. If gambling stops being fun, get free, confidential help at BeGambleAware.org.
Members