| Financial Toolbox | Search  Help Desk |
| cpndatepq | Examples See Also |
Previous quasi coupon date for fixed income security.
Syntax
PreviousQuasiCouponDate = cpndatepq(Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate)
Arguments
Settle and Maturity are required arguments. All others are optional.
Required arguments must be NUMBONDS-by-1 or 1-by-NUMBONDS conforming vectors or scalars. Optional arguments must be either NUMBONDS-by-1 or 1-by-NUMBONDS conforming vectors, scalars, or empty matrices. Fill unspecified entries in input vectors with the value NaN. Dates can be serial date numbers or date strings.
Description
PreviousQuasiCouponDate = cpndatepq(Settle, Maturity, Period,
Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate,
StartDate)
determines the previous quasi coupon date for a set of NUMBONDS fixed income securities. This function finds the previous quasi coupon date for a bond with a coupon structure in which the first or last period is either normal, short, or long (whether or not the coupon structure is synchronized to maturity). For zero coupon bonds this function returns the theoretical previous coupon date that would prevail if the bond were a coupon bond.
The term "previous quasi coupon date" refers to the previous coupon date for a bond calculated as if no issue date were specified. Although the issue date is not actually a coupon date, when issue date is specified, the previous actual coupon date for a bond is normally calculated as being either the previous date or the issue date, whichever is greater. Also, the actual previous coupon date and the previous quasi coupon date can differ when the maturity date is not synchronized with the coupon structure and the settlement date is the maturity date. This function always returns the previous quasi coupon date whether or not the issue date is greater. This function only returns a maturity date as a previous coupon date if it is synchronized with coupon structure of the bond. If the settlement date is a coupon date, this function always returns the settlement date.
PreviousQuasiCouponDate is an NUMBONDS- by-1 vector.
Examples
Given a pair of bonds with the characteristics:Settle = str2mat('30-May-1992','10-Dec-1992')
Maturity = str2mat('30-Nov-1997','10-Jun-1999')
With no FirstCouponDate explicitly supplied, compute the PreviousCouponDate for this pair of bonds:
PreviousCouponDate = cpndatep(Settle, Maturity) datestr(PreviousCouponDate) ans =
30-Nov-1991 10-Dec-1992Note 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 = str2mat('30-Nov-1992','10-Dec-1993')
IssueDate = str2mat(`30-May-1991', `10-Dec-1991')
Recompute the PreviousCouponDate for this pair of bonds:
PreviousCouponDate = cpndatep(Settle, Maturity, 2, 0, 1, ... IssueDate, FirstCouponDate) ans =
30-May-1991 10-Dec-1991Since 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 = cpndatep(Settle, Maturity, 2, 0, 1, ... IssueDate, FirstCouponDate) ans =
30-Nov-1991 10-Dec-1992For the first bond the settlement date is not a normal coupon date. For this bond PreviousQuasiCouponDate indicates the date (30-Nov-1991) on which a coupon would normally be paid if an explicit
FirstCouponDate had not been specified. For the second bond the settlement date (10-Dec-1992) occurs on a date when a coupon would normally be paid in the absence of an explicit FirstCouponDate. cpndatepq returns this date as PreviousQuasiCouponDate.
See Also
accrfrac, cfamounts, cfdates, cftimes, cpncount, cpndaten, cpndatenq, cpndatep, cpndaysn, cpndaysp, cpnpersz