Calendars and Day Counters in the Finance Package - Maple Help

Home : Support : Online Help : Mathematics : Finance : Date Arithmetic : Finance/Examples/CalendarsAndDayCounters

Calendars and Day Counters in the Finance Package

 Overview The Financial Modeling package supports over 15 calendars which include New York, London, Tokyo and Toronto stock exchanges. In addition, the package provides tools for creating new calendars and manipulating already existing calendars. In addition to this, the Financial Modeling package supports most standard day count conventions used in the industry, which include Actual/Actual, Actual/360 and 30/360 conventions.   Day counting convention defines the way in which interest accrues over time. Generally, we know the interest earned over some reference period (e.g., the time between coupon payments, and we are interested in calculating the interest earned over some other period.   The day counting convention is usually expressed as $\mathbit{X}\mathbf{/}\mathbit{Y}$, where $\mathbit{X}$ defines the way in which the number of days between the two dates is calculated, and $\mathbit{Y}$ defines the way in which the total number of days in the reference period is measured. The interest earned between the two dates is   $\frac{\mathbit{Number_of_days_between_two_dates}}{\mathbit{Number_of_days_in_reference_period}}\mathbf{×}{\mathbit{Interest}}_{}\mathbit{_earned_in_reference_period}$                       Three day counting conventions commonly used in the United States are Actual/Actual, Actual/360, and 30/360.

Day Count Conventions

Actual/Actual Conventions

The actual/actual interest accrual convention is the recommended for euro-denominated bonds, there are at least three different interpretations of actual/actual. These three interpretations are identified as:

Actual/Actual (ISDA)

Actual/Actual (ISMA)

Actual/Actual (AFB)

The difference between the ISDA, ISMA and AFB methods can be reduced to a consideration of the denominator to be used when calculating accrued interest. The numerator will, in all three cases, be equal to the actual number of days from and including the last coupon payment date ( or period end date) to, but excluding, the current value date (or period end date) therefore:

Under the Actual/Actual (ISDA) approach, the denominator varies depending on whether a portion of the relevant calculation period falls within a leap year. For the portion of the calculation period falling within a leap year, the denominator is 366, for the other portion the denominator is 365. The ISDA convention, also known as Actual/Actual (Historical), Actual/Actual, Act/Act, and according to ISDA also Actual/365, Act/365, and A/365.

Under the Actual/Actual (ISMA) approach, the denominator is the actual number of days in the coupon period multiplied by the number of coupon periods in the year. The ISMA and US Treasury convention, also known as Actual/Actual (Bond).

Under the Actual/Actual (AFB) approach, the denominator is either 365 if the calculation period does not contain February 29th, or 366 if the calculation period includes February 29th. The AFB convention, also known as actual/actual (Euro).

Let's consider some examples.

 > $\mathrm{with}\left(\mathrm{Finance}\right):$

First we will use a day counter which follows the ISDA convention.

 > $\mathrm{DayCount}\left("Jan-01-2006","July-01-2006",\mathrm{ISDA}\right)$
 ${181}$ (2.1.1)

The numerator is equal to the actual number of days from and including the last coupon payment date ( or period end date) to, but excluding, the current value date (or period end date) therefore from January 1st, 2006 to July 1st, 2006 can be calculated by adding the number of days in January, February, March, April, May, and June together:

 > $31+28+31+30+31+30$
 ${181}$ (2.1.2)
 > $\mathrm{YearFraction}\left("Jan-01-2006","July-01-2006",\mathrm{ISDA}\right)$
 ${0.4958904110}$ (2.1.3)

The denominator for ISDA is 365 since the year of 2006 is not leap year:

 > $\frac{\mathrm{DayCount}\left("Jan-01-2006","July-01-2006",\mathrm{ISDA}\right)}{365}$
 $\frac{{181}}{{365}}$ (2.1.4)
 > $\mathrm{evalf}\left(\right)$
 ${0.4958904110}$ (2.1.5)
 > $\mathrm{DayCount}\left("Jan-01-2008","April-20-2008",\mathrm{ISDA}\right)$
 ${110}$ (2.1.6)
 > $\mathrm{YearFraction}\left("Jan-01-2008","April-20-2008",\mathrm{ISDA}\right)$
 ${0.3005464481}$ (2.1.7)
 > $\frac{\mathrm{DayCount}\left("Jan-01-2008","April-20-2008",\mathrm{ISDA}\right)}{366}$
 $\frac{{55}}{{183}}$ (2.1.8)
 > $\mathrm{evalf}\left(\right)$
 ${0.3005464481}$ (2.1.9)
 >
 ${256}$ (2.1.10)
 >
 ${0.6994535519}$ (2.1.11)
 >
 $\frac{{128}}{{183}}$ (2.1.12)
 > $\mathrm{evalf}\left(\right)$
 ${0.6994535519}$ (2.1.13)
 >

In the second example we will use the ISMA convention.

 > $\mathrm{DayCount}\left("Jan-01-2006","July-01-2006",\mathrm{ISMA}\right)$
 ${181}$ (2.1.14)

As you can see the number of days between January 1st, 2006 and July 1st, 2006  is the same according to both conventions. The length of the period from January 1st, 2006 to July 1st, 2006 as a fraction of the year is different.

 > $\mathrm{YearFraction}\left("Jan-01-2006","July-01-2006",\mathrm{ISMA}\right)$
 ${0.5000000000}$ (2.1.15)

The denominator is the actual number of days in the coupon period multiplied by the number of coupon periods in the year.

 > $\mathrm{DayCount}\left("Jan-01-2008","April-20-2008",\mathrm{ISMA}\right)$
 ${110}$ (2.1.16)
 > $\mathrm{YearFraction}\left("Jan-01-2008","April-20-2008",\mathrm{ISMA}\right)$
 ${0.3333333333}$ (2.1.17)
 > $\mathrm{DayCount}\left("Jan-01-2008","April-01-2008",\mathrm{ISMA}\right)$
 ${91}$ (2.1.18)
 > $\mathrm{YearFraction}\left("Jan-01-2008","April-01-2008",\mathrm{ISMA}\right)$
 ${0.2500000000}$ (2.1.19)

Finally, consider the AFB day counting convention.

 > $\mathrm{DayCount}\left("Jan-01-2006","July-01-2006",\mathrm{AFB}\right)$
 ${181}$ (2.1.20)
 > $\mathrm{YearFraction}\left("Jan-01-2006","July-01-2006",\mathrm{AFB}\right)$
 ${0.4958904110}$ (2.1.21)

The denominator is either 365 if the calculation period does not contain February 29th, or 366 if the calculation period includes February 29th.

 > $\frac{\mathrm{DayCount}\left("Jan-01-2006","July-01-2006",\mathrm{AFB}\right)}{365}$
 $\frac{{181}}{{365}}$ (2.1.22)
 > $\mathrm{evalf}\left(\right)$
 ${0.4958904110}$ (2.1.23)
 > $\mathrm{DayCount}\left("Jan-01-2008","April-20-2008",\mathrm{AFB}\right)$
 ${110}$ (2.1.24)
 > $\mathrm{YearFraction}\left("Jan-01-2008","April-20-2008",\mathrm{AFB}\right)$
 ${0.3005464481}$ (2.1.25)
 > $\frac{\mathrm{DayCount}\left("Jan-01-2008","April-20-2008",\mathrm{AFB}\right)}{366}$
 $\frac{{55}}{{183}}$ (2.1.26)
 > $\mathrm{evalf}\left(\right)$
 ${0.3005464481}$ (2.1.27)
 >
 ${256}$ (2.1.28)
 >
 ${0.7013698630}$ (2.1.29)
 >
 $\frac{{128}}{{183}}$ (2.1.30)
 > $\mathrm{evalf}\left(\right)$
 ${0.6994535519}$ (2.1.31)
 >
 $\frac{{256}}{{365}}$ (2.1.32)
 > $\mathrm{evalf}\left(\right)$
 ${0.7013698630}$ (2.1.33)

Actual/360 Conventions

Actual/360 is used for U.S. Treasury bills and other money market instruments. The numerator is equal to the actual number of days from and including the last coupon payment date ( or period end date) to, but excluding, the current value date (or period end date) ; while the denominator is always 360. Note that the interest earned in a whole year of 365 is 365/360 times the quoted rate. The actual/360 day count convention, also known as Act/360 or A/360.

The numerator is equal to the actual number of days from and including the last coupon payment date ( or period end date) to, but excluding, the current value date (or period end date).

 > $\mathrm{DayCount}\left("Jan-01-2006","Jan-03-2007",\mathrm{Actual360}\right)$
 ${367}$ (2.2.1)
 >
 ${0.8444444444}$ (2.2.2)

The denominator is always 360.

 > $\frac{\mathrm{DayCount}\left("Jan-01-2006","Jan-03-2007",\mathrm{Actual360}\right)}{\mathit{360}}$
 $\frac{{367}}{{360}}$ (2.2.3)
 > $\mathrm{evalf}\left(\right)$
 ${1.019444444}$ (2.2.4)
 > $\mathrm{DayCount}\left("Jan-01-2006","Jan-01-2007",\mathrm{Actual360}\right)$
 ${365}$ (2.2.5)
 > $\mathrm{YearFraction}\left("Jan-01-2006","Jan-01-2007",\mathrm{Actual360}\right)$
 ${1.013888889}$ (2.2.6)
 > $\frac{\mathrm{DayCount}\left("Jan-01-2006","Jan-01-2007",\mathrm{Actual360}\right)}{360}$
 $\frac{{73}}{{72}}$ (2.2.7)
 > $\mathrm{evalf}\left(\right)$
 ${1.013888889}$ (2.2.8)

There is an another day count convention, Actual/365 (Fixed), which is very similar with Actual/360, except that the denominator is always 365.  Actual/365 (Fixed) day count convention, also know as Act/365 (Fixed), A/365 (Fixed), or A/365F. But Actual/365 (without Fixed) is an alias for Actual/Actual (ISDA).

 > $\mathrm{DayCount}\left("Jan-01-2008","Jan-01-2009",\mathrm{Actual365Fixed}\right)$
 ${366}$ (2.2.9)
 > $\mathrm{YearFraction}\left("Jan-01-2008","Jan-01-2009",\mathrm{Actual365Fixed}\right)$
 ${1.002739726}$ (2.2.10)
 > $\frac{\mathrm{DayCount}\left("Jan-01-2008","Jan-01-2009",\mathrm{Actual365Fixed}\right)}{365}$
 $\frac{{366}}{{365}}$ (2.2.11)
 > $\mathrm{evalf}\left(\right)$
 ${1.002739726}$ (2.2.12)

30/360 Conventions

The use of 30/360 for corporate and municipal bonds indicates that we assume 30 days per month and 360 days per year when we carry out calculations. This convention is very simple since it doesn't need to consider how many days each month has or whether the year is leap or not. There are three 30/360 day count conventions:

 Thirty360USA If the ending date is the 31th of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month day, otherwise the ending date becomes equal to the 30th of the same month. Thirty360European Starting dates or ending dates that occur on the 31st of a month become equal to the 30th of the same month. Thirty360Italian Starting or ending dates that occur in February and are greater than 27 become equal to 30 for computational sake.

Let's consider some examples:

 > $\mathrm{DayCount}\left("Jan-01-2006","Nov-01-2006",\mathrm{Thirty360USA}\right)$
 ${300}$ (2.3.1)

The numerator is 10 time of 30.

If the end day is October 31st, 2006, it returns the same results:

 > $\mathrm{DayCount}\left("Jan-01-2006","Oct-31-2006",\mathrm{Thirty360USA}\right)$
 ${300}$ (2.3.2)
 > $\mathrm{DayCount}\left("Jan-01-2006","Oct-30-2006",\mathrm{Thirty360USA}\right)$
 ${299}$ (2.3.3)
 > $\mathrm{DayCount}\left("Jan-01-2006","Oct-2-2006",\mathrm{Thirty360USA}\right)$
 ${271}$ (2.3.4)

From the above three interesting results, you can see that if the ending date is the 31th of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month day, otherwise the ending date becomes equal to the 30th of the same month.

For Thirty360European convention,  starting dates or ending dates that occur on the 31st of a month become equal to the 30th of the same month.

 > $\mathrm{DayCount}\left("Jan-01-2006","Nov-01-2006",\mathrm{Thirty360European}\right)$
 ${300}$ (2.3.5)
 > $\mathrm{DayCount}\left("Jan-01-2006","Oct-31-2006",\mathrm{Thirty360European}\right)$
 ${299}$ (2.3.6)
 > $\mathrm{DayCount}\left("Jan-01-2006","Oct-30-2006",\mathrm{Thirty360European}\right)$
 ${299}$ (2.3.7)

We also assume that February has 30 days too:

 > $\mathrm{DayCount}\left("Jan-01-2006","Feb-28-2006",\mathrm{Thirty360European}\right)$
 ${57}$ (2.3.8)
 > $\mathrm{DayCount}\left("Jan-01-2006","March-1-2006",\mathrm{Thirty360European}\right)$
 ${60}$ (2.3.9)

Finally, the Thirty360Italian day counting convention, assumes that starting or ending dates that occur in February and are greater than 27 become equal to 30.

 > $\mathrm{DayCount}\left("Jan-01-2006","Feb-27-2006",\mathrm{Thirty360Italian}\right)$
 ${56}$ (2.3.10)
 > $\mathrm{DayCount}\left("Jan-01-2006","Feb-28-2006",\mathrm{Thirty360Italian}\right)$
 ${59}$ (2.3.11)
 > $\mathrm{DayCount}\left("Jan-01-2006","March-1-2006",\mathrm{Thirty360Italian}\right)$
 ${60}$ (2.3.12)

Working with Calendars

Here is the list of related commands.

 - add a holiday to the given calendar - adjust a non-business day according to the given convention - advance a non-business day according to the given convention - check if a given date is a business day according to a given calendar - check if a given date corresponds to the end of a month according to a given calendar - create a new calendar obtained by joining business days of the given two calendars - create a new calendar obtained by joining holidays of the given two calendars - check if a given date is a holiday according to a given calendar

Here are some examples.

 > $\mathrm{restart};$$\mathrm{with}\left(\mathrm{Finance}\right):$

For example, to check whether the 3rd of September, 2007 is a holiday according to the New York Stock Exchange.

 > $\mathrm{IsHoliday}\left("Sep-03-2007",\mathrm{NewYork}\right);$
 ${\mathrm{true}}$ (3.1)

We can adjust this date using one of several supported business day conventions.

 > ${\mathrm{Finance}}_{\mathrm{AdjustDate}}\left("Sep-03-2007",\mathrm{NewYork},\mathrm{convention}=\mathrm{Following}\right);$
 ${"Sep-04-2007"}$ (3.2)
 > ${\mathrm{Finance}}_{\mathrm{AdjustDate}}\left("Sep-03-2007",\mathrm{NewYork},\mathrm{convention}=\mathrm{Preceding}\right);$
 ${"Aug-31-2007"}$ (3.3)
 > ${\mathrm{Finance}}_{\mathrm{AdjustDate}}\left("Sep-03-2007",\mathrm{NewYork},\mathrm{convention}=\mathrm{Unadjusted}\right);$
 ${"Sep-03-2007"}$ (3.4)

We can use StringTools[ParseTime] to determine what day of the week 3rd of September, 2007 is.

 > $\mathrm{StringTools}:-\mathrm{ParseTime}\left("%b-%d-%Y","Sep-03-2007"\right):-\mathrm{weekDay};$
 ${2}$ (3.5)

In the next example we will create new calendar data structure and add holidays to this calendar.

 > $\mathrm{C1}:=\mathrm{Calendar}\left(\right):$
 > $\mathrm{IsHoliday}\left("Aug-18-2006",\mathrm{C1}\right);$
 ${\mathrm{false}}$ (3.6)
 >
 >

How August 18, 2006 is a holiday in the new calendar.

 > $\mathrm{IsHoliday}\left("Aug-18-2006",\mathrm{C1}\right);$
 ${\mathrm{true}}$ (3.7)
 > $\mathrm{C2}:=\mathrm{Calendar}\left(\mathrm{Toronto}\right):$

Let us construct two calendars. One obtained by joining holidays and the other one obtained by joining business days from the two calendars above.

 > $\mathrm{C3}:=\mathrm{JoinHolidays}\left(\mathrm{C1},\mathrm{C2}\right):$
 > $\mathrm{C4}:=\mathrm{JoinBusinessDays}\left(\mathrm{C1},\mathrm{C2}\right):$
 > $\mathrm{map}\left(t→\mathrm{IsHoliday}\left("Aug-18-2006",t\right),\left[\mathrm{C1},\mathrm{C2},\mathrm{C3},\mathrm{C4}\right]\right);$
 $\left[{\mathrm{true}}{,}{\mathrm{false}}{,}{\mathrm{true}}{,}{\mathrm{false}}\right]$ (3.8)
 > $\mathrm{map}\left(t→\mathrm{IsHoliday}\left("Aug-19-2006",t\right),\left[\mathrm{C1},\mathrm{C2},\mathrm{C3},\mathrm{C4}\right]\right);$
 $\left[{\mathrm{true}}{,}{\mathrm{true}}{,}{\mathrm{true}}{,}{\mathrm{true}}\right]$ (3.9)

Standard Calendars