aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/index_data.py4
-rw-r--r--python/analytics/utils.py10
2 files changed, 12 insertions, 2 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py
index 3d8f50e7..a31b65cd 100644
--- a/python/analytics/index_data.py
+++ b/python/analytics/index_data.py
@@ -2,7 +2,7 @@ from . import serenitas_engine, serenitas_pool
from dates import bond_cal
import numpy as np
-from .utils import tenor_t, prev_business_day
+from .utils import tenor_t, adjust_prev_business_day
from dateutil.relativedelta import relativedelta
from functools import lru_cache
from pyisda.curve import SpreadCurve, Seniority, DocClause, YieldCurve
@@ -257,7 +257,7 @@ def get_singlenames_curves_prebuilt(index_type, series, trade_date):
if isinstance(trade_date, datetime.datetime):
trade_date = trade_date.date()
- trade_date = prev_business_day(trade_date)
+ trade_date = adjust_prev_business_day(trade_date)
conn = serenitas_pool.getconn()
with conn.cursor() as c:
c.execute(
diff --git a/python/analytics/utils.py b/python/analytics/utils.py
index c1da64b7..89e2f4a7 100644
--- a/python/analytics/utils.py
+++ b/python/analytics/utils.py
@@ -75,6 +75,16 @@ def next_third_wed(d):
def prev_business_day(d: datetime.date):
if (offset := d.weekday() - 4) > 0:
return d - datetime.timedelta(days=offset)
+ elif offset == -4:
+ return d - datetime.timedelta(days=3)
+ else:
+ return d - datetime.timedelta(days=1)
+
+
+def adjust_prev_business_day(d: datetime.date):
+ """ roll to the previous business day"""
+ if (offset := d.weekday() - 4) > 0:
+ return d - datetime.timedelta(days=offset)
else:
return d