June 19th, 2008, 3:59 pm
Hi,I am doing some work on the Hull-White model. My aim is to come up with a way of modeling inflation by using a correlated Hull-White, i.e. simulate nominal and real rates and then modelling the Inflation as the "Exchnge Rate" between the two as described by Mercurio (Pricing Inflation-Indexed Derivatives). I want to eventually use this model to price Inflation Caps perhaps LPI as well. In particular my focus is on the sterling curve. Given that the sterling nominal curve is so inverted at the moment I am having trouble with the parameters. In order for me to fit the nominal short rate to the initial instantaneous forward curve I have to choose a pretty high value of "a" (the mean reversion parameter). If I set a=15% then I obtain a reasonable match. However all of the chat on the forum seems to suggest that the value of "a" should be much lower than this. Has anyone had any recet experience of trying to model the UK curve under Hull-White, does this choice of a sound reasonable? My worry is that witha parameter this high the stochastic process is going to be damped down too much.The other mistake could be in the Matlab code that I am building. For those interested here is some of the code for the nominal short rate. If anyone could have a look at it then i would be really grateful. Thanks very much guysfunction [AverageNominalShortRate InitialObservedInstRates SimulatedNominalShortRate NominalZeroRates]... = HullWhiteSimulationNominal(NominalRates,T,T_Interp,Alpha_n,Sigma_n,n,dt)TimeSteps = 1t:T; %%%Number of Time Steps in MC SimulationT_Nominal = [1 2 3 4 5 6 7 8 9 10 15 20 25 30 35 40 45 50];[InstNominalRates NominalZeroRates NominalTheta] = InstForwardRates(T_Nominal,NominalRates,T_Interp,Sigma_n,Alpha_n);n=1000T=50NominalSimulations = normrnd(0,1,n,T);SimulatedNominalShortRate = zeros(n,T+1);dn = zeros(1,T);for j=1:n for i=1:T if i==1 dn(i)=0; SimulatedNominalShortRate(j,i) = InstNominalRates(i); %%This is just the base short rate at t=0 else dn(i) = (i>=2)*((NominalTheta(i-1)-Alpha_n*SimulatedNominalShortRate(j,i-1))*(TimeSteps(i)-TimeSteps(i-1))+... (TimeSteps(i)-TimeSteps(i-1))*Sigma_n*NominalSimulations(j,i-1)); %%This simulates nominal rates SimulatedNominalShortRate(j,i) = (i>=1)*(SimulatedNominalShortRate(j,i-1)+dn(i)); end endend AverageNominalShortRate = mean(SimulatedNominalShortRate);InitialObservedInstRates = InstNominalRates;