Main Content

cpndatep

Previous coupon date for fixed-income security

Description

PreviousCouponDate = cpndatep(Settle,Maturity) returns the previous coupon date on or before settlement for a portfolio of bonds. This function finds the previous coupon date whether or not the coupon structure is synchronized with the maturity date. For zero coupon bonds the previous coupon date is the issue date, if available. However, if the issue date is not supplied, the previous coupon date for zero coupon bonds is the previous quasi coupon date calculated as if the frequency is semiannual.

Required input arguments must be number of bonds, NUMBONDS-by-1 or 1-by-NUMBONDS, conforming vectors or scalars.

example

PreviousCouponDate = cpndatep(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate) returns the previous coupon date on or before settlement for a portfolio of bonds.

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 strings or date character vectors, then PreviousCouponDate is returned as a serial date number. Use the function datetime to convert serial date numbers to formatted date character vectors.

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

example

Examples

collapse all

Determine the PreviousCouponDate when using character vectors for input arguments.

PreviousCouponDate = cpndatep(datetime(1997,3,14),datetime(2000,6,30),2, 0, 0)
PreviousCouponDate = datetime
   30-Dec-1996

Determine the PreviousCouponDate when using datetime arrays for input arguments.

PreviousCouponDate = cpndatep(datetime(1997,3,14),datetime(2000,6,30),2, 0, 0)
PreviousCouponDate = datetime
   30-Dec-1996

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

PreviousCouponDate = cpndatep(datetime(1997,3,14),datetime(2000,6,30),2, 0, 1)
PreviousCouponDate = datetime
   31-Dec-1996

Determine the PreviousCouponDate when using an input vector for Maturity.

Maturity = [datetime(2000,4,30) ; datetime(2000,5,31) ; datetime(2000,6,30)];
PreviousCouponDate = cpndatep(datetime(1997,3,14), Maturity)
PreviousCouponDate = 3x1 datetime
   31-Oct-1996
   30-Nov-1996
   31-Dec-1996

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, cpndatep 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, cpndatep 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

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 NUMBONDS-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, cpndatep 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, cpndatep 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, cpndatep also accepts serial date numbers as inputs, but they are not recommended.

Data Types: char | string | datetime

Output Arguments

collapse all

Previous coupon date on or before settlement for portfolio of bonds, returned as an NUMBONDS-by-1 vector. If settlement is a coupon date, this function returns the settlement date. The actual coupon date strictly on or before settlement is returned, but not exceeding the issue date, if available. Thus, this function always returns the lesser of the actual issue date and the previous coupon payment date with respect to the settlement date.

If all the inputs for Settle, Maturity, IssueDate, FirstCouponDate, and LastCouponDate are either strings or date character vectors, then PreviousCouponDate is returned as a serial date number. Use the function datetime to convert serial date numbers to formatted datetime arrays.

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

Version History

Introduced before R2006a

expand all