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 basisnumeric

Yield 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 bonddecimal

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`

`Settle`

— Settlement date for certificate of depositserial date number | date character vector | datetime

Settlement 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 depositserial date number | date character vector | datetime

Maturity 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 year`2`

(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 instrument`0`

(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 flag`1`

(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 dateserial date number | date character vector | datetime

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
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 dateserial date number | date character vector | 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
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 dateserial date number | date character vector | 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
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 paymentsserial date number | date character vector | 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
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 bond`100`

(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 calculationSIA bases uses

`2`

, 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 yieldSIA uses

`0`

(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 period`compound`

(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) convexitynumeric

Yearly (annualized) convexity, returned as a
`NUMBONDS`

-by-`1`

vector.

`PerConvexity`

— Periodic convexity reported on semiannual bond basisnumeric

Periodic 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?

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.

- América Latina (Español)
- Canada (English)
- United States (English)

- 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)