cpndaysp

Number of days since previous coupon date

Description

example

NumDaysPrevious = cpndaysp(Settle,Maturity) returns the number of days between the previous coupon date and the settlement date for a bond or set of bonds. When the coupon frequency is 0 (a zero coupon bond), the previous coupon date is calculated as if the frequency were semiannual. NumDaysPrevious returns a double for serial date number, date character vector, and datetime inputs.

Required input arguments must be number of bonds, NUMBONDS-by-1 or 1-by-NUMBONDS, conforming vectors or scalars.

example

NumDaysPrevious = cpndaysp(___,Period,Basis,EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate) returns the number of days between the previous coupon date and the settlement date for a bond or set of bonds using optional input arguments.

Optional input arguments must be either NUMBONDS-by-1 or 1-by-NUMBONDS conforming vectors, scalars, or empty matrices.

If all the inputs for Settle, Maturity, IssueDate, FirstCouponDate, and LastCouponDate are either serial date numbers or date character vectors, then NumDaysPrevious is returned as a serial date number. The function datestr converts a serial date number to a formatted date character vector.

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

Examples

collapse all

Determine the NumDaysPrevious when using character vectors for input arguments.

NumDaysPrevious = cpndaysp('14-Mar-2000', '30-Jun-2001', 2, 0, 0)
NumDaysPrevious = 75

Determine the NumDaysPrevious when using a datetime array for an input argument.

NumDaysPrevious = cpndaysp(datetime('14-Mar-2000','Locale','en_US'), '30-Jun-2001', 2, 0, 0)
NumDaysPrevious = 75

Determine the NumDaysPrevious when using character vectors for input arguments and the optional argument for EndMonthRule.

NumDaysPrevious = cpndaysp('14-Mar-2000', '30-Jun-2001', 2, 0, 1)
NumDaysPrevious = 74

Determine the NumDaysPrevious when using an input vector for Maturity.

Maturity = ['30-Apr-2001'; '31-May-2001'; '30-Jun-2001'];
NumDaysPrevious = cpndaysp('14-Mar-2000', Maturity)
NumDaysPrevious = 3×1

135
105
74

Input Arguments

collapse all

Settlement date, specified as a vector of serial date number, date character vector, or datetime array. Settle must be earlier than Maturity.

Data Types: double | char | datetime

Maturity date, specified as a vector of serial date numbers, date character vectors, or datetime arrays.

Data Types: double | char | datetime

Coupons per year of the bond, specified as a vector of positive integers from the set [1,2,3,4,6,12].

Data Types: single | double

Day-count basis of the instrument, specified as an integer with a with value 0 through 13 or an N-by-1 vector of integers with values 0 through 13.

• 0 = actual/actual (default)

• 1 = 30/360 (SIA)

• 2 = actual/360

• 3 = actual/365

• 4 = 30/360 (BMA)

• 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

Data Types: single | double

End-of-month rule flag for month having 30 or fewer days, specified as a nonnegative integer [0, 1] using an N-by-1 vector of values. 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, meaning that a bond’s coupon payment date is always the last actual day of the month.

Data Types: logical

Bond issue date, specified as a serial date number, date character vector, or datetime array.

Data Types: double | char | datetime

Date when a bond makes its first coupon payment, specified as a serial date number, date character vector, or datetime array.

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.

Data Types: double | char | datetime

Last coupon date of a bond before 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.

Data Types: double | char | datetime

Output Arguments

collapse all

Number of days between the previous coupon date and the settlement date, returned as an NUMBONDS-by-1 vector. If the settlement date is a coupon date, this function always returns the settlement date.

When the coupon frequency is 0 (a zero coupon bond), the previous coupon date is calculated as if the frequency were semiannual. NumDaysPrevious returns a double for serial date number, date character vector, and datetime inputs.

If all the inputs for Settle, Maturity, IssueDate, FirstCouponDate, and LastCouponDate are either serial date numbers or date character vectors, then NumDaysPrevious is returned as a serial date number. The function datestr converts a serial date number to a formatted date character vector.

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