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 underestimate the option price.
Here, we use the Brownian bridge approach 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. We will consider \(Pr\) is the probability of the maximum asset price during time interval \([t_i, t_i+1]\) less than barrier level. Then, we 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\).