Calendars and Day Counters in the Finance Package - Maple Programming Help

Online Help

All Products    Maple    MapleSim


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

Calendars and Day Counters in the Finance Package

 

Overview

Day Count Conventions

Working with Calendars

Standard Calendars

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 X/Y, where X defines the way in which the number of days between the two dates is calculated, and 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

 

Number_of_days_between_two_datesNumber_of_days_in_reference_period×Interest_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.

 

withFinance:

 

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

 

DayCountJan-01-2006,July-01-2006,ISDA

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)

YearFractionJan-01-2006,July-01-2006,ISDA

0.4958904110

(2.1.3)

 

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

 

DayCountJan-01-2006,July-01-2006,ISDA365

181365

(2.1.4)

evalf

0.4958904110

(2.1.5)

DayCountJan-01-2008,April-20-2008,ISDA

110

(2.1.6)

YearFractionJan-01-2008,April-20-2008,ISDA

0.3005464481

(2.1.7)

DayCountJan-01-2008,April-20-2008,ISDA366

55183

(2.1.8)

evalf

0.3005464481

(2.1.9)

DayCountApril-20-2008,Jan-01-2009, ISDA

256

(2.1.10)

YearFractionApril-20-2008,Jan-01-2009, ISDA

0.6994535519

(2.1.11)

DayCountApril-20-2008,Jan-01-2009, ISDA366

128183

(2.1.12)

evalf

0.6994535519

(2.1.13)

 

 

In the second example we will use the ISMA convention.

 

DayCountJan-01-2006,July-01-2006,ISMA

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.

 

YearFractionJan-01-2006,July-01-2006,ISMA

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.

 

DayCountJan-01-2008,April-20-2008,ISMA

110

(2.1.16)

YearFractionJan-01-2008,April-20-2008,ISMA

0.3333333333

(2.1.17)

DayCountJan-01-2008,April-01-2008,ISMA

91

(2.1.18)

YearFractionJan-01-2008,April-01-2008,ISMA

0.2500000000

(2.1.19)

 

Finally, consider the AFB day counting convention.

 

DayCountJan-01-2006,July-01-2006,AFB

181

(2.1.20)

YearFractionJan-01-2006,July-01-2006,AFB

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.

 

DayCountJan-01-2006,July-01-2006,AFB365

181365

(2.1.22)

evalf

0.4958904110

(2.1.23)

DayCountJan-01-2008,April-20-2008,AFB

110

(2.1.24)

YearFractionJan-01-2008,April-20-2008,AFB

0.3005464481

(2.1.25)

DayCountJan-01-2008,April-20-2008,AFB366

55183

(2.1.26)

evalf

0.3005464481

(2.1.27)

DayCountApril-20-2008,Jan-01-2009, AFB

256

(2.1.28)

YearFractionApril-20-2008,Jan-01-2009, AFB

0.7013698630

(2.1.29)

DayCountApril-20-2008,Jan-01-2009, AFB366

128183

(2.1.30)

evalf

0.6994535519

(2.1.31)

DayCountApril-20-2008,Jan-01-2009, AFB365

256365

(2.1.32)

evalf

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).

 

DayCountJan-01-2006,Jan-03-2007,Actual360

367

(2.2.1)

YearFractionJan-01-2006,Nov-01-2006, Actual360

0.8444444444

(2.2.2)

 

The denominator is always 360.

 

DayCountJan-01-2006,Jan-03-2007,Actual360360

367360

(2.2.3)

evalf

1.019444444

(2.2.4)

DayCountJan-01-2006,Jan-01-2007,Actual360

365

(2.2.5)

YearFractionJan-01-2006,Jan-01-2007,Actual360

1.013888889

(2.2.6)

DayCountJan-01-2006,Jan-01-2007,Actual360360

7372

(2.2.7)

evalf

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).

 

DayCountJan-01-2008,Jan-01-2009,Actual365Fixed

366

(2.2.9)

YearFractionJan-01-2008,Jan-01-2009,Actual365Fixed

1.002739726

(2.2.10)

DayCountJan-01-2008,Jan-01-2009,Actual365Fixed365

366365

(2.2.11)

evalf

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:

 

DayCountJan-01-2006,Nov-01-2006,Thirty360USA

300

(2.3.1)

 

The numerator is 10 time of 30.

 

 

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

 

DayCountJan-01-2006,Oct-31-2006,Thirty360USA

300

