1
$\begingroup$

I was under the impression that simulations involving geometric brownian motion are not supposed to yield negative numbers. However, I was trying the following Monte Carlo simulation in R for a GBM, where my initial asset price is: $98.78$, $\mu = 0.208$, $\sigma = 0.824$. I initialized my dataframe as such: (I am just doing 1000 simulations over 5 years, simulating the price each year)

V = matrix(0, nrow = 1000, ncol = 6)
V_df = data.frame(V)

Then:

V[, 1] <- 98.78

I then perform the simulations (with $dt = 1$):

for (i in 1:1000) {
        for (j in 1:5) {
            V_df[i,j+1] <- V_df[i,j]*(mu*dt + sigma*sqrt(dt)*rnorm(1)) + V_df[i,j]
        }
    }    

When I then check $V_{df}$ there are many negative entries. Would anyone have an idea as to why this is so?

Thanks.

$\endgroup$
2
  • 1
    $\begingroup$ You're using an iteration scheme to simulate a GBM. Since you are taking discrete time steps instead of infinitesimal steps, there's always the possibility of rnorm(1) being sufficiently negative that it generates a negative value for your asset price. Just decrease the step size. $\endgroup$ Jun 16, 2018 at 4:47
  • 1
    $\begingroup$ A $\sigma$ value of 0.824 is pretty high, seems feasible that a discretized approximation might yield negative numbers. Change $\mu$ to 0.05 and $\sigma$ to 0.20 to see more reasonable numbers. $\endgroup$
    – user217285
    Jun 16, 2018 at 6:04

1 Answer 1

3
$\begingroup$

With such a large time step (annual), you would be far better off using the exact GBM solution rather than discretizing what is technically only valid in an infinitesimal sense.

So you'd use $V_{t_2} = V_{t_1} . e^{(\mu-\frac{\sigma^2}{2})(t_2-t_1)+\sigma(W_{t_2}-W_{t_1})}$

Where $W_{t_2}-W_{t_1} \sim N(mean=0,var=t_2-t_1)$

You would then have positive values only.

The downside is the exponential takes a little more time to calculate, but I assume that is a secondary concern here.

$\endgroup$

Your Answer

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

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