Financial Toolbox | ![]() ![]() |
Next quasi coupon date for fixed income security (SIA compliant)
Syntax
NextQuasiCouponDate = cpndatenq(Settle, Maturity, Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate)
Arguments
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
NextQuasiCouponDate = cpndatenq(Settle, Maturity, 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. For zero coupon bonds cpndatenq
returns quasi coupon dates as if the bond had a semi-annual 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.
Outputs are NUMBONDS
-by-1 vectors.
If Settle
is a coupon date, this function never returns the settlement date. It returns the quasi coupon date strictly after settlement.
NextQuasiCouponDate
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
Compute NextCouponDate
for this pair of bonds.
Compute the next quasi coupon dates for these two bonds.
NextQuasiCouponDate = cpndatenq(Settle, Maturity); datestr(NextQuasiCouponDate) ans = 31-May-1997 10-Jun-1998
Because no FirstCouponDate
has been specified, the results are identical.
Now supply an explicit FirstCouponDate
for each bond.
Compute the next coupon dates.
NextCouponDate = cpndaten(Settle, Maturity, 2, 0, 1, [],... FirstCouponDate); datestr(NextCouponDate) ans = 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 = 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 semi-annual 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.
See Also
accrfrac
, cfamounts
, cfdates
, cftimes
, cpncount
, cpndaten
, cpndatep
, cpndatepq
, cpndaysn
, cpndaysp
, cpnpersz
![]() | cpndaten | cpndatep | ![]() |