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