I notice a divergence in my own code, but it's evident even in public code:


Pricing a vanilla option thusly shows large differences in instrument value:

::: BinomialTreeEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)


::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)


::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)


::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1.)


::: BinomialTreeEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=40)


::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=150, pathCount=10000)


::: MonteCarloEuropeanCallPrice(50., 50., 0.065, 0.7, 1., N=150, pathCount=10000)


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?


3 Answers 3


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].$$


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.



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.


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.4


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.