cpndaysp

Number of days since previous coupon date

Syntax

``NumDaysPrevious = cpndaysp(Settle,Maturity)``
``NumDaysPrevious = cpndaysp(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)``

Description

example

````NumDaysPrevious = cpndaysp(Settle,Maturity)` returns the number of days between the previous coupon date and the settlement date for a bond or set of bonds. When the coupon frequency is 0 (a zero coupon bond), the previous coupon date is calculated as if the frequency were semiannual. `NumDaysPrevious` returns a `NUMBONDS`-by-`1` vector containing the number of days from the previous coupon date to settlement.Required input arguments must be number of bonds, `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS`, conforming vectors or scalars.```

example

````NumDaysPrevious = cpndaysp(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)` returns the number of days between the previous coupon date and the settlement date for a bond or set of bonds 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 `NumDaysPrevious` when using datetimes for input arguments.

`NumDaysPrevious = cpndaysp(datetime(2000,3,14),datetime(2001,6,30), 2, 0, 0)`
```NumDaysPrevious = 75 ```

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

`NumDaysPrevious = cpndaysp('14-Mar-2000','30-Jun-2001', 2, 0, 1)`
```NumDaysPrevious = 74 ```

Determine the `NumDaysPrevious` when using a datetime array for `Maturity`.

```Maturity = [datetime(2001,4,30) ; datetime(2001,5,31) ; datetime(2001,6,30)]; NumDaysPrevious = cpndaysp(datetime(2000,3,14), Maturity)```
```NumDaysPrevious = 3×1 135 105 74 ```

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, `cpndaysp` 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, `cpndaysp` 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 with value `0` through `13` or an `N`-by-`1` vector of integers with values `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, `cpndaysp` 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, `cpndaysp` 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, `cpndaysp` also accepts serial date numbers as inputs, but they are not recommended.

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

Output Arguments

collapse all

Number of days between the previous coupon date and the settlement date, returned as an `NUMBONDS`-by-`1` vector. If the settlement date is a coupon date, this function always returns the settlement date.

When the coupon frequency is 0 (a zero coupon bond), the previous coupon date is calculated as if the frequency were semiannual.

Version History

Introduced before R2006a

expand all