(2.3.2)

DayCountJan-01-2006,Oct-30-2006,Thirty360USA

299

(2.3.3)

DayCountJan-01-2006,Oct-2-2006,Thirty360USA

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.

 

DayCountJan-01-2006,Nov-01-2006,Thirty360European

300

(2.3.5)

DayCountJan-01-2006,Oct-31-2006,Thirty360European

299

(2.3.6)

DayCountJan-01-2006,Oct-30-2006,Thirty360European

299

(2.3.7)

 

We also assume that February has 30 days too:

 

DayCountJan-01-2006,Feb-28-2006,Thirty360European

57

(2.3.8)

DayCountJan-01-2006,March-1-2006,Thirty360European

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.

 

DayCountJan-01-2006,Feb-27-2006,Thirty360Italian

56

(2.3.10)

DayCountJan-01-2006,Feb-28-2006,Thirty360Italian

59

(2.3.11)

DayCountJan-01-2006,March-1-2006,Thirty360Italian

60

(2.3.12)

Other Day Count Conventions

 

The Simple day counting convention tries to ensure that the whole month distances are returned as a simple fraction.

 

DayCountJan-01-2008,Nov-21-2008,Simple

320

(2.4.1)

 

The above result is: 30*10 + 20 which simply takes 30 days per month for the 10 months plus 20 days in November.

 

YearFractionJan-01-2008,Nov-21-2008, Simple

0.8888888889

(2.4.2)

 

The denominator is always taken 360 days per year.

 

DayCountJan-01-2008,Nov-21-2008,Simple360

89

(2.4.3)

evalf

0.8888888889

(2.4.4)

Working with Calendars

 

 Here is the list of related commands.

 

AddHoliday

-

add a holiday to the given calendar

AdvanceDate

-

adjust a non-business day according to the given convention

AdjustDate

-

advance a non-business day according to the given convention

IsBusinessDay

-

check if a given date is a business day according to a given calendar

IsEndOfMonth

-

check if a given date corresponds to the end of a month according to a given calendar

JoinBusinessDays

-

create a new calendar obtained by joining business days of the given two calendars

JoinHolidays

-

create a new calendar obtained by joining holidays of the given two calendars

IsHoliday

-

check if a given date is a holiday according to a given calendar

 

Here are some examples.

 

restart;withFinance:

 

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

 

IsHolidaySep-03-2007,NewYork;

true

(3.1)

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

 

FinanceAdjustDateSep-03-2007,NewYork,convention=Following;

Sep-04-2007

(3.2)

FinanceAdjustDateSep-03-2007,NewYork,convention=Preceding;

Aug-31-2007

(3.3)

FinanceAdjustDateSep-03-2007,NewYork,convention=Unadjusted;

Sep-03-2007

(3.4)

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

 

StringTools:-ParseTime%b-%d-%Y,Sep-03-2007:-weekDay;

2

(3.5)

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

 

C1:=Calendar:

IsHolidayAug-18-2006,C1;

false

(3.6)

AddHolidayC1, Aug−18−2006;

AddHolidayC1, Aug−19−2006;

 

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

 

IsHolidayAug-18-2006,C1;

true

(3.7)

C2:=CalendarToronto:

 

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

 

C3:=JoinHolidaysC1,C2:

C4:=JoinBusinessDaysC1,C2:

mapt→IsHolidayAug-18-2006,t,C1,C2,C3,C4;

true,false,true,false

(3.8)

mapt→IsHolidayAug-19-2006,t,C1,C2,C3,C4;

true,true,true,true

(3.9)

Standard Calendars

Bratislava Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Epiphany, January 6th

• 

Good Friday

• 

Easter Monday

• 

May Day, May 1st

• 

Liberation of the Republic, May 8th

• 

SS. Cyril and Methodius, July 5th

• 

Slovak National Uprising, August 29th

• 

Constitution of the Slovak Republic, September 1st

• 

Our Lady of the Seven Sorrows, September 15th

• 

All Saints Day, November 1st

• 

Freedom and Democracy of the Slovak Republic, November 17th

• 

Christmas Eve, December 24th

• 

Christmas, December 25th

• 

St. Stephen, December 26th

References

• 

http://www.bsse.sk

Budapest Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Epiphany, January 6th

• 

Good Friday

• 

Easter Monday

• 

May Day, May 1st

• 

Liberation of the Republic, May 8th

• 

SS. Cyril and Methodius, July 5th

