I am reading Advanced Equity Derivates by Sebastien Bossu and trying to do the exercises. In chapter 1 we have the following question :
Consider an exotic option expiring in one, two, or three years on an underlying asset S with the following payoff mechanism:
- If after one year S1 > S0 the option pays off 1 + C and terminates;
- Else if after two years S2 > S0 the option pays off 1 + 2C and terminates;
- Else if after three years S3 > 0.7 × S0 the option pays off max(1 + 3C, S3∕S0);
- Otherwise, the option pays off S3/S0.
Assuming S0 = $100, zero interest and dividend rates, and 25% volatility, estimate the level of C so that the option is worth 1 using Monte Carlo simulations.
In the solution manual it gives C ≈ 12% without details. I executed the following code ( apologies as it is not clean or efficient, i am just trying to get the answer).
import numpy as np
sigma = 0.25
S0 = 100
N = 100000
simuls = []
for _ in range(N):
S1 = S0 * np.exp(-0.5 * sigma**2 + sigma * np.random.normal())
S2 = S1 * np.exp(-0.5 * sigma**2 + sigma * np.random.normal())
S3 = S2 * np.exp(-0.5 * sigma**2 + sigma * np.random.normal())
simuls.append([S1,S2,S3])
coupon = 0.0765
payoff = []
for simul in simuls:
if simul[0]>S0:
payoff.append(1+coupon)
elif simul[1]>S0:
payoff.append(1+2*coupon)
elif simul[2]>0.7*S0:
payoff.append(max(1+3*coupon, simul[2]/S0))
else:
payoff.append(simul[2]/S0)
print(np.mean(payoff))
I find that a coupon of around 7.65% makes this product worth 1 ( did not solve properly with optimisation). As I am struggling to see where I went wrong I wanted to know if you found 12% and if yes how ? Thank you very much in advance