Documentation

This is machine translation

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

cpndatepq

Previous quasi-coupon date for fixed-income security

Syntax

  • PreviousQuasiCouponDate = cpndatepq(Settle,Maturity)
    example
  • PreviousQuasiCouponDate = cpndatepq(Settle,Maturity,Period,Basis,
    EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)
    example

Description

example

PreviousQuasiCouponDate = cpndatepq(Settle,Maturity) determines the previous quasi-coupon date for a set of NUMBONDS fixed income securities. Prior 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. This function finds the previous quasi-coupon date for bonds with a coupon structure whose first or last period is either normal, short, or long.

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

example

PreviousQuasiCouponDate = cpndatepq(Settle,Maturity,Period,Basis,
EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate)
, using optional input arguments, determines the previous quasi-coupon date for a set of NUMBONDS fixed income securities. Prior 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. This function finds the previous quasi-coupon date for bonds with a coupon structure whose first or last period is either normal, short, or long.

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 PreviousQuasiCouponDate 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 PreviousQuasiCouponDate 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');

With no FirstCouponDate explicitly supplied, compute the PreviousCouponDate for this pair of bonds.

PreviousCouponDate = cpndatep(Settle, Maturity);
datestr(PreviousCouponDate)
ans =

30-Nov-1996
10-Dec-1997

Note that since the settlement date for the second bond is also a coupon date, cpndatep returns this date as the previous coupon date.

Now establish a FirstCouponDate and IssueDate for this pair of bonds.

FirstCouponDate = char('30-Nov-1997','10-Dec-1998');
IssueDate = char('30-May-1996', '10-Dec-1996');

Recompute the PreviousCouponDate for this pair of bonds.

PreviousCouponDate = cpndatep(Settle, Maturity, 2, 0, 1, ...
IssueDate, FirstCouponDate);
datestr(PreviousCouponDate)
ans =

30-May-1996
10-Dec-1996

Since both of these bonds settled before the first coupon had been paid, cpndatep returns the IssueDate as the PreviousCouponDate.

Using the same data, compute PreviousQuasiCouponDate.

PreviousQuasiCouponDate = cpndatepq(Settle, Maturity, 2, 0, 1,...
IssueDate, FirstCouponDate);
datestr(PreviousQuasiCouponDate)
ans =

30-Nov-1996
10-Dec-1997

For the first bond the settlement date is not a normal coupon date. The PreviousQuasiCouponDate is the coupon date before or on the settlement date. Since the coupon structure is synchronized to FirstCouponDate, the previous quasi coupon date is 30-Nov-1996. PreviousQuasiCouponDate disregards IssueDate and FirstCouponDate in this case. For the second bond the settlement date (10-Dec-1997) occurs on a date when a coupon would normally be paid in the absence of an explicit FirstCouponDate. cpndatepq returns this date as PreviousQuasiCouponDate.

Related Examples

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

Previous 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 of previous quasi-coupon dates before settlement. If settlement is a coupon date, this function returns the settlement date.

If all of the inputs for Settle, Maturity, IssueDate, FirstCouponDate, and LastCouponDate are either serial date numbers or date character vectors, then PreviousQuasiCouponDate 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 PreviousQuasiCouponDate is returned as a datetime array.

Introduced before R2006a

Was this topic helpful?