Bond key rate duration given zero curve
KRDUR = bndkrdur(ZeroData, CouponRate,
Settle, Maturity) KRDUR = bndkrdur(ZeroData, CouponRate, Settle,
Maturity, 'Parameter1', Value1, 'Parameter2',
Zero curve represented as a
Scalar MATLAB date number for the settlement date
for all the bonds and the zero data.
(Optional) Coupons per year of the bond. A vector of
integers. Acceptable values are
(Optional) Interpolation method used to obtain points from the zero curve. Acceptable values are:
(Optional) Scalar value that zero curve is shifted up and down to compute duration. Default is .01 (100 basis points).
(Optional) Rates to perform the duration calculation,
specified as a time to maturity. By default,
(Optional) Compounding frequency of the curve. Default is semiannual.
(Optional) Basis of the curve, where the choices are
(Optional) Day-count basis of the bond instrument. A vector of integers:
For more information, see basis.
(Optional) End-of-month rule. This rule applies only
(Optional) Date when a bond was issued.
(Optional) Date when a bond makes its first coupon payment;
used when bond has an irregular first coupon period. When
(Optional) Last coupon date of a bond before the maturity
date; used when bond has an irregular last coupon period. In the absence
of a specified
(Optional) Date when a bond actually starts (the date
from which a bond cash flow is considered). To make an instrument
forward-starting, specify this date as a future date. If you do not
(Optional) Face or par value. Default =
Note: You must enter the optional arguments as parameter/value pairs.
KRDUR = bndkrdur(ZeroData, CouponRate, Settle, Maturity)
KRDUR = bndkrdur(ZeroData, CouponRate, Settle, Maturity,
'Parameter1', Value1, 'Parameter2', Value2, ...)
The output argument
KRDUR is a
of key rate durations.
bndkrdur computes the key rate durations
for one or more bonds given a zero curve and a set of key rates. By
default, the key rates are each of the zero curve rates. For each
key rate, the duration is computed by shifting the zero curve up and
down by a specified amount (
ShiftValue) at that
particular key rate, computing the present value of the bond in each
case with the new zero curves, and then evaluating the following:
The shift to the curve is computed by shifting the particular
key rate by the
This example shows how to compute the key rate duration of a bond for key rate times of 2, 5, 10, and 30 years.
ZeroRates = [0.0476 .0466 .0465 .0468 .0473 .0478 ... .0493 .0539 .0572 .0553 .0530]'; ZeroDates = daysadd('31-Dec-1998',[30 360 360*2 360*3 360*5 ... 360*7 360*10 360*15 360*20 360*25 360*30],1); ZeroData = [ZeroDates ZeroRates]; krdur = bndkrdur(ZeroData,.0525,'12/31/1998',... '11/15/2028','KeyRates',[2 5 10 30])
krdur = 0.2986 0.8791 4.1353 9.5814
Golub, B.W. and L.M. Tilman, Risk Management: Approaches for Fixed Income Markets Wiley, 2000.
Tuckman, B. Fixed Income Securities: Tools for Today's Markets Wiley, 2002.