date2time

Time and frequency from dates

Description

example

[TFactors,F] = date2time(Settle,Maturity) computes time factors appropriate to compounded rate quotes between the Settle and Maturity dates. date2time is the inverse of time2date.

example

[TFactors,F] = date2time(___,Compounding,Basis,EndMonthRule) computes time factors appropriate to compounded rate quotes between the Settle and Maturity dates using optional input arguments for Compounding, Basis, and EndMonthRule. date2time is the inverse of time2date.

Examples

collapse all

To get the date2time period between '31-Jul-2015' and '30-Sep-2015' using an actual/actual basis:

date2time('31-Jul-2015', '30-Sep-2015', 2, 0, 1)
ans = 0.3333

When using date2time quasi coupon, two quasi coupon dates are computed for a bond with a maturity corresponding to the Dates input. In this case, that would be "30-Sep-2015". Assuming that the compounding frequency is 2, the other quasi coupon date is six months prior to this date. Assuming the end of month rule is in place, then the other quasi coupon date is "31-Mar-2015". You can use these two dates to compute the total number of actual days in a period (which is 183). Given this, the fraction of time between the start and end date for the actual/actual basis is computed as follows.

(Actual Days between Start Date and End Date)/(Actual Number of Days between Quasi Coupon Dates)

There are 61 days between 31-Jul-2015 and 30-Sep-2015 and 183 days between the quasi coupon dates ("31-Mar-2015" and "30-Sep-2015") which leads to a final result of 61/183 or exactly 1/3.

Input Arguments

collapse all

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

Data Types: double | char | datetime

Maturity date, specified as a scalar or N-by-1 vector using serial date numbers, date character vectors, or datetime arrays.

Data Types: double | char | datetime

Rate at which input zero rates are compounded when annualized, specified as a scalar with numeric values of: 0, 1, 2, 3, 4, 5, 6, 12, 365, or –1. Allowed values are defined as:

• 0 — Simple interest (no compounding)

• 1 — Annual compounding

• 2 — Semiannual compounding (default)

• 3 — Compounding three times per year

• 4 — Quarterly compounding

• 6 — Bimonthly compounding

• 12 — Monthly compounding

• 365 — Daily compounding

• -1 — Continuous compounding

The optional Compounding argument determines the formula for the discount factors (Disc):

• Compounding = 0 for simple interest

• Disc = 1/(1 + Z * T), where T is time in years and simple interest assumes annual times F = 1.

• Compounding = 1, 2, 3, 4, 6, 12

• Disc = (1 + Z/F)^(-T), where F is the compounding frequency, Z is the zero rate, and T is the time in periodic units, for example, T = F is one year.

• Compounding = 365

• Disc = (1 + Z/F)^(-T), where F is the number of days in the basis year and T is a number of days elapsed computed by basis.

• Compounding = -1

• Disc = exp(-T*Z), where T is time in years.

Day-count basis, specified as an integer with a value 0 through 13 or a 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 scalar nonnegative integer [0, 1] or a using a 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 payment date is always the same numerical day of the month.

• 1 = Set rule on, meaning that a payment date is always the last actual day of the month.

Data Types: logical

Output Arguments

collapse all

Time factors, appropriate to compounded rate quotes between Settle and Maturity dates, returned as a vector.

Compounding frequencies, returned as a scalar.

collapse all

Difference Between yearfrac and date2time

The difference between yearfrac and date2time is that date2time counts full periods as a whole integer, even if the number of actual days in the periods are different. yearfrac does not count full periods.

For example,

yearfrac('1/1/2000', '1/1/2001', 9)
ans =

1.0167

yearfrac for Basis 9 (ACT/360 ICMA) calculates 366/360 = 1.0167. So, even if the dates have the same month and date, with a difference of 1 in the year, the returned value may not be exactly 1. On the other hand, date2time calculates one full year period:

date2time('1/1/2000', '1/1/2001', 1, 9)
ans =

1