Bond convexity given yield
In R2017b, 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
.
[
computes the convexity of YearConvexity
,PerConvexity
] = bndconvy(Yield
,CouponRate
,Settle
,Maturity
)NUMBONDS
fixed income securities
given a clean price for each bond.
bndconvy
determines the convexity 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).
bndconvy
also determines the convexity of a zero coupon
bond.
[
adds optional name-value pair arguments. YearConvexity
,PerConvexity
] = bndconvy(___,Name,Value
)
This example shows how to compute the convexity of a bond at three different yield values.
Yield = [0.04; 0.055; 0.06]; CouponRate = 0.055; Settle = '02-Aug-1999'; Maturity = '15-Jun-2004'; Period = 2; Basis = 0; [YearConvexity, PerConvexity]=bndconvy(Yield, CouponRate,... Settle, Maturity, Period, Basis)
YearConvexity = 3×1
21.4825
21.0358
20.8885
PerConvexity = 3×1
85.9298
84.1434
83.5541
This example shows how to use datetime
inputs to compute the convexity of a bond at three different yield values.
Yield = [0.04; 0.055; 0.06]; CouponRate = 0.055; Settle = datetime('02-Aug-1999','Locale','en_US'); Maturity = datetime('15-Jun-2004','Locale','en_US'); Period = 2; Basis = 0; [YearConvexity, PerConvexity]=bndconvy(Yield, CouponRate,... Settle, Maturity, Period, Basis)
YearConvexity = 3×1
21.4825
21.0358
20.8885
PerConvexity = 3×1
85.9298
84.1434
83.5541
Yield
— Yield to maturity on semiannual basisYield to maturity on a semiannual basis, specified as numeric value
using a scalar or a NUMBONDS
-by-1
or 1
-by-NUMBONDS
vector.
Data Types: double
CouponRate
— Annual percentage rate used to determine coupons payable on a bondAnnual 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
Settle
— Settlement date for certificate of depositSettlement date for the certificate of deposit, specified as a scalar
or a NUMBONDS
-by-1
or
1
-by-NUMBONDS
vector using
serial date numbers, date character vectors, or datetime arrays. The
Settle
date must be before the
Maturity
date.
Data Types: double
| char
| datetime
Maturity
— Maturity date for certificate of depositMaturity date for the certificate of deposit, specified as a scalar or
a NUMBONDS
-by-1
or
1
-by-NUMBONDS
vector using
serial date numbers, date character vectors, or datetime arrays.
Data Types: double
| char
| datetime
Specify optional
comma-separated pairs of Name,Value
arguments. Name
is
the argument name and Value
is the corresponding value.
Name
must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN
.
[YearConvexity,PerConvexity] =
bndconvy(Yield,CouponRate,Settle,
Maturity,'Period',4,'Basis',7)
'Period'
— Number of coupon payments per year2
(default) | numeric with values 0
, 1
,
2
, 3
,
4
, 6
or
12
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
'Basis'
— Day-count basis of instrument0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
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
'EndMonthRule'
— End-of-month rule flag1
(in effect) (default) | nonnegative integer 0
or
1
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
'IssueDate'
— Bond issue dateBond 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
serial date numbers, date character vectors, or datetime arrays.
If you do not specify an IssueDate
, the cash
flow payment dates are determined from other inputs.
Data Types: double
| char
| datetime
'FirstCouponDate'
— Irregular or normal first coupon dateIrregular 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
serial date numbers, date character vectors, or datetime arrays.
If you do not specify a FirstCouponDate
, the
cash flow payment dates are determined from other inputs.
Data Types: double
| char
| datetime
'LastCouponDate'
— Irregular or normal last coupon dateIrregular 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
serial date numbers, date character vectors, or datetime arrays.
If you do not specify a LastCouponDate
, the
cash flow payment dates are determined from other inputs.
Data Types: double
| char
| datetime
'StartDate'
— Forward starting date of paymentsForward 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
serial date numbers, date character vectors, or datetime arrays. 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.
Data Types: double
| char
| datetime
'Face'
— Face value of bond100
(default) | numericFace 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
'CompoundingFrequency'
— Compounding frequency for yield calculation2
, ICMA bases
uses 1
(default) | integer with value of 1
, 2
,
3
, 4
,
6
, or 12
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 compounding
2
— Semiannual compounding
3
— Compounding three times per
year
4
— Quarterly compounding
6
— Bimonthly compounding
12
— Monthly compounding
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
'DiscountBasis'
— Basis used to compute the discount factors for computing the yield0
(default) | integers of the set [0...13]
| vector of integers of the set [0...13]
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.
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
'LastCouponInterest'
— Compounding convention for computing yield of a bond in last coupon periodcompound
(default) | values are simple
or
compound
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:
simple
compound
Data Types: char
| cell
YearConvexity
— Yearly (annualized) convexityYearly (annualized) convexity, returned as a
NUMBONDS
-by-1
vector.
PerConvexity
— Periodic convexity reported on semiannual bond basisPeriodic convexity reported on a semiannual bond basis (in accordance
with SIA convention), returned as a
NUMBONDS
-by-1
vector.
[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.
A modified version of this example exists on your system. Do you want to open this version instead? (es)
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.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.