aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/utils.py4
-rw-r--r--python/dates.py13
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()