Diagnosing Time-Step Sensitivity in Monte Carlo Option Pricing
Summary
The discussion addresses why a Monte Carlo call-option price might change dramatically when the time increment is reduced. Its main diagnostic is to distinguish exact from approximate discretization: under an exact scheme, changing the step size should not alter the simulated model result; under an approximate scheme, finer steps should generally improve accuracy. A large unexpected shift therefore points toward a possible implementation or numerical problem rather than a general property of Monte Carlo simulation.
Suggested checks include verifying that every drift, volatility, and other model term scales correctly with the step size, and checking whether the random-number generator performs adequately as the number of increments grows. Floating-point precision is also raised as a possible issue, with a practical suggestion to compare individual calculations against manual results. The question does not specify the model or discretization, so the answers cannot identify the actual cause. No worked correction or general error bound is provided, and the floating-point explanation remains a possibility rather than a demonstrated diagnosis.
Key ideas
- An exact discretization should make the simulated result independent of the chosen time-step size.
- For an approximate discretization, reducing the step size should generally improve the approximation.
- Check that all terms in the simulation are scaled consistently with the time increment.
- A poor random-number generator may become a problem when simulations use many more steps.
- Floating-point rounding can be investigated by validating individual calculations independently.
Tags
Full text
# Why does changing the time step size in my Monte Carlo simulation change my result a lot? # Why does changing the time step size in my Monte Carlo simulation change my result a lot? I have written some software to price a call option using Monte Carlo simulation. It produces a price which is consistent with the model when I set the time step as recommended in a tutorial that I am following, which instructs to divide the expiration by 100. I decided to experiment with the time step size and noticed that if I make the time steps further smaller by a factor of 10, the simulation does not produce the correct answer anymore. In fact the answer is way out (answer should be 10.45 but changing the time step gives an answer of around 70). My question is whether this is expected behaviour from Monte Carlo simulations when the time step size is adjusted like this? If so, what is the theory behind this. It could also be that my implementation is wrong but I have followed Glasserman's book to letter in writing the software. ## Answer by Mark Joshi (score 2, accepted) https://quant.stackexchange.com/a/19568 You don't say anything about the model or discretization so it is a little hard to judge. However, if you are using an exact discretization, the time step-size should be irrelevant. If you are using an approximate one, the more steps you use, the more accurate it should get. Possible sources of error: 1) random number generator is not good enough and this only shows up if you use a lot of steps 2) some term is not scaling correctly with step size. ## Answer by BeckmaR (score 0) https://quant.stackexchange.com/a/19573 I don't have any background in financial simulations or the Monte Carlo Algorithm, and I do not know about the program you wrote, which language you used, your background in programming, et cetera. You might be observing some effects based on floating point numbers. If you make the step size smaller, the result of some multiplication will be smaller. You will most likely add that to some existing result, and you could lose precision in that step. Basically, adding a very very small number to a bigger number can cancel out the smaller number. Because the exponent of both numbers needs to be the same, the numbers will be shifted before the addition. After the addition, the result gets shifted again, and the very small part might be shifted away. Look up floating point addition and go through your code to clarify if this is the case. You can also try to debug the code and calculate single steps with a calculator and compare that to your computer's result.
Shown 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.