|
From: Peter C. <pca...@gm...> - 2013-01-10 13:50:39
|
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 <pca...@gm...> Date: 2012/12/17 Subject: Inflation Index Interpolation To: qua...@li... 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 |