• 

Slovak National Uprising, August 29th

• 

Constitution of the Slovak Republic, September 1st

• 

Our Lady of the Seven Sorrows, September 15th

• 

All Saints Day, November 1st

• 

Freedom and Democracy of the Slovak Republic, November 17th

• 

Christmas Eve, December 24th

• 

Christmas, December 25th

• 

St. Stephen, December 26th

References

• 

http://www.bse.hu

Copenhagen Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

Maunday Thursday

• 

Good Friday

• 

Easter Monday

• 

General Prayer Day, 25 days after Easter Monday

• 

Ascension

• 

Whit (Pentecost) Monday

• 

New Year's Day, January 1st

• 

Constitution Day, June 5th

• 

Christmas, December 25th

• 

Boxing Day, December 26th

References

• 

http://www.sce.dk

Frankfurt Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Good Friday

• 

Easter Monday

• 

Labour Day, May 1st

• 

Christmas' Eve, December 24th

• 

Christmas, December 25th

• 

Christmas Holiday, December 26th

• 

New Year's Eve, December 31st

References

• 

http://www.deutsche-boerse.com

Helsinki Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Epiphany, January 6th

• 

Good Friday

• 

Easter Monday

• 

Ascension Thursday

• 

Labour Day, May 1st

• 

Midsummer Eve (Friday between June 18-24)

• 

Independence Day, December 6th

• 

Christmas Eve, December 24th

• 

Christmas, December 25th

• 

Boxing Day, December 26th

References

• 

http://www.hex.com

Johannesburg Securities Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st (possibly moved to Monday)

• 

Good Friday

• 

Family Day, Easter Monday

• 

Human Rights Day, March 21st (possibly moved to Monday)

• 

Freedom Day, April 27th (possibly moved to Monday)

• 

Workers Day, May 1st (possibly moved to Monday)

• 

Youth Day, June 16th (possibly moved to Monday)

• 

National Women's Day, August 9th (possibly moved to Monday)

• 

Heritage Day, September 24th (possibly moved to Monday)

• 

Day of Reconciliation, December 16th (possibly moved to Monday)

• 

Christmas December 25th

• 

Day of Goodwill December 26th (possibly moved to Monday)

References

• 

http://www.jse.co.za

Milan Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Good Friday

• 

Easter Monday

• 

Labour Day, May 1st

• 

Assumption, August 15th

• 

Christmas' Eve, December 24th

• 

Christmas, December 25th

• 

St. Stephen, December 26th

• 

New Year's Eve, December 31st

References

• 

http://www.borsaitalia.it

London Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st (possibly moved to Monday)

• 

Good Friday

• 

Easter Monday

• 

Early May Bank Holiday, first Monday of May

• 

Spring Bank Holiday, last Monday of May

• 

Summer Bank Holiday, last Monday of August

• 

Christmas Day, December 25th (possibly moved to Monday or Tuesday)

• 

Boxing Day, December 26th (possibly moved to Monday or Tuesday)  

 

References

• 

http://www.londonstockexchange.com/en-gb/about/cooverview/businessdays/

New York Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st (possibly moved to Monday if falls on Sunday)

• 

Martin Luther King's birthday, third Monday in January (since 1998)

• 

Presidents' Day (a.k.a. Washington's birthday), third Monday in February

• 

Good Friday

• 

Memorial Day, last Monday in May

• 

Independence Day, July 4th (moved to Monday if falls on Sunday or Friday if falls on Saturday)

• 

Labor Day, first Monday in September

• 

Thanksgiving Day, fourth Thursday in November

• 

Presidential election day, first Tuesday in November of election years (until 1980)

• 

Christmas, December 25th (moved to Monday if falls on Sunday or Friday if falls on Saturday)

• 

Special historic closings

 

References

• 

http://www.nyse.com

• 

http://www.nyse.com/about/newsevents/1176373643795.html

Oslo Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

Holy Thursday

• 

Good Friday

• 

Easter Monday

• 

Ascension

• 

Whit(Pentecost) Monday

• 

New Year's Day, January 1st

• 

May Day, May 1st

• 

National Independence Day, May 17st

• 

Christmas, December 25th

• 

Boxing Day, December 26th

References

• 

 http://www.oslobors.no

Prague Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Easter Monday

• 

Labour Day, May 1st

• 

Liberation Day, May 8th

• 

SS. Cyril and Methodius, July 5th

• 

