# cfdatesq

Quasi-coupon dates for fixed-income security

## Syntax

QuasiCouponDates = cfdatesq(Settle,Maturity,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate,PeriodsBeforeSettle,PeriodsAfterMaturity)

## Arguments

 Settle Settlement date. A vector of serial date numbers, date character vectors, or datetime arrays. Settle must be earlier than Maturity. Maturity Maturity date. A vector of serial date numbers, date character vectors, or datetime arrays. 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/3603 = actual/3654 = 30/360 (PSA)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. 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, specified as a serial date number, date character vector, or datetime array, when a bond was issued. FirstCouponDate (Optional) Date, specified as a serial date number, date character vector, or datetime array, when a bond makes its first coupon payment. 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. LastCouponDate (Optional) Last coupon date of a bond before the 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. PeriodsBeforeSettle (Optional) Number of quasi-coupon dates on or before settlement to include (non-negative integer); default is 0. PeriodsAfterMaturity (Optional) Number of quasi-coupon dates after maturity to include (non-negative integer); default is 0.

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.

Any input can contain multiple values, but if so, all other inputs must contain the same number of values or a single value that applies to all. For example, if Maturity contains N dates, then Settle must contain N dates or a single date.

## Description

QuasiCouponDates = cfdatesq(Settle,Maturity,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate, PeriodsBeforeSettle,PeriodsAfterMaturity) returns a matrix of quasi-coupon dates expressed in serial date format (default) or datetime format (if any inputs are in datetime format).

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. Quasi-coupon dates are determined regardless of whether the first or last coupon periods are normal, long, or short.

QuasiCouponDates has NUMBONDS rows and the number of columns is determined by the maximum number of quasi-coupon dates required to hold the bond portfolio. NaNs are padded for bonds which have less than the maximum number quasi-coupon dates. By default, quasi- coupon dates after settlement and on or preceding maturity are returned. If settlement occurs on maturity, and maturity is a quasi-coupon date, then the maturity date is returned.

If the date inputs for Settle, Maturity, IssueDate, FirstCouponDate, and LastCouponDate are either serial date numbers or date character vectors, then QuasiCouponDates is returned as a serial date number.

If any of the date inputs for Settle, Maturity, IssueDate, FirstCouponDate, or LastCouponDate are datetime arrays, then QuasiCouponDates is returned as a datetime array.

## Examples

QuasiCouponDates = cfdatesq('14-Mar-1997', '30-Nov-1998', 2, 0, 1)
QuasiCouponDates =

729541      729724      729906      730089

If any of the inputs for Settle, Maturity, IssueDate, FirstCouponDate, or LastCouponDate are datetime arrays, then CFlowDates is returned as a datetime array. For example:

QuasiCouponDates = cfdatesq('14-Mar-1997', datetime('30-Nov-1998','Locale','en_US'), 2, 0, 1)
QuasiCouponDates =

31-May-1997   30-Nov-1997   31-May-1998   30-Nov-1998