Thomson Reuters Eikon Adfin Term Structure Calculation Guide
Thomson Reuters Eikon Adfin Term Structure Calculation Guide
601637.2 28 January 2011 Replaced formulas with transparent GIFs for conversion
to HTML; minor corrections to some formulas
TABLE OF CONTENTS
THOMSON REUTERS EIKON ADFIN TERM
STRUCTURE CALCULATION GUIDE .......................................... 2
BOOTSTRAPPING MODEL .................................................................. 3
Bootstrapping a Zero Coupon Discount Factor Curve from
Deposits, Futures and Swaps .............................................. 3
1
THOMSON REUTERS EIKON ADFIN TERM
STRUCTURE CALCULATION GUIDE
This section describes methods for generating different types of term structures: spot discount factors, forward discount
factors, and zero-coupon yield curves.
By definition, a zero-coupon instrument pays no interim cash flows. This term was first used for bonds that pay no
coupons. For such bonds, the common measure of the return is "yield to maturity", which is simply the yield earned when
the bond is held to maturity. The yield to maturity of a zero-coupon bond is called a zero-coupon rate.
A "zero-coupon yield curve", or "ZC curve" for short, is a series of zero-coupon rates or discount factors for different
maturities. The individual zero-coupon rates can be derived from a variety of existing instruments, including money market
deposit rates, futures contract prices, and the swap rates of bond prices.
By definition, the discount factor is the factor by which the future value of an instrument should be multiplied to calculate
its present value:
WHERE DENOTES
Present value
It follows that the discount factor is directly linked to the zero-coupon rate of a zero-coupon instrument maturing in
years. Please refer to the section "Transform a rate to a discount factor" in the Adfin Common Calculation Guide for more
detailed information on the following relationships:
The Adfin Term Structure Calculation Guide is divided into three sections. Each section focuses on a different model for
building spot and forward zero-coupon yield curves or discount factor curves:
Bootstrapping Model
Vasicek-Fong Model
Basis Spline (B-spline) Model
The bootstrapping method models the zero rates as a piecewise linear curve; that is, the curve is linear between
consecutive nodes but the slope is discontinuous at the nodes. The Vasicek-Fong and Basis Spline models are more
appropriate choices for generating a forward yield curve from bonds.
The Black, Derman & Toy and Hull & White calibration models, among others, are explained in the Options section of this
guide.
BOOTSTRAPPING MODEL
Any combination of additive cash flows can be shown to be a combination of zero-coupon cash flows. Splitting an
instrument into its constituent zero-coupon cash flows is important because an instrument with multiple cash flows should
not be discounted using a uniform interest rate curve from settlement date to maturity. This „stripping‟ of the curve and the
successive calculation of discount factors is termed bootstrapping.
To construct a spot curve that is as representative as possible of the market, one should use the most liquid risk-free
instruments for each term:
Short-term (3M-1Y): cash deposit rates, short-term interest rate (STIR) futures, implied deposit rates, treasury bills.
Long-term (2Y-30Y): bonds, interest rate swaps.
A spot zero coupon curve can be generated using the Bootstrapping model by the AdTermStructure() function, which
can be found in the Adfin TermStructure category.
For each deposit, the method calculates the discount factor at the maturity date of the deposit.
For each STIR future, the method calculates the discount factor at the maturity date of the future. This is done by
compounding the discount factor at the settlement date of the future with the discount factor of the future. The calculation
is straightforward when the end date of a period is also the start date of the following period; it just consists of applying the
forward rate formula recursively using a money market rate for the first point.
A more complex method is needed for futures contracts, because their hedging periods are not regularly spaced. Gaps
and overlaps between consecutive futures periods should be treated with specific algorithms in order to respect the
original prices (that is, it must be possible to retrieve the correct futures contract prices from the zero-coupon curve) and
generate a smooth curve.
For each swap, the method calculates the discount factor at the maturity date of the swap, assuming that the Net Present
Value of the swap is equal to zero. For other cash flow dates, the discount factors are interpolated.
Intermediate points on the curve can be estimated by interpolating the discount factors or rates. The linear, exponential
and cubic spline interpolation methods assume different curve shapes between known points. All three methods are
available in Thomson Reuters Eikon Excel; refer to the Adfin Common Calculations Guide for a deeper financial
explanation of their uses, advantages, and limitations.
This section provides two detailed examples of discount factor curve generation, one example using the AdRate()
function, and then discusses convexity adjustments to the yield curves.
Bootstrapping a ZC Discount Factor curve from Deposits, Futures, and Swaps
Bootstrapping a ZC Discount Factor curve from Deposits and Bonds
Generating a Forward Discount Curve
Convexity Adjustments
BOOTSTRAPPING A ZERO COUPON DISCOUNT FACTOR CURVE FROM DEPOSITS, FUTURES AND SWAPS
In this section the curve is built with the following instruments:
Deposits to initiate the yield curve. The calculation is a straightforward rate conversion. Deposits are quoted as money
market rates. The year basis and settlement rules are defined in the Currency Styles Database. Adfin supports
standard maturities (overnight, tom next, …, 12 months ), non-standard maturities (such as 10 days or 3 weeks) and
fixed-maturity rates (for example, to 10/06/1998 or 30/06/1998).
STIR Futures up to the 3-year maturity because of their liquidity. The calculation compounds forward rates using the
smoothing method of AdFutToZc().
The stub period will be properly interpolated from the deposit curve. Market conventions are defined in the STIR Future
Styles Database.
Interest Rate Swaps to build a long-term zero coupon curve based on forward rates (again, both standard and non-
standard maturities are allowed). Market conventions are defined in the IRS Styles Database.
3
Example in Thomson Reuters Eikon Excel
INSTRUMENT START DATE* MATURITY DATE* COUPON MARKET INSTRUMENT
TYPE RATE** RATE STRUCTURE
*Start and maturity dates can be calculated from a future maturity code (such as M1) using the AdFutCodes()
function. For deposits, start and maturity dates can be calculated using the FxCalcPeriod() function.
**Not applicable for deposit, futures and swaps.
RateStructure
KEYWORD COMMENT
ZCTYPE:DF Specifies discount factors as the zero-coupon yield curve type (to get rates, use the
keyword value ZCTYPE:RATE)
Syntax
=AdTermStructure(InstrumentArray1,“RM:YC ZCTYPE:DF”,”RET:A28”)
DATE RATE / DF
01Feb05 100.00000%
02Feb05 99.99428%
03Feb05 99.98853%
10Feb05 99.94752%
03Mar05 99.82316%
16Mar05 99.74463%
16Jun05 99.19769%
15Sep05 98.63961%
21Dec05 98.01830%
21Mar06 97.41252%
15Jun06 96.81027%
21Sep06 96.09677%
05Feb07 95.05537%
04Feb08 92.14566%
03Feb09 89.08182%
03Feb10 85.90086%
03Feb11 82.65299%
03Feb12 79.31055%
04Feb13 76.04207%
03Feb14 72.80420%
5
DATE RATE / DF
03Feb15 69.64200%
03Feb20 55.54109%
Manual Calculations
Manual calculations are detailed for the discount factor:
from Deposits
from Futures
from Swap Rates
0.0
O 01Fe 02Feb 2.06
027
N b05 05 %
8
0.0
T 02Fe 03Feb 2.07
027
N b05 05 %
8
0.0
S 03Fe 10Feb 2.11
194
W b05 05 %
4
0.0
1 03Fe 03Mar 2.13
777
M b05 05 %
8
0.1
2 03Fe 04Apr 2.16
666
M b05 05 %
7
0.2
3 03Fe 03May 2.17
472
M b05 05 %
2
0.5
6 03Fe 03Aug 2.21
027
M b05 05 %
8
0.7
9 03Fe 03Nov 2.21
583
M b05 05 %
3
* is the number of years between the two dates. It can be calculated using the DfCountYears() function. In this
example, the day count basis is Actual/360 (DCB:A0).
**Zero coupon discount factor at time
The short-term zero coupon yield curve finishes at the start date of the first future. The discount factor on the
20th of June is calculated by interpolating the deposits discount curve calculated above.
****
U05 21Sep05 21Dec05 2.353% 0.2527 98.6012%
7
DFSI AT DFSEI ***
FUT START MATURITY MARKET
LI * START DATE DFI
CODE DATE DATE RATE
**
****
M06 21Jun06 21Sep06 2.728% 0.2555 96.7666%
* is the number of years between the two dates. It can be calculated using the DfCountYears() function. In this
example the day count basis is Actual/360 (DCB:A0).
**The discount factor at the start date of each future is calculated from previous elements of the yield curve, as it
is being built.
*** Discount factor calculated from the start and the end date of each future. The start and maturity dates can be
calculated from a maturity code (such as M1) using the AdFutCodes() function.
**** When the start date of the future is superior to the end date of the future , Adfin must resolve the gap.
See "Second case (gap)" below for an example.
If the maturity date of one future is not the same as the start date of the next, there are two possible cases: an overlap
between the periods, or a gap. Each case requires a different calculation.
First case (overlap): the start date of the future is less than the end date of the future :
01Feb05 100.00000%
02Feb05 99.98742%
03Feb05 99.97484%
10Feb05 99.88666%
03Mar05 99.79864%
16Mar05 99.73595%
16June 99.19769%
DFS2=AdInterp(“15Jun05”,{01Feb05;16Jun05},{100.00%;99.19769%},”IM:LIN”)= 99.2036%
Second case (gap): the start date of future is greater than the end date of future :
In this case is calculated using the unknown (see the explanation provided in note ****).
16Jun05 99.74463%
15Sep05 98.63961%
21Dec05
We assume that
We know
WHERE EQUALS
=99.408856%
The discount factor calculated from the start and the end date of the
third future
Moreover:
=AdInterp(“21Sep05”,{16Jun05;15Sep05;21Dec05},{99.74463%,98.63961%,DF4},”IM:LIN”)
Then:
9
Finally to find we will solve using the Excel solver.
01Feb05 100.00000%
02Feb05 99.98742%
03Feb05 99.97484%
10Feb05 99.88666%
03Mar05 99.79864%
16Mar05 99.73595%
16Jun05 98.61947%
15Sep05 97.59791%
21Dec05 96.58378%
21Mar06 95.55686%
15Jun06 94.53152%
21Sep06 93.49816%
For the moment, we assume that the for 05Feb07 (whose value is unknown) is equal to zero.
The actual value of the for 05Feb07 is that which makes the Net Present Value of the swap equal to 0.
For example, the of the interest rate swap is given by the formula
We use the SwIrsPx() function for our calculations. For more information on how to calculate the Net Present Value of an
Interest Rate Swap refer to the Swaps chapter of the Thomson Reuters Eikon Adfin Calculations Guides.
10
ZcRates: from the 1st to the last (the last being the unknown value for 05Feb07)
0.01041
95.05537%
To complete the yield curve the same method is used for the next swap until the end.
11
INSTRUMENT
INSTRUMENT TYPE START DATE MATURITY DATE COUPON RATE MARKET
STRUCTURE
RateStructure
KEYWORD COMMENT
ZCTYPE:DF Specifies discount factors as the zero-coupon yield curve type (to get rates, use the
keyword value ZCTYPE:RATE)
Syntax
=AdTermStructure(Input array,“RM:YC ZCTYPE:DF”,””)
DATE RATE / DF
29-May-01 100.000%
30-May-01 99.987%
31-May-01 99.973%
07-Jun-01 99.874%
12
DATE RATE / DF
14-Jun-01 99.777%
29-Jun-01 99.569%
31-Jul-01 99.130%
30-Nov-01 97.485%
28-Feb-02 96.258%
31-May-02 95.014%
07-Jun-02 95.463%
07-Dec-03 88.773%
26-Nov-04 84.893%
07-Dec-05 80.871%
07-Dec-06 76.755%
07-Dec-07 73.138%
13-Oct-08 70.326%
07-Dec-09 66.608%
07-Dec-15 50.084%
07-Jun-21 39.650%
07-Dec-28 28.920%
Manual Calculation
The deposit part of the yield curve is not explained as it has been explained in the previous section. We will focus on the
bond part of the yield curve. An explicit example is used on the first bond and then by repeating the method you will be
able to build the end of the bond curve.
Example on the first bond:
The bond settles the 30MAY01 and matures the 07JUN02 and pays a coupon of 7%.
Its market price is 102.8% and its BondStructure is a GILT (it is a bond style).
The method consists in finding the discount factor at the maturity date (07JUN02), which enables you to retrieve the given
market price. Instead of using cash flows directly for this calculation, the AdBondPrice() function is used to return the
result.
To calculate the discount factor at the maturity date (07JUN02) we need the part of the discount factor curve already built.
DATE RATE / DF
29-May-01 100.000%
30-May-01 99.987%
13
DATE RATE / DF
31-May-01 99.973%
07-Jun-01 99.874%
14-Jun-01 99.777%
29-Jun-01 99.569%
31-Jul-01 99.130%
30-Nov-01 97.485%
28-Feb-02 96.258%
31-May-02 95.014%
07-Jun-02 DF07JUN02 = 0
Syntax
=AdBondPrice(“30MAY01”,ZcCurve,”07JUN02”,”7%”,””,”GILT”,“RM:YC ZCTYPE:DF”,””,”LAY:V RET:B1”)
ZcCurve: array of Dates and Df from 29May01 to 07Jun02 (for DF: from 1% to 0)
Price 3.563%
The market price of the bond maturing the 07Jun02 is known as 102.38%, so by solving the function
AdBondPrice()=102.8% using the excel solver, we find the unknown DF:
95.463%
To complete the yield curve the same method is used for the next bond, and so on until the last one.
29-May-01 100.000%
30-May-01 99.987%
31-May-01 99.973%
14
DATE RATE / DF
07-Jun-01 99.874%
14-Jun-01 99.777%
29-Jun-01 99.569%
31-Jul-01 99.130%
30-Nov-01 97.485%
28-Feb-02 96.258%
31-May-02 95.014%
07-Jun-02 95.463%
07-Dec-03 88.773%
26-Nov-04 84.893%
07-Dec-05 80.871%
07-Dec-06 76.755%
07-Dec-07 73.138%
13-Oct-08 70.326%
07-Dec-09 66.608%
07-Dec-15 50.084%
07-Jun-21 39.650%
07-Dec-28 28.920%
Start date of the forward yield curve: 15JUN01
PERIOD DATEARRAY
15 Jun 2001
6M 17 Dec 2001
1Y 17 Jun 2002
2Y 16 Jun 2003
3Y 15 Jun 2004
15
PERIOD DATEARRAY
4Y 15 Jun 2005
The forward dates (6M, 1Y…) can be calculated using the DfAddPeriod() function.
Syntax
=AdRate(“15JUN01”,DateArray,YieldCurve, “RM:YC ZCTYPE:DF”,”LAY:H”)
Manual Calculation
In this example we are calculating the forward yield curve:
Calculation of , the 3rd forward discount factor (17 Jun 2002, 95.56806%).
16
* Refer to the Adfin Common Calculations Guide for more financial information on
interpolation methods available in Adfin.
Example on :
FDF3=AdDepToFra(“29MAY01”;”15JUN01”;”17JUN02”;”RATES:DF”;99.76266%,95.34124%)
CONVEXITY ADJUSTMENTS
When the term structure of an interest rate is considered flat for all maturities, it can be shown that the prices of forward
and futures contracts are the same.
When interest rates are assumed to evolve stochastically, the two types of contract are no longer equivalent. Roughly
speaking, the difference lies in the fact that a future contract is highly liquid and provides immediate losses or gains.
(When there is a loss, it can be refinanced at a lower rate; when there is a profit, the benefit can be invested at a higher
rate.) The overall effect is that the price curve of the futures contract is bent slightly upwards.
Hull and White model
The price of a futures contract can be adjusted on several ways. Adfin corrects for a concave price curve (that is, it
corrects for overpricing relative to the flat rate curve) using the Hull and White model. Explicit closed formulas for this case
were derived by Kirikos and Novak in their book Convexity Conundrums. The assumptions of the model are as follows.
In the Hull and White model, the interest rate obeys the Stochastic Differential Equation
WHERE DENOTES
a deterministic function
the volatility
17
WHERE DENOTES
Under a risk-neutral interest rate process, Kirikos and Novak derived the following adjustment:
WHERE DENOTES
forward rate
convexity constant
a parameter to adjust for the fact that we are dealing with an interest
rate
When ,
WHERE DENOTES
18
19
INSTRUMENT
START DATE MATURITY DATE MARKET PRICE STRUCTURE
TYPE
20
ADJUSTED
20/03/2007 0.92408035
Manual Calculation
We start with an unadjusted term structure. Please refer to Section 2.3 for a description of this step. Suppose we obtain
the following zero curve:
UNADJUSTED UNADJUSTED
20/03/2007 0.92393344
21
To obtain the adjusted curve, we follow the same procedure used to generate a normal term structure from a series of
futures prices. That is, we must consider three cases: the normal case where the end date of one futures contract is
exactly the same as the start date of the next, the case of overlapping periods, and the case of periods separated by a
gap.
The first future starts on 16/03/2005. We therefore begin by calculating a yield curve from the beginning of the series up to
the deposit whose end date is 31/03/2005; that is, up to the fourth in the series.
DF FROM DEPOSITS
24/02/2005 1.00000000
25/02/2005 0.99992917
28/02/2005 0.99971590
07/03/2005 0.99921074
31/03/2005 0.99741409
Using these data, we interpolate to get the discount factor for the date 16MAR2005.
AdInterp(“16MAR05”, {07MAR05;31MAR05},{0.99921074, 0.99741409}) = 0.99853700
24/02/2005 1.00000000
25/02/2005 0.99992917
28/02/2005 0.99971590
07/03/2005 0.99921074
16/03/2005 0.99853700
In order to calculate the adjustments, we first construct the following table of future discount factors using the formulas set
out in Section 2.4.2:
EXPOSURE PROTECTION DF FUT
LAMBDA PHI EXP(C) DF FUT
TIME* TIME* ADJUSTED
22
* Exposure time is the Actual/360 period in years between the start date of the term structure and the start date of the
corresponding future. For example, for the first future we have an exposure time of
DfCountYears(“24FEB05”, “16MAR05”, “DCB:A0”) = 0.05555556
** Protection time is the Actual/360 period in years between the start date and the end date of the corresponding futures
contract. For example, for the first future we have a protection time of
DfCountYears(“24FEB05”, “16JUN05”, “DCB:A0”) = 0.25555556
To obtain the discount factor of the first futures contract on 16JUN05, we simply multiply the discount factor of 16MAR05,
interpolated from the partial yield curve, by the end date discount factor calculated from the formulas of Section 2.4.2.
0.99241408×0.99853700 = 0.99096218.
23
Note that the end date of this future is the same as the start date of the next future. The next discount factor is therefore
simply the product of the previous discount factor and the adjusted future (row 2 of the above table), namely
0.99096178×0.99135771 = 0.98247962.
For the next future there is a gap, so we proceed as follows.
Denote the end date of the previous future as . We already know the discount factor on this date.
Let the next short Interest rate future begin on and end on . We denote the unknown discount factors on these
dates and respectively. (In the case of a gap between the futures, )
24/02/2005 1.00000000
25/02/2005 0.99992917
28/02/2005 0.99971590
07/03/2005 0.99921074
16/03/2005 0.99853700
16/06/2005 0.99096218
15/09/2005 0.98247962
24
VASICEK-FONG MODEL
The Vasicek-Fong model is used to build zero coupon or discount factor curves from bonds only. It is based on the fact
that the discount function can be approximated by an exponential spline, as in the following formula:
WHERE DENOTES
This section describes how to calculate the above coefficients using a least-squares regression, and how to construct a
zero curve once the coefficients are known.
Least-Squares Regression
Generating a Zero Coupon Discount Factor Curve from the Vasicek- Fong Coefficients
WHERE DENOTES
LEAST-SQUARES REGRESSION
Definition
In many problems, two or more variables are inherently related but their values are obscured by random factors or
measurement error. Regression analysis is a statistical technique that explores the nature of their relationship.
The principal objective in regression analysis is to establish an equation that relates a dependent variable to one or more
independent variables. Using this equation, it is then possible to predict the value of the dependent variable if the values
of the other variables are known. The dependent variable (or response) is generally denoted . The independent
variable (also known as the regressor or predictor), assuming we have only one, is denoted .
In order to establish the quantitative relationship between and , it is necessary to obtain sample data: paired
observations of y and x, where each pair represents one data point in the sample.
The method of least squares assumes that the "best-fit" curve of a given type, meaning the curve that best represents the
underlying relationship between the variables, is that which minimizes the sum of the squared deviations between the
curve and the data points.
25
Suppose that the data points are
Polynomials are commonly used in regression analysis. The applications of the method of least squares curve fitting using
polynomials are briefly discussed as follows in the Vasicek-fong model:
The function to minimize is
WHERE DENOTES
WHERE DENOTES
26
In the example European bonds having the same rating are used to build the yield curve corresponding to the benchmark
yield curve. The Vasicek-Fong model makes it possible to use a large number of bonds: in the following example, 25
bonds are used, however, normally more bonds should be used.
INPUT ARRAY
INSTRUMENT TYPE START DATE MATURITY DATE COUPON RATE MARKET INSTRUMENT
STRUCTURE
27
INPUT ARRAY
INSTRUMENT TYPE START DATE MATURITY DATE COUPON RATE MARKET INSTRUMENT
STRUCTURE
RateStructure
KEYWORD COMMENT
MDWA:YES Minimizes errors between the model and the market prices weighted by the inverse of the
modified duration of the bonds
Syntax
=AdTermStructrure(“Input Array”,”RM:VF MDWA:YES”)
To specify the Vasicek-Fong model use the RM:VF keyword.
14-Jun-01
0.042739
1.000000
–0.928161
–0.908679
0.836841
GENERATING A ZERO COUPON DISCOUNT FACTOR CURVE FROM THE VASICEK- FONG COEFFICIENTS
In this example, all results from the AdRate() function are retrieved, and then the formulas to calculate the result are
described.
14-Jun-01
0.042739
28
1.000000
–0.928161
–0.908679
0.836841
PERIOD DATEARRAY
15 Jun 2001
6M 15 Dec 2001
1Y 15 Jun 2002
2Y 15 Jun 2003
3Y 15 Jun 2004
4Y 15 Jun 2005
5Y 15 Jun 2006
6Y 15 Jun 2007
7Y 15 Jun 2008
8Y 15 Jun 2009
9Y 15 Jun 2010
The forward periods (6M, 1Y…) can be calculated using the DfAddPeriod() function.
29
Syntax
=AdRate(“15JUN01”,DateArray,Vasicek Fong coefficients,”RM:VF”,”LAY:H”)
30
Manual Calculation
In this example we are calculating the forward yield curve.
= Discount factor using the Vasicek-Fong formula from the curve start date given by the Vasicek-Fong model
(14Jun01 in our example) to the new start date (the forward start date: 15jun01 in our example).
= Time in year from the Yield curve start date given by the Vasicek-Fong model to the new start date.
=DfCountYears(“14JUN01”,”15JUN01”,"DCB:AA")= 0.00274
The Vasicek-Fong formula for the discount factor is
and
Hence,
15 Jun 2001
100.000%
31
DATE LVDATETODATEI * DFENDI ** DISCOUNT FACTOR
*
= Time in year from the Yield curve start date given by the
Vasicek-Fong model to the date #i.
Example on the second date of the yield curve:
Using the DfCountYears() function we have:
=DfCountYears(“14JUN01”,”15DEC01”,"DCB:AA")=
0.5041096
**
= Discount factor using the Vasicek-Fong formula from the Yield
curve start date given by the Vasicek-Fong model to the date #i.
32
and
Hence,
33
BASIS SPLINE MODEL
Overview
This method models the forward function as a linear combination of basis spline functions. The basis functions are cubic
polynomials defined on overlapping sets of four consecutive nodes. At each node, the polynomials that meet are restricted
so that their first and second derivatives are continuous. There are two variants of the model: the regression spline and
the smoothing spline.
The regression spline method aims to minimize residual errors between the theoretical prices and market prices.
The smoothing spline method aims to minimize the sum of the residual errors and a "roughness penalty" describing
the smoothness of the curve. The roughness penalty limits oscillation of the polynomials between nodes, but
also decreases the goodness of fit.
There are several variants of the smoothing spline using different roughness penalties, which may vary with maturity. The
Waggoner method is more appropriate for US markets, and Anderson‟s method is more appropriate for UK markets.
In the Waggoner method, the roughness penalty is a step function with three levels, constant over the maturity intervals 0
to 1 year, 1 to 10 years, and greater than 10 years. These divisions correspond to markets for bills, notes and bonds.
In the Anderson (Bank of England) method, the roughness penalty is a continuous function. It does not focus on a special
part of the curve, as the UK market is not split into different instruments.
Choice of Nodes
The nodes are chosen from the maturities of the input bonds and evenly distributed between them. The number of nodes
is a significant choice for the term structure. The default choice is ( ), where is the number of distinct
maturities. The number of nodes can be set by the user.
The number of nodes is capped at 20, because too many splines decreases the smoothness of the curve. The method of
choosing nodes was taken from the paper 'Spline Methods for Extracting Interest Rate Curves from Coupon Bond Prices'
by Daniel Waggoner (Federal Reserve Databank working paper, pp. 97-10).
The nodes are positioned in such a way that the instrument maturities are evenly spaced between nodes.
Output
The output of the model is a series of parameters that provide an estimation of the forward rate given at maturity. The
form of the output is a two-column array. The first column contains the dates of the nodes, and two measures of the
model: the fitness and smoothness. The second column contains the linear coefficients of the forward function in the B-
spline base.
Let , and be the th bond market price, the th model price and the modified duration of the th bond.
The fitness measure is located in the penultimate row of the first column.
It is equal to:
The smoothness measure is located in the last row of the first column.
It is equal to:
THEORETICAL MODELS
Reminder: Bond Calculations
WHERE DENOTES
The forward yield curve is continuous if and only if the zero-coupon rate is continuously differentiable.
So we have the relation:
WHERE DENOTES
accrued interest
number of cash-flow
discount factor
WHERE DENOTES
accrued interest
35
WHERE DENOTES
maturity
And
The basis spline is made of cubic polynomials. K is the number of basis spline functions (K=n+2, where n is the number of
nodes).
Regression Method
McCulloch (1971) approximates the discount function with a linear combination of B-splines. Instead of the discount
factor, the regression method that will be described approximates the forward function in a B-spline ( )
The coefficients are unknowns. Let be the discounted bond price vector with modelized prices. The vector
beta must be the solution of the following equation:
The problem is solved from Fisher (1995) with least square methods (see "Least-Squares Regression" for details).
As for the regression method, the forward function is interpolated with a spline function in the basis :
36
Waggoner Method
The Waggoner method is a special case of smoothing spline with a step function. It takes into account different kinds of
products of the US market as a reference (bills, notes and bonds).
A high value of increases smoothness in large maturities, which is a regular problem with cubic splines.
Anderson's method
Anderson's method is another special case of a smoothing spline with a continuous function . It takes into account
some special products such as the UK market with gilt.
WHERE EQUALS
3.5
1.44269504088896
INSTRUMENT
INSTRUMENT TYPE START DATE MATURITY DATE COUPON RATE MARKET
STRUCTURE
37
INPUT ARRAY
INSTRUMENT
INSTRUMENT TYPE START DATE MATURITY DATE COUPON RATE MARKET
STRUCTURE
RateStructure
KEYWORD COMMENT
MDWA:YES Minimizes errors between model and market prices weighted by the inverse of the bond
volatility
REGRESSION MODEL
14-Jun-01 4.74%
22-Feb-02 4.09%
26-Aug-03 4.15%
26-Apr-06 4.43%
04-Jul-10 5.52%
38
REGRESSION MODEL
04-Jan-24 5.45%
04-Jan-30 8.87%
1.87 3.41%
6.17E-05 6.93%
RateStructure
KEYWORD COMMENT
MDWA:YES Minimizes errors between model and market prices weighted by the inverse of the bond
volatility (MDWA:NO minimizes errors between model and market prices)
WAGGONER METHOD
14-Jun-01 4.75%
22-Feb-02 4.09%
26-Aug-03 4.16%
26-Apr-06 4.43%
04-Jul-10 5.46%
04-Jan-24 6.09%
04-Jan-30 6.39%
2.77 6.52%
5.93E-05 6.56%
39
RateStructure
KEYWORD COMMENT
MDWA:YES Minimizes errors between model and market prices weighted by the inverse of the bond
volatility (MDWA:NO minimizes errors between model and market prices)
WAGGONER METHOD
14-Jun-01 4.69%
22-Feb-02 4.18%
26-Aug-03 4.05%
26-Apr-06 4.57%
04-Jul-10 5.27%
04-Jan-24 6.27%
04-Jan-30 6.92%
2.33 5.56%
2.96E-05 5.21%
GENERATING A ZERO COUPON DISCOUNT FACTOR CURVE FROM BASIS SPLINE COEFFICIENTS
In the example the discount factor yield curve is retrieved from the coefficients calculated by the Regression model in the
previous part.
Start date of the forward yield curve: 15JUN01
REGRESSION COEFFICIENTS
14-Jun-01 4.74%
22-Feb-02 4.09%
26-Aug-03 4.15%
26-Apr-06 4.43%
04-Jul-10 5.52%
04-Jan-24 5.45%
04-Jan-30 8.87%
40
REGRESSION COEFFICIENTS
1.87 3.41%
6.17E-05 6.93%
PERIOD DATEARRAY
15 Jun 2001
6M 15 Dec 2001
1Y 15 Jun 2002
2Y 15 Jun 2003
3Y 15 Jun 2004
4Y 15 Jun 2005
5Y 15 Jun 2006
6Y 15 Jun 2007
7Y 15 Jun 2008
8Y 15 Jun 2009
9Y 15 Jun 2010
The forward dates (6M, 1Y…) can be calculated using the DfAddPeriod() function.
Syntax
=AdRate(“15JUN01”,DateArray,Regression coefficients,”RM:BSPLINE MDWA:YES SMOOTH:NULL”,”LAY:H”)
41
Results returned by the function
=AdRate() returns:
42