Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question

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

share|improve this answer

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.

share|improve this answer

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

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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