Jan Hus Day, July 6th

• 

Czech Statehood Day, September 28th

• 

Independence Day, October 28th

• 

Struggle for Freedom and Democracy Day, November 17th

• 

Christmas Eve, December 24th

• 

Christmas, December 25th

• 

St. Stephen, December 26th

References

• 

 http://www.pse.cz

Stockholm Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

Good Friday

• 

Easter Monday

• 

Ascension

• 

Whit(Pentecost) Monday

• 

Midsummer Eve (Friday between June 18-24)

• 

New Year's Day, January 1st

• 

Epiphany, January 6th

• 

May Day, May 1st

• 

National Day, June 6th

• 

Christmas Eve, December 24th

• 

Christmas Day, December 25th

• 

Boxing Day, December 26th

• 

New Year's Eve, December 31th

References

• 

 http://www.stockholmsborsen.se

Sydney Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Australia Day, January 26th (possibly moved to Monday)

• 

Good Friday

• 

Easter Monday

• 

ANZAC Day. April 25th (possibly moved to Monday)

• 

Queen's Birthday, second Monday in June

• 

Bank Holiday, first Monday in August

• 

Labour Day, first Monday in October

• 

Christmas, December 25th (possibly moved to Monday or Tuesday)

• 

Boxing Day, December 26th (possibly moved to Monday or Tuesday)

References

• 

 http://www.asx.com.au/

Tokyo Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st

• 

Bank Holiday, January 2nd

• 

Bank Holiday, January 3rd

• 

Coming of Age Day, 2nd Monday in January

• 

National Foundation Day, February 11th

• 

Vernal Equinox

• 

Greenery Day, April 29th

• 

Constitution Memorial Day, May 3rd

• 

Holiday for a Nation, May 4th

• 

Children's Day, May 5th

• 

Marine Day, 3rd Monday in July

• 

Respect for the Aged Day, 3rd Monday in September

• 

Autumnal Equinox

• 

Health and Sports Day, 2nd Monday in October

• 

National Culture Day, November 3rd

• 

Labor Thanksgiving Day, November 23rd

• 

Emperor's Birthday, December 23rd

• 

Bank Holiday, December 31st

References

• 

 http://www.tse.or.jp

Toronto Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st (possibly moved to Monday)

• 

Good Friday

• 

Easter Monday

• 

Victoria Day, The Monday on or preceding 24 May

• 

Canada Day, July 1st (possibly moved to Monday)

• 

Provincial Holiday, first Monday of August

• 

Labour Day, first Monday of September

• 

Thanksgiving Day, second Monday of October

• 

Remembrance Day, November 11th

• 

Christmas, December 25th (possibly moved to Monday or Tuesday)

• 

Boxing Day, December 26th (possibly moved to Monday or Tuesday)

References

• 

 http://www.tsx.com

Warsaw Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

Easter Monday

• 

Corpus Christi

• 

New Year's Day, January 1st

• 

May Day, May 1st

• 

Constitution Day, May 3rd

• 

Assumption of the Blessed Virgin Mary, August 15th

• 

All Saints Day, November 1st

• 

Independence Day, November 11th

• 

Christmas, December 25th

• 

2nd Day of Christmas, December 26th

References

• 

 http://www.gpw.com.pl

Wellington Stock Exchange

Holidays

• 

Saturdays

• 

Sundays

• 

New Year's Day, January 1st (possibly moved to Monday or Tuesday)

• 

Day after New Year's Day, January 2st (possibly moved to Monday or Tuesday)

• 

Anniversary Day, Monday nearest January 22nd

• 

Waitangi Day. February 6th

• 

Good Friday

• 

Easter Monday

• 

ANZAC Day. April 25th

• 

Queen's Birthday, first Monday in June

• 

Labour Day, fourth Monday in October

• 

Christmas, December 25th (possibly moved to Monday or Tuesday)

• 

Boxing Day, December 26th (possibly moved to Monday or Tuesday)

References

• 

 http://www.nzx.com

United Kingdom General

Holidays

• 

Saturdays

• 

Sundays.

• 

New Year's Day, January 1st (possibly moved to Monday).

• 

Good Friday.

• 

Easter Monday.

• 

Early May Bank Holiday, first Monday of May.

• 

Spring Bank Holiday, last Monday of May.

• 

Summer Bank Holiday, last Monday of August.

• 

Christmas Day, December 25th (possibly moved to Monday or Tuesday).