# cpnpersz

Number of days in coupon period

## Syntax

``NumDaysPeriod = cpnpersz(Settle,Maturity)``
``NumDaysPeriod = cpnpersz(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)``

## Description

example

````NumDaysPeriod = cpnpersz(Settle,Maturity)` returns the number of days in the coupon period containing the settlement date. For zero coupon bonds, coupon dates are computed as if the bonds have a semiannual coupon structure. `NumDaysPeriod` returns a `NUMBONDS`-by-`1` vector containing the number of days in the coupon period containing the settlement date..Required input arguments must be number of bonds, `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS`, conforming vectors or scalars.```

example

````NumDaysPeriod = cpnpersz(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)` returns the number of days in the coupon period containing the settlement date using optional input arguments. Optional input arguments must be either `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS` conforming vectors, scalars, or empty matrices.```

## Examples

collapse all

Determine the `NumDaysPeriod` when using datetimes for input arguments.

`NumDaysPeriod = cpnpersz(datetime(2000,9,14),datetime(2001,6,30), 2, 0, 0)`
```NumDaysPeriod = 183 ```

Determine the `NumDaysPeriod` when using character vectors for input arguments and the optional argument for `EndMonthRule`.

`NumDaysPeriod = cpnpersz('14-Sep-2000', '30-Jun-2001', 2, 0, 1)`
```NumDaysPeriod = 184 ```

Determine the `NumDaysPeriod` when using an input vector for `Maturity`.

```Maturity = [datetime(2001,6,30) ; datetime(2001,5,31) ; datetime(2001,6,30)]; NumDaysPeriod = cpnpersz('14-Sep-2000', Maturity)```
```NumDaysPeriod = 3×1 184 183 184 ```

## Input Arguments

collapse all

Settlement date, specified as a `NUMBONDS`-by-`1` vector using a datetime array, string array, or date character vectors. `Settle` must be earlier than `Maturity`.

To support existing code, `cpnpersz` also accepts serial date numbers as inputs, but they are not recommended.

Data Types: `char` | `string` | `datetime`

Maturity date, specified as a `NUMBONDS`-by-`1` vector using a datetime array, string array, or date character vectors.

To support existing code, `cpnpersz` also accepts serial date numbers as inputs, but they are not recommended.

Data Types: `char` | `string` | `datetime`

Coupons per year of the bond, specified as a vector of positive integers from the set `[1,2,3,4,6,12]`.

Data Types: `single` | `double`

Day-count basis of the instrument, specified as an integer with a value of `0` through `13` or an `N`-by-`1` vector of integers with values of `0` through `13`.

• 0 = actual/actual (default)

• 1 = 30/360 (SIA)

• 2 = actual/360

• 3 = actual/365

• 4 = 30/360 (BMA)

• 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: `single` | `double`

End-of-month rule flag for month having 30 or fewer days, specified as a nonnegative integer [`0`, `1`] using an `N`-by-`1` vector of values. 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’s coupon payment date is always the same numerical day of the month.

• `1` = Set rule on, meaning that a bond’s coupon payment date is always the last actual day of the month.

Data Types: `logical`

Bond issue date, specified as a `NUMBONDS`-by-`1` vector using a datetime array, string array, or date character vectors.

To support existing code, `cpnpersz` also accepts serial date numbers as inputs, but they are not recommended.

Data Types: `char` | `string` | `datetime`

Date when a bond makes its first coupon payment, specified as a `NUMBONDS`-by-`1` vector using a datetime array, string array, or date character vectors.

`FirstCouponDate` is used when a bond has an irregular first coupon period. When `FirstCouponDate` and `LastCouponDate` are both specified, `FirstCouponDate` takes precedence in determining the coupon payment structure. If you do not specify a `FirstCouponDate`, the cash flow payment dates are determined from other inputs.

To support existing code, `cpnpersz` also accepts serial date numbers as inputs, but they are not recommended.

Data Types: `char` | `string` | `datetime`

Last coupon date of a bond before maturity date, specified as a `NUMBONDS`-by-`1` vector using a datetime array, string array, or date character vectors.

`LastCouponDate` is used when a bond has an irregular last coupon period. In the absence of a specified `FirstCouponDate`, a specified `LastCouponDate` determines the coupon structure of the bond. The coupon structure of a bond is truncated at the `LastCouponDate`, regardless of where it falls, and is followed only by the bond's maturity cash flow date. If you do not specify a `LastCouponDate`, the cash flow payment dates are determined from other inputs.

To support existing code, `cpnpersz` also accepts serial date numbers as inputs, but they are not recommended.

Data Types: `char` | `string` | `datetime`

## Output Arguments

collapse all

Number of days in the coupon period containing the settlement date, returned as an `NUMBONDS`-by-`1` vector. For zero coupon bonds, coupon dates are computed as if the bonds have a semiannual coupon structure.

## Version History

Introduced before R2006a

expand all