yhilpisch/py4fi

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.

screen shot 2018-07-08 at 2 17 27 pm

screen shot 2018-07-08 at 2 18 09 pm

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. (: