Hi all! I have a question regarding the accuracy of Monte-Carlo simulations for option pricing. I have used the following VBA code to price a plain-vanilla European call option, and then compared the result to the output from the Black-Scholes formula. When I set the time to expiration to 3 years, the simulation result agreed with the analytical value. However, when I set the time to expiration to 8 years, the simulation result was far off from the analytical value. 100,000 iterations were used for the simulations. Could this be an issue with the random number generator provided by VBA? Please let me know if you have any insight into this issue. Thanks, Joe.
'Simulation Parameters (dt = 1/252)
nudt = (rfr - div - 0.5 * sig ^ 2) * dt
sigsdt = sig * Sqr(dt)
'Simulation begins
For i = 1 To sim
St = S0
For j = 1 To Round((T / dt), 0)
z = norm_rnd 'from box-muller
St = St * Exp(nudt + sigsdt * z)
Next j
payoff = comp_max(St - K, 0)
cum_payoff = cum_payoff + payoff * Exp(-rfr * T)
Next i
Worksheets("Sheet1").Range("B10").Value = cum_payoff / sim
'Simulation Parameters (dt = 1/252)
nudt = (rfr - div - 0.5 * sig ^ 2) * dt
sigsdt = sig * Sqr(dt)
'Simulation begins
For i = 1 To sim
St = S0
For j = 1 To Round((T / dt), 0)
z = norm_rnd 'from box-muller
St = St * Exp(nudt + sigsdt * z)
Next j
payoff = comp_max(St - K, 0)
cum_payoff = cum_payoff + payoff * Exp(-rfr * T)
Next i
Worksheets("Sheet1").Range("B10").Value = cum_payoff / sim