cpndatenq - Next quasi coupon date for fixed income security

Syntax

NextQuasiCouponDate = cpndatenq(Settle, Maturity, Period, Basis, 
EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate)

Arguments

Settle

Settlement date. A vector of serial date numbers or date strings. Settle must be earlier than or equal to Maturity.

Maturity

Maturity date. A vector of serial date numbers or date strings.

Period

(Optional) Coupons per year of the bond. A vector of integers. Allowed values are 0, 1, 2 (default), 3, 4, 6, and 12.

Basis

(Optional) Day-count basis of the instrument. A vector of integers.

  • 0 = actual/actual (default)

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ISMA)

  • 9 = actual/360 (ISMA)

  • 10 = actual/365 (ISMA)

  • 11 = 30/360E (ISMA)

  • 12 = actual/365 (ISDA)

EndMonthRule

(Optional) End-of-month rule. A vector. 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 (default), meaning that a bond's coupon payment date is always the last actual day of the month.

IssueDate

(Optional) Date when a bond was issued.

FirstCouponDate

(Optional) Date when a bond makes its first coupon payment. When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

LastCouponDate

(Optional) Last coupon date of a bond before the maturity date. 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 will be followed only by the bond's maturity cash flow date.

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

Settle = char('30-May-1997','10-Dec-1997');
Maturity = char('30-Nov-2002','10-Jun-2004');

Compute NextCouponDate for this pair of bonds.

NextCouponDate = cpndaten(Settle, Maturity);

datestr(NextCouponDate)

ans =

31-May-1997
10-Jun-1998

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.

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

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

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS