# Documentation

### This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

# cpndatenq

Next quasi-coupon date for fixed-income security

## Syntax

``NextQuasiCouponDate = cpndatenq(Settle,Maturity)``
``NextQuasiCouponDate = cpndatenq(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)``

## Description

example

````NextQuasiCouponDate = cpndatenq(Settle,Maturity)` determines the next quasi coupon date for a portfolio of `NUMBONDS` fixed income securities whether or not the first or last coupon is normal, short, or long. For zero coupon bonds, `cpndatenq` returns quasi coupon dates as if the bond had a semiannual coupon structure. Successive quasi coupon dates determine the length of the standard coupon period for the fixed income security of interest and do not necessarily coincide with actual coupon payment dates.Required input arguments must be number of bonds, `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS`, conforming vectors or scalars.```

example

````NextQuasiCouponDate = cpndatenq(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)` determines the next quasi coupon date for a portfolio of `NUMBONDS` fixed income securities whether or not the first or last coupon is normal, short, or long using optional input arguments. Optional input arguments must be either `NUMBONDS`-by-`1` or `1`-by-`NUMBONDS` conforming vectors, scalars, or empty matrices.If all the inputs for `Settle`, `Maturity`, `IssueDate`, `FirstCouponDate`, and `LastCouponDate` are either serial date numbers or date character vectors, then `NextQuasiCouponDate` is returned as a serial date number. The function `datestr` converts a serial date number to a formatted date character vector.If any of the inputs for `Settle`, `Maturity`, `IssueDate`, `FirstCouponDate`, and `LastCouponDate` are datetime arrays, then `NextQuasiCouponDate` is returned as a datetime array.```

## Examples

collapse all

Given a pair of bonds with the following characteristics:

```Settle = char('30-May-1997','10-Dec-1997'); Maturity = char('30-Nov-2002','10-Jun-2004');```

Compute `NextCouponDate` for this pair of bonds.

```NextCouponDate = cpndaten(Settle, Maturity); datestr(NextCouponDate)```
```ans = 2x11 char array '31-May-1997' '10-Jun-1998' ```

Compute the next quasi coupon dates for these two bonds.

```NextQuasiCouponDate = cpndatenq(Settle, Maturity); datestr(NextQuasiCouponDate)```
```ans = 2x11 char array '31-May-1997' '10-Jun-1998' ```

Because no `FirstCouponDate` has been specified, the results are identical.

Now supply an explicit `FirstCouponDate` for each bond.

`FirstCouponDate = char('30-Nov-1997','10-Dec-1998');`

Compute the next coupon dates.

```NextCouponDate = cpndaten(Settle, Maturity, 2, 0, 1, [],... FirstCouponDate); datestr(NextCouponDate)```
```ans = 2x11 char array '30-Nov-1997' '10-Dec-1998' ```

The next coupon dates are identical to the specified first coupon dates.

Now recompute the next quasi coupon dates.

```NextQuasiCouponDate = cpndatenq(Settle, Maturity, 2, 0, 1, [],... FirstCouponDate); datestr(NextQuasiCouponDate)```
```ans = 2x11 char array '31-May-1997' '10-Jun-1998' ```

These results illustrate the distinction between actual coupon payment dates and quasi coupon dates. `FirstCouponDate` (and `LastCouponDate`, as well), when specified, is associated with an actual coupon payment and also serves as the synchronization date for determining all quasi coupon dates. Since each bond in this example pays semiannual coupons, and the first coupon date occurs more than six months after settlement, each will have an intermediate quasi coupon date before the actual first coupon payment occurs.

## Input Arguments

collapse all

Settlement date, specified as a vector of serial date number, date character vector, or datetime array. `Settle` must be earlier than `Maturity`.

Data Types: `double` | `char` | `datetime`

Maturity date, specified as a vector of serial date numbers, date character vectors, or datetime arrays.

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

For more information, see basis.

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 serial date number, date character vector, or datetime array.

Data Types: `double` | `char` | `datetime`

Date when a bond makes its first coupon payment, specified as a serial date number, date character vector, or datetime array.

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

Data Types: `double` | `char` | `datetime`

Last coupon date of a bond before maturity date, specified as a serial date number, date character vector, or datetime array.

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

Data Types: `double` | `char` | `datetime`

## Output Arguments

collapse all

Next quasi coupon date for a portfolio of `NUMBONDS` fixed income securities, whether or not the first or last coupon is normal, short, or long, returned as a `NUMBONDS`-by-`1` vector.

For zero coupon bonds, `cpndatenq` returns quasi coupon dates as if the bond had a semiannual coupon structure. Successive quasi coupon dates determine the length of the standard coupon period for the fixed income security of interest and do not necessarily coincide with actual coupon payment dates.

If all of the inputs for `Settle`, `Maturity`, `IssueDate`, `FirstCouponDate`, and `LastCouponDate` are either serial date numbers or date character vectors, then `NextQuasiCouponDate` is returned as a serial date number. The function `datestr` converts a serial date number to a formatted date character vector.

If any of the inputs for `Settle`, `Maturity`, `IssueDate`, `FirstCouponDate`, and `LastCouponDate` are datetime arrays, then `NextQuasiCouponDate` is returned as a datetime array.

## See Also

#### Introduced before R2006a

Was this topic helpful?

Download ebook