Login  Register

Re: CPI Time Series Interpolation

Posted by igitur on Feb 09, 2017; 11:21am
URL: http://quantlib.414.s1.nabble.com/CPI-Time-Series-Interpolation-tp18062p18070.html

Hi,

Charles, you might remember we had a chat about this about a year back. Sadly, this illustrates my laziness and I have to do some more work on that PR before it is ready for merging. 

PR50 is necessary if bonds are valued at the real curve, and the inflation curve in the future is assume to be a flat 0. Past inflation fixings (since issue date) allows for the rolling up until effective date. This is the method that BESA prescribes in the ZA inflation linked bond valuation.

The alternative way is to value the bond at the nominal curve, but then you have to deduce the inflation curve yourself (difference between nominal and real yield curves) and add the fixings as in the first method. 

I still wanted to thoroughly investigate whether the 2nd approach isn't a better approach that wouldn't require PR50 before I cleaned up the PR.

The above doesn't solve your issue, but I just wanted to explain why PR50 is still in limbo.



Francois Botha

On 9 February 2017 at 13:57, Peter Caspers <[hidden email]> wrote:
Hi,

it’s not rounding, QuantLib calculates 123.92 = 123.8 + (124.2-123.8) x (10-1) / 30, i.e. takes November instead of February as the basis for the interpolation. This is due to a bug described here


There is an attempt to solve that, but this is not yet merged


Looking at that I think we also need to fix the interpolation in CPICoupon, the code for this starts here


What do you think, Francois, Luigi?

Kind Regards
Peter


On 08 Feb 2017, at 13:08, Charles Allderman <[hidden email]> wrote:

Hi

I am digging into the pricing of a CPIBond. I have this index CPI index time
series:

DATE             
2016-08-31  123.0
2016-09-30  123.2
2016-10-31  123.8
2016-11-30  124.2
2016-12-31  124.7

If I interpolate for 10 February 2017 I get:
(10.0-1)/28.0*(124.2-123.8)+123.8
123.92857142857143

Deriving the values as calculated by QuantLib using the last cash flow I
get:
principal*baseCPI/notional
123.92000000000002

So it appears to be rounded down.

The inflation index is simply created by passing in a vector of
dates(month-end date plus 1 day) and values.
inflationIndex.addFixings(dte_fixings[:len(fixData)], fixData)

So is there a way to get the full interpolated value?

Thanks
Charles











--
View this message in context: http://quantlib.10058.n7.nabble.com/CPI-Time-Series-Interpolation-tp18062.html
Sent from the quantlib-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users