diff options
Diffstat (limited to 'python/analytics/index_data.py')
| -rw-r--r-- | python/analytics/index_data.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py index 189df871..22862bdf 100644 --- a/python/analytics/index_data.py +++ b/python/analytics/index_data.py @@ -4,6 +4,7 @@ import numpy as np from analytics.utils import roll_date, previous_twentieth from pandas.tseries.offsets import BDay +from functools import lru_cache from pyisda.curve import SpreadCurve, fill_curve from multiprocessing import Pool from yieldcurve import get_curve @@ -156,18 +157,21 @@ def build_curves_dist(quotes, args, workers=4): r = pool.starmap(build_curve, [(q, *args) for q in quotes], 30) return r -def get_singlenames_curves(index_type, series, trade_date): - end_dates = roll_date(trade_date, [0.5, 1, 2, 3, 4, 5, 7, 10], nd_array=True) - sn_quotes = get_singlenames_quotes("{}{}".format(index_type.lower(), series), - trade_date.date()) +@lru_cache(maxsize=16) +def _get_singlenames_curves(index_type, series, trade_date): + tenors = np.array([0.5, 1, 2, 3, 4, 5, 7, 10]) + sn_quotes = get_singlenames_quotes(f"{index_type.lower()}{series}", + trade_date) currency = "EUR" if index_type in ["XO", "EU"] else "USD" - jp_yc = get_curve(trade_date, currency) - start_date = previous_twentieth(trade_date) - step_in_date = trade_date + datetime.timedelta(days=1) - value_date = pd.Timestamp(trade_date) + 3 * BDay() - args = (trade_date, jp_yc, start_date, step_in_date, value_date, end_dates) - curves = build_curves_dist(sn_quotes, args) - return curves, args + args = (tenors, currency) + return build_curves(sn_quotes, args) + +def get_singlenames_curves(index_type, series, trade_date): + tenors = np.array([0.5, 1, 2, 3, 4, 5, 7, 10]) + if isinstance(trade_date, pd.Timestamp): + trade_date = trade_date.date() + return _get_singlenames_curves(index_type, series, + min(datetime.date.today(), trade_date)) def get_tranche_quotes(index_type, series, tenor, date=datetime.date.today()): conn = dbconn('serenitasdb') |
