▪ Pricing complex Interest Rate Derivatives requires modeling the future dynamics of the rate curve term structure ▪ Any modeling approach will fail to produce good/reasonable prices if the current term structure is not correct ▪ Most of the literature assumes the existence of the current rate curve as given and its construction is often neglected or even obscured ▪ Financial institutions, software houses and practitioners have developed their own proprietary methodologies in order to extract the rate curve term structure from quoted prices of a finite number of liquid market instruments 2/91
Rate curve bootstrapping 3. Turn of Year 4. The standard rate curve 5. What has changed since summer 2007 6. Multiple forwarding rate curves 7. Discounting rate curve 8. Bibliography 3/91
dates/times is needed ▪ Discount factors have exponential decay so it makes sense to interpolate on log-discounts ▪ A (poor) common choice is to interpolate (linearly) on zero rates: linear interpolation is easy and local (it only depends on the 2 surrounding points) ▪ The smoothness of a rate curve is to be measured on the smoothness of its (simple) forward rates: so it would make sense to use a smooth interpolation on (instantaneous continuous) forward rates 6/91
defined when the function values at points are supplemented with function derivative values ′ Different type of first derivative approximations are available: ▪ Local schemes (Fourth-order, Parabolic, Fritsch-Butland, Akima, Kruger, etc) use only values near to calculate each ′ ▪ Non-local schemes (spline with different boundary conditions) use all values and obtain ′ by solving a linear system of equations Local schemes produce 1 interpolants, while the spline schemes generate 2 interpolants 12/91
such as ▪ spurious inflection points ▪ excessive convexity ▪ lack of locality Wide oscillation can generate negative forward rates o Andersen has addressed these issues through the use of shape-preserving splines from the class of generalized tension splines o Hagan and West have developed a new scheme based on positive preserving forward interpolation 13/91
simpler, more general, most effective approach to avoid spurious excessive oscillation It can be applied to all schemes to ensure that in the regions of local monotonicity of the input (three successive increasing or decreasing values) the interpolating cubic remains monotonic. If the interpolating cubic is already monotonic, the Hyman filter leaves it unchanged preserving all its original features. In the case of 2 interpolants the Hyman filter ensures local monotonicity at the expense of the second derivative of the interpolant which will no longer be continuous in the points where the filter has been applied. 14/91
of : it is reasonable to interpolate on a (log-)discount grid using an interpolation that preserves monotonicity My favorite choice: Hyman monotonic cubic interpolation on log-discounts ▪ Defined in = 0 ▪ 1 on forward rates (0 where Hyman filter is really applied) ▪ Ensure positive rates (not relevant anymore) It’s equivalent to (monotonic) parabolic interpolation on forward rates Easy to switch to/from linear interpolation on log-discounts to gain robust insight on the curve shape and its problems 15/91
curve is usually equal to the maturity of a given financial instrument used to define the curve Best-fit algorithms assume a smooth functional form for the term structure and calibrate their parameters by minimizing the re-pricing error of the chosen set of calibration instruments ▪ Popular due to the smoothness of the curve, calibration easiness, intuitive financial interpretation of functional form parameters (often level, slope, and curvature in correspondence with the first three principal components) ▪ The fit quality is typically not good enough for trading purposes in liquid markets Exact-fit algorithms are often preferred: they fix the rate curve on a time grid of pillars in order to exactly reprice the calibration instruments 19/91
extending the rate curve step-by-step with the increasing maturity of the ordered instruments Intermediate rate curve values are obtained by interpolation on the bootstrapping grid Little attention has been devoted in the literature to the fact that ▪ interpolation is often already used during bootstrapping not just after that ▪ the interaction between bootstrapping and interpolation can be subtle if not nasty 20/91
of the already bootstrapped part of the curve is altered by the addition of further pillars This is usually remedied by cycling in iterative fashion: after a first bootstrap the resulting complete grid is altered one pillar at time using again the same bootstrapping algorithm, until convergence is reached The first iteration can use a local interpolation scheme to reach a robust first guess Even better: use a good grid guess, the most natural one being just the previous state grid in a dynamically changing environment 21/91
market subtleties such as ▪ date conventions ▪ the intra-day fixing of the first floating payment of a swap ▪ the futures convexity adjustment ▪ the turn-of-year effect ▪ Note that all instruments are calibrated zeroing their NPV on the bootstrapped curve: ▪ this is equivalent to zeroing their only cash flow for all instruments but swaps ▪ Swaps NPV zeroing depends on the discount curve 22/91
<class Interpolator> class InterpolatedZeroCurve template <class Interpolator> class InterpolatedForwardCurve template <class Traits, class Interpolator, template <class> class Bootstrap = IterativeBootstrap> class PiecewiseYieldCurve 23/91
const { Size n = ts_−>instruments_.size(); // sort rate helpers by maturity // check that no two instruments have the same maturity // check that no instrument has an invalid quote for (Size i=0; i<n ; ++i) ts_−>instruments_[i]−>setTermStructure(const_cast<Curve*>(ts_)); ts_−>dates_ = std::vector<Date>(n+1); // same for the time & data vectors ts_−>dates_[0] = Traits::initialDate(ts_); ts_−>times_[0] = ts_−>timeFromReference(ts_−>dates_[0]); ts_−>data_[0] = Traits::initialValue(ts_); for (Size i=0; i<n; ++i) { ts_−>dates_[i+1] = ts_−>instruments_[i]−>latestDate(); ts_−>times_[i+1] = ts_−>timeFromReference(ts_−>dates_[i+1]); } 25/91
; ++iteration) { for (Size i=1; i<n+1; ++i) { if (iteration==0) { // extend interpolation a point at a time ts_−>interpolation_=ts_−>interpolator_.interpolate( ts_−>times_.begin(), ts_−>times_.begin()+i+1, ts_−>data_.begin()); ts_−>interpolation_.update(); } Rate guess, min, max; // estimate guess using previous iteration’s values, // extrapolating, or asking the traits, then bracket // the solution with min and max BootstrapError<Curve> error(ts_, instrument, i); ts_−>data_[i]=solver.solve(error, ts_−>accuracy_, guess,min,max); } if (! Interpolator::global) break ; // no need for convergence loop // check convergence and break if tolerance is reached, bail out // if tolerance wasn’t reached in the given number of iterations } } 26/91
point of state-of-the-art bootstrapping ▪ For even the best interpolation schemes to be effective any market rate jump must be removed and added back only at the end of the smooth curve construction ▪ The most relevant jump in rates is the so-called Turn Of Year (TOY) effect, observed in market quotations of rates spanning across the end of a year ▪ From a financial point of view, the TOY effect is due to the increased search for liquidity by year end for official balance sheet numbers and regulatory requirements 28/91
day of the year (e.g. 31th December) for the Overnight Rate Other Euribor indexes with longer tenors display smaller jumps when their maturity crosses the same border: ▪ the Euribor 1M jumps 2 business days before the 1st business day of December ▪ the Euribor 3M jumps 2 business days before the 1st business day of October ▪ the Euribor 6M jumps 2 business days before the 1st business day of July There is a decreasing jump amplitude with increasing rate tenor: ▪ Think of 1M Euribor as an average of 22 (business days in one month) overnight rates (plus a basis): if this 1M Euribor spans over the end of year, the TOY overnight rate weights just 1/22th. ▪ For rates with longer tenors the TOY overnight rate has even smaller weight. 30/91
jump, as well as the October and November serial futures 2Y Swaps always include two jumps, etc The effect is generally observable at the first two TOYs and becomes negligible at the following ones 31/91
December rate is obtained through interpolation of surrounding non-TOY non-jumping rates: the jump amplitude is the difference between this fictitious December rate and the real one ▪ Given eight liquid futures this approach always allows the estimation of the second TOY ▪ The first TOY can be estimated only up to (two business days before) the September contract expiration: later in the year the first TOY would be extrapolated, which is non robust 32/91
use: ▪ 6M FRA sequence up to (two business days before) the first business day of July ▪ 1M swap strip up to (two business days before) the first business day of December All these empirical approaches, when available at the same time, give estimates in good agreement with each other 34/91
bootstrapped using a selection from the following market instruments: ▪ Deposits covering the window from today up to 1Y ▪ FRAs from 1M up to 2Y ▪ Short term Interest Rate Futures contracts from spot/3M (depending on the current calendar date) up to 2Y and more ▪ Interest Rate Swap contracts from 2Y-3Y up to 30Y-60Y 39/91
instruments are: ▪ they are not homogeneous, having different Euribor indexes as underlying ▪ the four blocks overlap by maturity and requires further selection The selection is generally done according to the principle of maximum liquidity: ▪ Futures ▪ Swaps ▪ FRA ▪ Deposits 40/91
defined from today) Spot Deposits: SN, SW, 1M, 2M, etc. (at least up to the first IMM date) Futures: 8 contracts (maybe one serial) Swaps: 2Y, 3Y, .., 30Y and beyond 41/91
rate market since summer 2007 reflect increased credit/liquidity risk and the corresponding preference for higher frequency payments (quarterly instead of semi-annually, for instance) ▪ These large basis spreads imply that different rate curves are required for market coherent estimation of forward rates with different tenors ▪ Even sophisticated old-school bootstrapping algorithms fail to estimate correct forward Euribor rates in the new market conditions observed since the summer of 2007 46/91
that a single curve cannot be used to estimate forward rates with different tenors: ▪ two consecutive futures are not in line with their spanning 6M FRA ▪ FRA and Futures rates are not in line with EONIA based Overnight Indexed Swaps over the same period One single curve is not enough anymore to account for forward rates of different tenor, such as 1M, 3M, 6M, 12M 49/91
an average index, while ON, TN, SN are not average and do not have other fixings ▪ Spot EONIA OIS (SW, 2W, 3W, 1M, …, 12M, 15M, 18M, 21M, 2Y, …, 60Y) ▪ ECB dated EONIA OIS (from spot to about 6M) EONIA is roughly constant between ECB dates It makes sense to use piecewise constant interpolation for the first 2Y, smooth interpolation later 52/91
▪ Euribor 6M Fixing (0X6) ▪ FRAs (1X7, 2X8, …, 18X24) ▪ 6M Euribor Swaps (3Y-10Y, 12Y, 15Y, 20Y, 25Y, 30Y, 35Y, 40Y, 50Y, 60Y) ▪ 6M Euribor Fwd Swaps (15Yx45Y, 25Yx55Y) Do not use Deposits: ▪ ON, TN, SN, SW, 1M, 2M, 3M are not homogeneous ▪ 6M deposit is not in line with Euribor 6M fixing: it’s not an Euribor indexed product and it is not collateralized 56/91
6x12 in the sense that do not fix a full 6M segment: their naïve introduction leads to oscillation Classic 1x7 FRA pricing (continuous compounding): 1 × 7 = (1) (7) − 1 6 where 1 7 = − 1 ×1 − 7 ×7 = − 0 1 + 0 7 = 1 7 The 6M Euribor market does not provide direct information about 1 or,more generally, about the integral of on a rolling window not equal to 6M !!! 57/91
additional discount factors in the 0-6M region, i.e. “Synthetic Deposits” ▪ E.g. the 1M deposit as seen on the 6M Euribor curve First order: ▪ 6M Euribor Synthetic Deposits can be estimated using a parallel shift of the first 6M of the EONIA curve; the shift must match the observed basis between 0x6 and 6M EONIA OIS Second order: ▪ Instead of a parallel shift of the first 6M of the EONIA curve allocate the overall shift in a sloped way that fits the 6M-EONIA basis term structure slope 58/91
2.50% 3.00% 3.50% 4.00% 4.50% 5.00% 5.50% Jun 09 Dec 09 Jun 10 Dec 10 Jun 11 Dec 11 Jun 12 Dec 12 Jun 13 Dec 13 Jun 14 Dec 14 Jun 15 Dec 15 Jun 16 Dec 16 Jun 17 Dec 17 Jun 18 Dec 18 61/91
▪ Euribor 1M Fixing (0X1) ▪ Money market monthly swaps (fixed rate vs 1M Euribor, maturities ranging in 2M-12M) ▪ 1M Euribor Swaps from Basis: 1M Euribor swap rates are obtained from the same maturity 6M Euribor swap rates minus same maturity 1M/6M basis swaps (maturities 2Y-10Y, 12Y, 15Y, 20Y, 25Y, 30Y, 40Y, 50Y, 60Y) Do not use Deposits No Overlapping Instruments: no need for Synthetic Deposits but it’s possible to use them for greater curve granularity 66/91
2.50% 3.00% 3.50% 4.00% 4.50% 5.00% 5.50% Jun 09 Dec 09 Jun 10 Dec 10 Jun 11 Dec 11 Jun 12 Dec 12 Jun 13 Dec 13 Jun 14 Dec 14 Jun 15 Dec 15 Jun 16 Dec 16 Jun 17 Dec 17 Jun 18 Dec 18 69/91
▪ Euribor 1Y Fixing (0X12) ▪ 12x24 FRA ▪ 1Y Euribor Swaps from Basis: swap rates are obtained from the same maturity 6M Euribor swap rates plus same maturity 6M/1Y basis swaps (maturities 3Y-10Y, 12Y, 15Y, 20Y, 25Y, 30Y, 40Y, 50Y, 60Y) Do not use Deposits No Overlapping Instruments but using only 0x12 and 12x24 is too loose for market makers and results in unreliable intermediate 6x18… 70/91
2.50% 3.00% 3.50% 4.00% 4.50% 5.00% 5.50% Jun 09 Dec 09 Jun 10 Dec 10 Jun 11 Dec 11 Jun 12 Dec 12 Jun 13 Dec 13 Jun 14 Dec 14 Jun 15 Dec 15 Jun 16 Dec 16 Jun 17 Dec 17 Jun 18 Dec 18 74/91
since this is what traders are interested in ▪ What about instantaneous (continuous compounding) forward rates? ▪ On the one day scale continuous compounding forward rates and simple compounding (i.e. ON) rates are equivalent 76/91
flows must have the same present value: we need an unique discounting curve We have bootstrapped each forwarding curve using the forwarding curve itself also for discounting swap cash flows: something is flawed here, at least when swaps are bootstrapped The discounting curve should represent the funding level implicit in whatever hedging strategy. What is the funding level? 82/91
rates tradable between collateralized counterparties ▪ Capital market collateralization between two counterparties is the bilateral obligation to secure by liquid assets (such as cash or securities) the outstanding NPV of the overall trading book: these assets are called margin ▪ The margin pledged by the borrower are legally in the lender possession or subject to seizure in the event of default ▪ The collateral margin earns the overnight rate: the overnight curve is the discounting curve for collateralized transactions ▪ Using the same rationale: uncollateralized transactions should be discounted by each financial institution using its own capital market funding rates 83/91
residual credit risk: after all, that’s what collateralization was created for! ▪ Uncollateralized transactions have credit risk which must be accounted for, but this has little to do with the liquidity/funding issue 84/91
EONIA curve using your preferred procedure; this is the EONIA forwarding curve and the discount curve for collateralized transactions 2. Select different sets of collateralized vanilla interest rate instruments traded on the market, each set homogeneous in the underlying Euribor rate 3. Build separated forwarding curves using the selected instruments in the bootstrapping algorithm; use the EONIA curve to exogenously discount any cashflow 87/91
Wanted to Know About Multiple Interest Rate Curve Bootstrapping but Were Afraid to Ask http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2219548 James M. Hyman. Accurate monotonicity preserving cubic interpolation. SIAM Journal on Scientific and Statistical Computing, 1983. Piterbarg, Vladimir. Funding beyond discounting: collateral agreements and derivatives pricing. Risk Magazine February 2010 Whittall, Christopher. The price is wrong. Risk Magazine March 2010 Luigi Ballabio. “Implementing QuantLib”. http://implementingquantlib.blogspot.com/2013/10/chapter-3-part-3-of-n- bootstrapping.html 91/91
New Formulas and Market Models (February 5, 2009). Bloomberg Portfolio Research Paper No. 2010-01-FRONTIERS. Available at SSRN: http://ssrn.com/abstract=1332205 Morini, Massimo. Solving the Puzzle in the Interest Rate Market (October 12, 2009). Available at SSRN: http://ssrn.com/abstract=1506046 George Kirikos and David Novak. Convexity conundrums. Risk Magazine March 1997 Burghardt, Galen. The Eurodollar futures and options handbook; Irwin library of investment and finance; New York: McGraw-Hill, 2003. Burghardt, Galen and Kirshner, Susan. "One Good Turn," CME Interest Rate Products Advanced Topics. Chicago: Chicago Mercatile Exchange, 2002. Burghardt, Galen and Hoskins, William. "The Convexity Bias in Eurodollar Futures: Part 1 & 2." Derivatives Quarterly, 1995. 92/91