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