diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/utils.py | 4 | ||||
| -rw-r--r-- | python/dates.py | 13 |
2 files changed, 14 insertions, 3 deletions
diff --git a/python/analytics/utils.py b/python/analytics/utils.py index 64337949..c75a0018 100644 --- a/python/analytics/utils.py +++ b/python/analytics/utils.py @@ -2,7 +2,7 @@ import datetime import numpy as np import pandas as pd from scipy.special import h_roots -from dateutil.relativedelta import relativedelta, FR +from dateutil.relativedelta import relativedelta, WE from functools import partial, wraps from pyisda.date import pydate_to_TDate from pandas.api.types import CategoricalDtype @@ -32,7 +32,7 @@ def next_twentieth(d): def third_wednesday(d): if isinstance(d, datetime.date): - return d + relativedelta(day=1, weekday=FR(3)) + return d + relativedelta(day=1, weekday=WE(3)) elif isinstance(d, Date): return nth_weekday(3, Wednesday, d.month, d.year) diff --git a/python/dates.py b/python/dates.py index 025949b6..348c2b48 100644 --- a/python/dates.py +++ b/python/dates.py @@ -2,7 +2,12 @@ import datetime import pandas as pd import unittest -from dateutil.relativedelta import relativedelta +from dateutil.relativedelta import relativedelta, WE, MO +try: + from dateutil.parser import isoparse +except ImportError: + from dateutil.parser import parse as isoparse + from pandas.tseries.offsets import CustomBusinessDay, Day, QuarterBegin from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday @@ -27,6 +32,12 @@ def previous_twentieth(d): r -= relativedelta(months = mod) return r +def imm_date(d): + if isinstance(d, str): + d = isoparse(d) + r = d + relativedelta(day=1, weekday=WE(3)) + return r + relativedelta(weekday=MO(-1)) + def days_accrued(tradedate): tradedate = pd.Timestamp(tradedate) start_protection = tradedate + Day() |
