Avoiding Euler Bias in Monte Carlo Option Pricing
Summary
The document investigates why a Monte Carlo estimate for a European call differs from a binomial-tree value. The accepted explanation identifies the simulation’s use of first-order Euler steps for geometric Brownian motion as a source of bias, especially at high volatility. Instead of repeatedly applying an additive approximation to the asset price, it recommends simulating each step with the exact lognormal transition, or drawing the terminal asset price directly from its closed-form distribution. The comparison with the Black–Scholes benchmark supports the diagnosis for the example discussed.
The answers also suggest antithetic and control variates to reduce simulation variability. These methods address estimator variance rather than correcting a flawed price evolution scheme. The document does not provide a general convergence study, and its numerical comparison depends on the implementation and simulation settings. Its practical lesson is to distinguish discretization bias from Monte Carlo sampling error before attributing price differences to slow convergence.
Key ideas
- Euler discretization can bias simulated asset prices when modeling geometric Brownian motion, particularly at high volatility.
- Exact lognormal time steps avoid the first-order approximation error for geometric Brownian motion.
- For a European payoff, the terminal asset price can be sampled directly from its distribution.
- Antithetic and control variates can reduce simulation variance but do not fix an incorrect transition model.
- Compare Monte Carlo estimates with an analytical benchmark to diagnose pricing discrepancies.
Tags
Full text
# Divergence between binomial pricing and monte carlo simulation for vanilla european call?
# Divergence between binomial pricing and monte carlo simulation for vanilla european call?
I notice a divergence in my own code, but it's evident even in public code:
http://www.thalesians.com/finance/index.php/Knowledge_Base/Finance/Option_Pricing_in_Python_and_Simple_English
Pricing a vanilla option thusly shows large differences in instrument value:
::: BinomialTreeEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)
14.770372341296639
::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)
15.790992991711446
::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)
15.708282373460175
::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)
16.329354195310856
::: BinomialTreeEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=40)
14.797836571920467
::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=150, pathCount=10000)
15.465674502595983
::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=150, pathCount=10000)
15.716431314886879
Even with sd ~ 40, the standard error on the monte carlo is ~ 0.4, so the price difference is over 2 se away. Is MC convergence truly that slow? Or is the step size just too large causing an upward bias?
## Answer by RRL (score 4)
https://quant.stackexchange.com/a/12945
The Black-Scholes price of this option is approximately $14.8$. When I run a Monte Carlo simulation with $10000$ paths and "exact" time stepping, I get results very close to this value.
You are simulating the terminal asset price with the first-order Euler approximation over multiple time steps:
$$S(t+\Delta t)= S(t) + rS(t)\Delta t + \sigma S(t)\sqrt{\Delta t}\xi,$$
where $\xi \sim N(0,1).$
This will lead to an inaccurate simulation for high volatility (eg. $70\%).$
The exact solution for geometric Brownian motion over a time step is
$$S(t+\Delta t)= S(t)\exp[(r-\sigma^2/2)\Delta t]\exp[\sigma\sqrt{\Delta t}\xi].$$
With a low-order time stepping scheme you are introducing an upward bias. Either use the exact solution over the time step, or a higher-order numerical method for the SDE, or simply simulate the terminal asset price in one step as as
$$S(T)= S(0)\exp[(r-\sigma^2/2)T]\exp[\sigma\sqrt{T}\xi].$$
## Answer by FreshF (score 1)
https://quant.stackexchange.com/a/12956
You can also include variance reduction techniques in you monte carlo simulations, such as control variates or antithetic variates. Both aim at reducing the variability of your simulated option price and are very popular for monte carlo simulations.
http://en.wikipedia.org/wiki/Antithetic_variates
http://en.wikipedia.org/wiki/Control_variates
Both are very simple to implement, especially antithetic variates which correspond to a second path for your underlying with negatively correlated random numbers to the first path.
Antithetic variates usually work very well and should reduce the variability of your results substantially. Control variates depend on the design of your valuation model and the payoff structure of the derivative. You can also combine both.
The book by Glasserman about Monte Carlo Techniques in Financial Engineering gives some excellent guidance.
## Answer by Lucas Morin (score -1)
https://quant.stackexchange.com/a/12997
I would bet on the slowness on Monte carlo method. Your volatlity is quite high. The error would decrease as var/sqrt(pathcount)= var *0.01, where var is the variance of the final price. 50*0.7*0.01=0.35 ~ 0.4Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.