bnddury
Bond duration given yield
Syntax
Description
[
computes the Macaulay and modified duration of ModDuration,YearDuration,PerDuration] = bnddury(Yield,CouponRate,Settle,Maturity)NUMBONDS fixed
income securities given yield to maturity for each bond.
bnddury determines the Macaulay and modified duration for a
bond whether the first or last coupon periods in the coupon structure are short or
long (that is, whether the coupon structure is synchronized to maturity).
bnddury also determines the Macaulay and modified duration
for a zero coupon bond.
[
adds optional name-value pair arguments. ModDuration,YearDuration,PerDuration] = bnddury(___,Name,Value)
Examples
This example shows how to compute the duration of a bond at three different yield values.
Yield = [0.04; 0.055; 0.06]; CouponRate = 0.055; Settle = datetime(1999,8,2); Maturity = datetime(2004,6,15); Period = 2; Basis = 0; [ModDuration,YearDuration,PerDuration]=bnddury(Yield,... CouponRate, Settle, Maturity, Period, Basis)
ModDuration = 3×1
4.2444
4.1924
4.1751
YearDuration = 3×1
4.3292
4.3077
4.3004
PerDuration = 3×1
8.6585
8.6154
8.6007
Input Arguments
Yield to maturity on a semiannual basis, specified as a decimal value
using a scalar or a NUMBONDS-by-1 or
1-by-NUMBONDS vector.
Data Types: double
Annual percentage rate used to determine the coupons payable on a bond,
specified as decimal value using a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector.
Data Types: double
Settlement date for the certificate of deposit, specified as a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors. The
Settle date must be before the
Maturity date.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Maturity date for the certificate of deposit, specified as a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
Example: [ModDuration,YearDuration,PerDuration] =
bnddury(Yield,CouponRate,Settle,Maturity,'Period',4,'Basis',7)
Number of coupon payments per year, specified as the comma-separated
pair consisting of 'Period' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using the
values: 0, 1,
2, 3, 4,
6, or 12.
Data Types: double
Day-count of the instrument, specified as the comma-separated pair
consisting of 'Basis' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
supported value:
0 = actual/actual
1 = 30/360 (SIA)
2 = actual/360
3 = actual/365
4 = 30/360 (PSA)
5 = 30/360 (ISDA)
6 = 30/360 (European)
7 = actual/365 (Japanese)
8 = actual/actual (ICMA)
9 = actual/360 (ICMA)
10 = actual/365 (ICMA)
11 = 30/360E (ICMA)
12 = actual/365 (ISDA)
13 = BUS/252
For more information, see Basis.
Data Types: double
End-of-month rule flag, specified as the comma-separated pair
consisting of 'EndMonthRule' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector. This
rule applies only when Maturity is an end-of-month
date for a month having 30 or fewer days.
0= Ignore rule, meaning that a bond coupon payment date is always the same numerical day of the month.1= Set rule on, meaning that a bond coupon payment date is always the last actual day of the month.
Data Types: logical
Bond Issue date, specified as the comma-separated pair consisting of
'IssueDate' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors.
If you do not specify an IssueDate, the cash flow
payment dates are determined from other inputs.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Irregular or normal first coupon date, specified as the
comma-separated pair consisting of 'FirstCouponDate'
and a scalar or a NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors.
If you do not specify a FirstCouponDate, the cash
flow payment dates are determined from other inputs.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Irregular or normal last coupon date, specified as the comma-separated
pair consisting of 'LastCouponDate' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors.
If you do not specify a LastCouponDate, the cash
flow payment dates are determined from other inputs.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Forward starting date of payments, specified as the comma-separated
pair consisting of 'StartDate' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector using a
datetime array, string array, or date character vectors. The
StartDate is 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 specify a StartDate, the effective
start date is the Settle date.
To support existing code, bnddury also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: char | string | datetime
Face value of the bond, specified as the comma-separated pair
consisting of 'Face' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector.
Data Types: double
Compounding frequency for yield calculation, specified as the
comma-separated pair consisting of
'CompoundingFrequency' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector.
1— Annual compounding2— Semiannual compounding3— Compounding three times per year4— Quarterly compounding6— Bimonthly compounding12— Monthly compounding
Note
By default, SIA bases
(0-7) and
BUS/252 use a semiannual compounding
convention and ICMA bases
(8-12) use an annual
compounding convention.
Data Types: double
Basis used to compute the discount factors for computing the yield,
specified as the comma-separated pair consisting of
'DiscountBasis' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector. Values
are:
0 = actual/actual
1 = 30/360 (SIA)
2 = actual/360
3 = actual/365
4 = 30/360 (PSA)
5 = 30/360 (ISDA)
6 = 30/360 (European)
7 = actual/365 (Japanese)
8 = actual/actual (ICMA)
9 = actual/360 (ICMA)
10 = actual/365 (ICMA)
11 = 30/360E (ICMA)
12 = actual/365 (ISDA)
13 = BUS/252
For more information, see Basis.
Note
If a SIA day-count basis is defined in the
Basis input argument and there is no
value assigned for DiscountBasis, the default
behavior is for SIA bases to use the actual/actual day count to
compute discount factors.
If an ICMA day-count basis or BUS/252 is defined in the
Basis input argument and there is no
value assigned for DiscountBasis, the
specified bases from the Basis input argument
are used.
Data Types: double
Compounding convention for computing the yield of a bond in the last
coupon period, specified as the comma-separated pair consisting of
'LastCouponInterest' and a scalar or a
NUMBONDS-by-1 or
1-by-NUMBONDS vector.
LastCouponInterest is based on only the last
coupon and the face value to be repaid. Acceptable values are:
simplecompound
Data Types: char | cell
Output Arguments
Modified duration in years reported on a semiannual bond basis (in
accordance with SIA convention), returned as a
NUMBONDS-by-1 vector.
Macaulay duration in years, returned as a
NUMBONDS-by-1 vector.
Periodic Macaulay duration reported on a semiannual bond basis (in
accordance with SIA convention), returned as a
NUMBONDS-by-1 vector.
More About
Bond duration is a measure of the sensitivity of a bond's price to changes in interest rates.
Bond duration represents the weighted average time until a bond's cash flows (interest and principal payments) are received. Duration is a critical concept in fixed-income investing because it helps investors assess the interest-rate risk associated with a bond or a bond portfolio.
References
[1] Krgin, D. Handbook of Global Fixed Income Calculations. Wiley, 2002.
[2] Mayle, J. "Standard Securities Calculations Methods: Fixed Income Securities Formulas for Analytic Measures." SIA, Vol 2, Jan 1994.
[3] Stigum, M., Robinson, F. Money Market and Bond Calculation. McGraw-Hill, 1996.
Version History
Introduced before R2006aAlthough bnddury supports serial date numbers,
datetime values are recommended instead. The
datetime data type provides flexible date and time
formats, storage out to nanosecond precision, and properties to account for time
zones and daylight saving time.
To convert serial date numbers or text to datetime values, use the datetime function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y =
2021
There are no plans to remove support for serial date number inputs.
The specification of optional input arguments has changed. While the previous
ordered inputs syntax is still supported, it may no longer be supported in a future
release. Use the optional name-value pair inputs: Period,
Basis, EndMonthRule,
IssueDate,FirstCouponDate,
LastCouponDate,
StartDate,Face,
CompoundingFrequency, DiscountBasis,
and LastCouponInterest.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)