Function swaption_P_bp(Date_v As Object, PV_v As Object, Sett_d As Date, Eff_d As Date, swap_life As Long, exp_d As Date, strike_r As Double, vola As Double) As Double ' Calcualtes the price of a payer swaption (bp's) Dim Opt_Life As Double Opt_Life = Application.Days360(Sett_d, exp_d) / 360 Dim Frwd As Double Frwd = forward_r(Date_v, PV_v, Sett_d, Eff_d, swap_life) Dim d1 As Double, d2 As Double d1 = (Log(Frwd / strike_r) + 0.5 * vola ^ 2 * Opt_Life) / (vola * Sqr(Opt_Life)) d2 = d1 - vola * Sqr(Opt_Life) swaption_P_bp = (Frwd * Application.NormSDist(d1) - strike_r * Application.NormSDist(d2)) End Function