For barrier option, the payoff is decided by the maximum or minimum value of the underlying asset during the lifetime of option. The maximum of the price process on a discrete set of times is always lower than the maximum for all times, so the MCBarrierEngine always underestimates the option price.
Here, the Brownian bridge approach is used to eliminate the bias. For the discrete time interval \([t_j, t_j+1]\), when \(S(t_j)\) and \(S(t_{j+1})\) is fixed, the process of \(S(t), t\in[t_j,t_j+1]\) is a Brownian bridge. Considering \(Pr\) is the probability of the maximum asset price during time interval \([t_i, t_i+1]\) less than barrier level. Then, you have:
where \(\underline{B} = \ln \frac {B}{S(t_j)}, R_j = \ln \frac {S(t_{j+1})}{S(t_j)}\).
Let \(u\) ~ [0,1] be a draw of a standard uniform variate, then
is a draw from the distribution of the maximum of \(\ln \frac{S(t)}{S(t_j)}\). So \(S(t_j)\exp (M)\) is a draw from maximum of \(S(t)\).
The detailed procedure of Monte Carlo Simulation is as follows:
- For \(i\) = 1 to \(M\)
- For \(j\) = 1 to \(N\)
- generate a normal random number and uniform random number \(u\);
- simulate the price of asset \(S^i_j\);
- simulate the maximum price of asset \(M\) during time interval \([t_{j-1}, t_j]\).
- For \(j\) = 1 to \(N\)
The calculation of payoff is similar to the step 3 in MCBarrierEngine except that the \(S^i_j\) is replaced by \(M\).