Fwd: Inflation Index Interpolation / yoy volatility structure

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: Inflation Index Interpolation / yoy volatility structure

Peter Caspers-4
Hi,
 
just as an update to the point below: The second way of interpolating seems to be the correct one. I do not have a suggestion for a fix in ql however (as I said below, everything under the assumption that my understanding of the intended usage of the classes is correct).
 
I have a second question on inflation in ql concerning the yoy volatility structure. I am trying to use a KInterpolatedYoyOptionletVolatilitySurface. Retrieving a volatility for say maturity = 1y and a strike k the following happens:
 
1 YoYOptionletVolatilitySurface::volatility( today + 1y , k ) is called. The observation lag (3m) is subtracted from the maturity date and the time to reference date is computed giving (apprx.) t  = 0.75. Then volatilityImpl(t,k) is called =>
 
2 KInterpolatedYoYOptionletVolatilitySurface::volatilityImpl(t,k) recomputes a physical date d from t=0.75 giving something like d = today+9m and then retrieves a volatility slice for this d from the yoyOptionletStripper, which is in my case an InterpolatedYoYOptionletStripper =>
 
3 InterpolatedYoYOptionletStripper::slice(d) computes for each relevant strike k a volatility by invoking volatility(d,k) on the respective volatility curve. The latter is a PiecewiseYoYOptionletVolatilityCurve. This triggers executiion of
 
4 YoYOptionletVolatilitySurface::volatility( today +9m , k ) which we already had above. Again the observation lag (3m) is subtracted and we arrive at today + 6m and (apprx.) t = 0.5, which is used as input to
 
5 InterpolatedYoYOptionletVolatilityCurve::volatilityImpl(t) which finally returns the volatility for t=0.5.
 
It should be t=0.75 in my opinion however. I do not have a general fix, but only a workaround changing the call in 2 into
 
slice_ = yoyOptionletStripper_->slice(d + this->observationLag() );
 
which should work if the default observation lag is used in 1.
 
Is my observation correct and would you consider the workaround more or less reasonable ?
 
Thanks a lot for any input 
Peter
 
---------- Forwarded message ----------
From: Peter Caspers <[hidden email]>
Date: 2012/12/17
Subject: Inflation Index Interpolation
To: [hidden email]


Hi,
 
I am comparing Murex and QuantLib concerning Inflation Pricing. I observe a difference in the way an index fixing is interpolated between known (i.e. already fixed) values. Here is an example:
 
Take the EUHICP XT index which has fixings
 
01.08.2012 (Aug 12)    115.10
01.09.2012 (Sep 12)    115.97
 
Now I want to look up the fixing on 28.08.2012 belonging to an observation date on 28.11.2012 (3m observation lag). In QL the interpolation is done as follows:
 
Days between 01.08. and 01.09. = 31, Days between 01.08. and 28.08. = 27, Interpolated Fixing = 115.10 + 27/31 * ( 115.97 - 115.10 )
 
In Murex on the opposite:
 
Days between 01.11. and 01.12. = 30, Days between 01.11. and 28.11. = 27, Interpolated Fixing = 115.10 + 27/30 * ( 115.97 - 115.10 )
 
Which computation is the correct one, i.e. what is the market convention that is actually applied to deals ? Maybe I am using the QL classes not as intended ?
 
Thanks a lot
Peter
 


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev