mcs_full_vector_numpy.py does not converge to the true price.
joelowj opened this issue · 2 comments
Hi @yhilpisch,
Thank you for the great work as an undergraduate student I have learn a lot from your book!
Example 3-4 code which estimates the theoretical value of a European call option via Monte Carlo simulation appears to yield different results from that of bsm_call_value() function in Chapter 3.
Using the analytical formula for the valuation of European call option in BSM model for S0 = 100, K = 105, T = 1.0, r = 0.05 and sigma = 0.2, we arrive at a European call price of 8.02135.
Using the code from example 3-4 which estimates the theoretical value of a European call option via Monte Carlo simulation using the same parameter should yield the same result as that of the analytical formula. However, the results yield by mcs_full_vector_numpy.py appears to be significantly different from that of bsm_call_value().
My suspect is that random.standard_normal((M + 1, I)) should be changed to random.standard_normal((M, I)) such that the calculation converge to the true price.
The issue is that the random numbers for the first time slice (t=0) are not set to 0.0. I have corrected the issue and pushed the corrected version of the mcs_full_vector_numpy.py file.
@yhilpisch I see, thank you so much. (: