mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-27 23:06:53 +08:00
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from unittest import TestCase
|
|
import pandas as pd
|
|
|
|
from .test_trading_calendar import ExchangeCalendarTestBase
|
|
from catalyst.utils.calendars.exchange_calendar_cfe import CFEExchangeCalendar
|
|
|
|
|
|
class CFECalendarTestCase(ExchangeCalendarTestBase, TestCase):
|
|
answer_key_filename = "cfe"
|
|
calendar_class = CFEExchangeCalendar
|
|
|
|
MAX_SESSION_HOURS = 8
|
|
|
|
def test_2016_holidays(self):
|
|
# new years: jan 1
|
|
# mlk: jan 18
|
|
# presidents: feb 15
|
|
# good friday: mar 25
|
|
# mem day: may 30
|
|
# independence day: july 4
|
|
# labor day: sep 5
|
|
# thanksgiving day: nov 24
|
|
# christmas (observed): dec 26
|
|
# new years (observed): jan 2 2017
|
|
for day in ["2016-01-01", "2016-01-18", "2016-02-15", "2016-03-25",
|
|
"2016-05-30", "2016-07-04", "2016-09-05", "2016-11-24",
|
|
"2016-12-26", "2017-01-02"]:
|
|
self.assertFalse(
|
|
self.calendar.is_session(pd.Timestamp(day, tz='UTC'))
|
|
)
|
|
|
|
def test_2016_early_closes(self):
|
|
# only early close is day after thanksgiving: nov 25
|
|
dt = pd.Timestamp("2016-11-25", tz='UTC')
|
|
self.assertTrue(dt in self.calendar.early_closes)
|
|
|
|
market_close = self.calendar.schedule.loc[dt].market_close
|
|
market_close = market_close.tz_convert(self.calendar.tz)
|
|
|
|
self.assertEqual(12, market_close.hour)
|
|
self.assertEqual(15, market_close.minute)
|
|
|
|
def test_adhoc_holidays(self):
|
|
# hurricane sandy: oct 29 2012, oct 30 2012
|
|
# national days of mourning:
|
|
# - apr 27 1994
|
|
# - june 11 2004
|
|
# - jan 2 2007
|
|
for day in ["1994-04-27", "2004-06-11", "2007-01-02",
|
|
"2012-10-29", "2012-10-30"]:
|
|
self.assertFalse(
|
|
self.calendar.is_session(pd.Timestamp(day, tz='UTC'))
|
|
)
|