Financial Toolbox | ![]() ![]() |
Syntax
PreviousQuasiCouponDate = cpndatepq(Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate)
Required arguments must be number of bonds (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 on or before settlement 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 quasi coupon dates as if the bond had a semi-annual coupon structure.
PreviousQuasiCouponDate
is returned as a serial date number. The function datestr
converts a serial date number to a formatted date string.
Examples
Given a pair of bonds with the characteristics
Settle = str2mat('30-May-1997','10-Dec-1997'); Maturity = str2mat('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-1997Note 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-1997','10-Dec-1998'); IssueDate = str2mat('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-1996Since 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-1997For the first bond the settlement date is not a normal coupon date. The
PreviousQuasiCouponDate
is the coupon date prior to 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
.
See Also
accrfrac
, cfamounts
, cfdates
, cftimes
, cpncount
, cpndaten
, cpndatenq
, cpndatep
, cpndaysn
, cpndaysp
, cpnpersz
![]() | cpndatep | cpndaysn | ![]() |