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