April 18th, 2011, 11:16 am
Hi,I am trying to implement the Milstein discretization scheme for generating forward rates using Monte Carlo Simultion in the Libor Market Model to price Swaptions. I am using the implementation shown by Brigo and Mercurio in their book Interest Rate Models - Theory and Practise (pg 264). To proof check this I am trying to come back to the values shown by Rebonato in his paper with Peter Jaeckel "Linking Caplet and Swaption Volatilities in a BGM/J Frameowrk: Approximate Solutions". I have taken a Swaption with a 2 year option and swap which matures in 20.5 years and am using the parametric equation suggested for the instantaneous volatility (k(j)[(a+b*(t(j)-t))*exp(-c(t(j)-t)+d] with the calibration values as shown in the paper. The paper gives the above Swaption a MC value of 4.241%, while I am getting a value of around 3.75% in my simulation. I know that a difference discretization method may have been used in the paper but a difference of 0.5% seems very high to me considering I am using the same inputs and am coming back to the papers Swaption price when I implement the approximation method described in the paper to calculate the Black vol and hence use this in Blacks equation to price the Swaption.At a high level would people expect me to be coming back to the paper value for the swaption doing what I have done above?I have gone through my code and am happy that there are no obvious errors in it. The only part I am slightly suspect about is how I apply the various discount factors when I price the swaption at the end of the simulation. I am using the equation for the Swaption price Brigo shows on pg 264 of his book:Swaption price = P(0,T(a))*E(a)[max[0,(S(a,b)-K)]*sum(from a+1 to b)[tenor*P(T(a),T(b)]], where a = option expiry, b = the swap maturity, k = the strike rate, P(0,T(a)) = the discount factor from the option expiry to today and S(a,b) the calculated swap rate.To derive my discount factors (P(T(a),T(b)'s from eqn above) to calculate the swaption at the option expiry I have used my simulated forward rates as at the option expiry and calculated the discount factors using a factor of 1 for the option expiry date. After applying these factors to max[0,(S(a,b)-K)], the swaption then needed to be discounted back to today (P(0,T(a))), so to do this I discounted using the relevent discount factor from the initial yield curve. Is this correct or should I be calculating the discount factor for this from the simulated reset forward rates between today and the option expiry date?If I ignore the final discount (P(0,T(a))) my value comes back close to the paper value for the swaption, this could be coincidence I know but it does lead me to believe I am doing something wrong with the discounting somewhere.Apologies if the above is slightly longwinded I wanted to try and put everything useful in, if anyone had any thoughts at all it would be greatly appreciated.Thanks,John