diff options
Diffstat (limited to 'python/analytics/index_data.py')
| -rw-r--r-- | python/analytics/index_data.py | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py index 3a588e07..0fd06ff0 100644 --- a/python/analytics/index_data.py +++ b/python/analytics/index_data.py @@ -1,4 +1,4 @@ -from .db import _engine, dbconn +from .db import serenitas_engine from dates import bond_cal import numpy as np @@ -32,18 +32,20 @@ def insert_quotes(): _engine, parse_dates=['date'], index_col=['date']) df = df.loc[dates] for tup in df.itertuples(): - result = _engine.execute("SELECT indexfactor, cumulativeloss FROM index_version " - "WHERE index = 'HY' AND series=%s AND version in (%s, %s)" - "ORDER BY version", - (tup.series, tup.version, tup.version+1)) + result = serenitas_engine.execute( + "SELECT indexfactor, cumulativeloss FROM index_version " + "WHERE index = 'HY' AND series=%s AND version in (%s, %s)" + "ORDER BY version", + (tup.series, tup.version, tup.version+1)) factor1, cumloss1 = result.fetchone() factor2, cumloss2 = result.fetchone() recovery = 1-(cumloss2-cumloss1) - version2_price = (factor1 * tup.closeprice - 100*recovery)/factor2 + version2_price = (factor1 * tup.closeprice - 100 * recovery)/factor2 print(version2_price) - _engine.execute("INSERT INTO index_quotes(date, index, series, version, tenor, closeprice)" - "VALUES(%s, %s, %s, %s, %s, %s)", - (tup.Index, 'HY', tup.series, tup.version+1, tup.tenor, version2_price)) + serenitas_engine.execute( + "INSERT INTO index_quotes(date, index, series, version, tenor, closeprice)" + "VALUES(%s, %s, %s, %s, %s, %s)", + (tup.Index, 'HY', tup.series, tup.version+1, tup.tenor, version2_price)) def get_index_quotes(index=None, series=None, tenor=None, from_date=None, @@ -77,7 +79,7 @@ def get_index_quotes(index=None, series=None, tenor=None, from_date=None, return {k: tuple(v) if isinstance(v, list) else v for k, v in args.items() if v is not None} - df = pd.read_sql_query(sql_str, _engine, parse_dates=['date'], + df = pd.read_sql_query(sql_str, serenitas_engine, parse_dates=['date'], index_col=['date', 'index', 'series', 'version'], params=make_params(args)) df.tenor = df.tenor.astype(tenor_t) @@ -128,7 +130,7 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None, coupon_data = pd.read_sql_query("SELECT index, series, tenor, coupon * 1e-4 AS coupon, " "maturity FROM " "index_maturity WHERE coupon is NOT NULL", - _engine, + serenitas_engine, index_col=['index', 'series', 'tenor']) df = df.reset_index('date').join(coupon_data).reset_index('tenor') # for some reason pandas doesn't keep the categories, so we have to @@ -145,11 +147,9 @@ def index_returns(df=None, index=None, series=None, tenor=None, from_date=None, def get_singlenames_quotes(indexname, date, tenors): - conn = dbconn('serenitasdb') - with conn.cursor() as c: - c.execute("SELECT * FROM curve_quotes2(%s, %s, %s)", - vars=(indexname, date, list(tenors))) - return list(c) + r = serenitas_engine.execute("SELECT * FROM curve_quotes2(%s, %s, %s)", + (indexname, date, list(tenors))) + return list(r) def build_curve(r, tenors, currency="USD"): @@ -203,7 +203,8 @@ def get_singlenames_curves(index_type, series, trade_date, def get_tranche_quotes(index_type, series, tenor, date=datetime.date.today()): - conn = dbconn('serenitasdb') + conn = serenitas_engine.raw_connection() with conn.cursor() as c: c.callproc("get_tranche_quotes", (index_type, series, tenor, date)) return pd.DataFrame.from_records(dict(d) for d in c) + conn.close() |
