# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# bndconvp

Bond convexity given price

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`.

## Syntax

``[YearConvexity,PerConvexity] = bndconvp(Price,CouponRate,Settle,Maturity)``
``[YearConvexity,PerConvexity] = bndconvp(___,Name,Value)``

## Description

example

````[YearConvexity,PerConvexity] = bndconvp(Price,CouponRate,Settle,Maturity)` computes the convexity of `NUMBONDS` fixed income securities given a clean price for each bond.`bndconvp` 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). `bndconvp` also determines the convexity of a zero coupon bond.```

example

````[YearConvexity,PerConvexity] = bndconvp(___,Name,Value)` adds optional name-value pair arguments. ```

## Examples

collapse all

This example shows how to compute the convexity of three bonds given their prices.

```Price = [106; 100; 98]; CouponRate = 0.055; Settle = '02-Aug-1999'; Maturity = '15-Jun-2004'; Period = 2; Basis = 0; [YearConvexity, PerConvexity] = bndconvp(Price,... CouponRate,Settle, Maturity, Period, Basis)```
```YearConvexity = 21.4447 21.0363 20.8951 ```
```PerConvexity = 85.7788 84.1454 83.5803 ```

This example shows how to compute the convexity of three bonds given their prices using datetime inputs.

```Price = [106; 100; 98]; CouponRate = 0.055; Period = 2; Basis = 0; Settle = datetime('02-Aug-1999','Locale','en_US'); Maturity = datetime('15-Jun-2004','Locale','en_US'); [YearConvexity, PerConvexity] = bndconvp(Price,... CouponRate, Settle, Maturity, Period, Basis)```
```YearConvexity = 21.4447 21.0363 20.8951 ```
```PerConvexity = 85.7788 84.1454 83.5803 ```

## Input Arguments

collapse all

Clean price (excludes accrued interest), specified as numeric 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 serial date numbers, date character vectors, or datetime arrays. The `Settle` date must be before the `Maturity` date.

Data Types: `double` | `char` | `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`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```[YearConvexity,PerConvexity] = bndconvp(Price,CouponRate,Settle, Maturity,'Period',4,'Basis',7)```

collapse all

Number of coupon payments per year, specified as 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 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

Data Types: `double`

End-of-month rule flag, specified as 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 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`

Irregular or normal first coupon date, specified as 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`

Irregular or normal last coupon date, specified as 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`

Forward starting date of payments, 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 `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 value of the bond, specified as a scalar or a `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS` vector.

Data Types: `double`

Compounding frequency for yield calculation, specified as 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

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

### 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 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`

## Output Arguments

collapse all

Yearly (annualized) convexity, returned as a `NUMBONDS`-by-`1` vector.

Periodic convexity reported on a semiannual bond basis (in accordance with SIA convention), returned as a `NUMBONDS`-by-`1` vector.

## 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.