diff options
Diffstat (limited to 'python/analytics/curve_trades.py')
| -rw-r--r-- | python/analytics/curve_trades.py | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/python/analytics/curve_trades.py b/python/analytics/curve_trades.py index 555194ba..73be4ab5 100644 --- a/python/analytics/curve_trades.py +++ b/python/analytics/curve_trades.py @@ -1,5 +1,5 @@ from analytics.index_data import get_index_quotes, index_returns -from db import dbengine +from db import serenitas_engine, dawn_engine from analytics import CreditIndex, Portfolio from analytics.utils import roll_date from dateutil.relativedelta import relativedelta @@ -16,12 +16,9 @@ import statsmodels.formula.api as smf import numpy as np import matplotlib.pyplot as plt -serenitasdb = dbengine('serenitasdb') -dawndb = dbengine('dawndb') - def on_the_run(index): - r = serenitasdb.execute("SELECT max(series) FROM index_version WHERE index=%s", - (index,)) + r = serenitas_engine.execute("SELECT max(series) FROM index_version WHERE index=%s", + (index,)) series, = r.fetchone() return series @@ -151,9 +148,9 @@ def forward_loss(index='IG'): "close_spread*duration / 100 AS indexel " \ "FROM index_quotes WHERE index=%s AND date >= %s " \ "ORDER BY date DESC, series ASC, duration ASC", - serenitasdb, parse_dates=['date'], params=[index, start_date]) + serenitase_engine, parse_dates=['date'], params=[index, start_date]) df1 = pd.read_sql_query("SELECT index, series, tenor, maturity FROM index_maturity", - serenitasdb, parse_dates=['maturity']) + serenitas_engine, parse_dates=['maturity']) df = df.merge(df1, on=['index','series','tenor']) df = df.set_index(['date','index', 'maturity']).dropna() @@ -277,7 +274,7 @@ def curve_pos(value_date, index_type='IG'): "JOIN index_desc " \ "ON security_id=redindexcode AND " \ "index_desc.maturity=list_cds_positions.maturity" - df = pd.read_sql_query(sql_string, dawndb, + df = pd.read_sql_query(sql_string, dawn_engine, params=[value_date, f'SER_{index_type}CURVE']) portf = Portfolio([CreditIndex(row.index, row.series, row.tenor, @@ -301,11 +298,11 @@ def curve_shape(value_date, index='IG', percentile=.95, spread=None): if spread is None: sql_string = "SELECT closespread FROM index_quotes where index = %s " \ "and series = %s and tenor = %s and date = %s" - spread_df = pd.read_sql_query(sql_string, serenitasdb, + spread_df = pd.read_sql_query(sql_string, serenitas_engine, params=[index, series, '5yr', value_date]) spread = spread_df.iloc[0][0] sql_string = "SELECT tenor, maturity FROM index_maturity where index = %s and series = %s" - lookup_table = pd.read_sql_query(sql_string, serenitasdb, parse_dates=['maturity'], + lookup_table = pd.read_sql_query(sql_string, serenitas_engine, parse_dates=['maturity'], params=[index, series]) df = curve_shape[steepness == steepness.quantile(percentile, 'nearest')] @@ -350,7 +347,7 @@ def pos_pnl_abs(portf, value_date, index='IG', rolling=6, years=3): df = df.groupby(level=['date', 'tenor']).nth(-1)['close_spread'].unstack(-1) sql_string = "SELECT tenor, maturity FROM index_maturity where index = %s and series = %s" - lookup_table = pd.read_sql_query(sql_string, serenitasdb, parse_dates=['maturity'], + lookup_table = pd.read_sql_query(sql_string, serenitas_engine, parse_dates=['maturity'], params=[index, series]) lookup_table['year_frac'] = (lookup_table.maturity - pd.to_datetime(value_date)).dt.days/365 |
