diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/index_data.py | 4 | ||||
| -rw-r--r-- | python/analytics/utils.py | 10 |
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 |
