mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-04 12:45:06 +08:00
115 lines
2.1 KiB
Python
115 lines
2.1 KiB
Python
import pytz
|
|
|
|
from datetime import datetime, timedelta, date
|
|
from dateutil import rrule
|
|
from zipline.utils.date_utils import utcnow
|
|
|
|
start = datetime(2002, 1,1, tzinfo=pytz.utc)
|
|
end = utcnow()
|
|
|
|
non_trading_rules = []
|
|
|
|
weekends = rrule.rrule(
|
|
rrule.YEARLY,
|
|
byweekday=(rrule.SA, rrule.SU),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(weekends)
|
|
|
|
new_years = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
byyearday = 1,
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(new_years)
|
|
|
|
mlk_day = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 1,
|
|
byweekday = (rrule.MO(+3)),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(mlk_day)
|
|
|
|
presidents_day = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 2,
|
|
byweekday = (rrule.MO(3)),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(presidents_day)
|
|
|
|
good_friday = rrule.rrule(
|
|
rrule.DAILY,
|
|
byeaster = -2,
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(good_friday)
|
|
|
|
memorial_day = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 5,
|
|
byweekday = (rrule.MO(-1)),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(memorial_day)
|
|
|
|
july_4th = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 7,
|
|
bymonthday = 4,
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(july_4th)
|
|
|
|
labor_day = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 9,
|
|
byweekday = (rrule.MO(1)),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(labor_day)
|
|
|
|
thanksgiving = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 11,
|
|
byweekday = (rrule.TH(-1)),
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(thanksgiving)
|
|
|
|
christmas = rrule.rrule(
|
|
rrule.MONTHLY,
|
|
bymonth = 12,
|
|
bymonthday = 25,
|
|
cache = True,
|
|
dtstart = start,
|
|
until = end
|
|
)
|
|
non_trading_rules.append(christmas)
|
|
|
|
non_trading_ruleset = rrule.rruleset()
|
|
|
|
for rule in non_trading_rules:
|
|
non_trading_ruleset.rrule(rule)
|
|
|
|
non_trading_days = non_trading_ruleset.between(start, end, inc=True)
|