aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/index_data.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py
index 06c5cd00..f6f9e3c3 100644
--- a/python/analytics/index_data.py
+++ b/python/analytics/index_data.py
@@ -69,7 +69,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None,
where_clause = " AND ".join(make_str(k, v)
for k, v in args.items() if v is not None)
- sql_str = "SELECT * FROM index_quotes_pre"
+ sql_str = "SELECT * FROM index_quotes_pre LEFT JOIN index_risk2 USING (id)"
if where_clause:
sql_str = " WHERE ".join([sql_str, where_clause])
@@ -144,10 +144,11 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None,
return df.set_index(['date'], append=True)
-def get_singlenames_quotes(indexname, date):
+def get_singlenames_quotes(indexname, date, tenors):
conn = dbconn('serenitasdb')
with conn.cursor() as c:
- c.execute("SELECT * FROM curve_quotes(%s, %s)", vars=(indexname, date))
+ c.execute("SELECT * FROM curve_quotes2(%s, %s, %s)",
+ vars=(indexname, date, list(tenors)))
return list(c)
@@ -157,6 +158,7 @@ def build_curve(r, tenors, currency="USD"):
spread_curve = 1e-4 * np.array(r['spread_curve'], dtype='float')
upfront_curve = 1e-2 * np.array(r['upfront_curve'], dtype='float')
recovery_curve = np.array(r['recovery_curve'], dtype='float')
+
yc = get_curve(r['date'], currency)
try:
sc = SpreadCurve(r['date'], yc, None, None, None,
@@ -183,7 +185,7 @@ def build_curves_dist(quotes, args, workers=4):
@lru_cache(maxsize=16)
def _get_singlenames_curves(index_type, series, trade_date, tenors):
sn_quotes = get_singlenames_quotes(f"{index_type.lower()}{series}",
- trade_date)
+ trade_date, tenors)
currency = "EUR" if index_type in ["XO", "EU"] else "USD"
args = (np.array(tenors), currency)
return build_curves_dist(sn_quotes, args)
@@ -191,6 +193,7 @@ def _get_singlenames_curves(index_type, series, trade_date, tenors):
def get_singlenames_curves(index_type, series, trade_date,
tenors=(0.5, 1, 2, 3, 4, 5, 7, 10)):
+ # tenors need to be a subset of (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,