aboutsummaryrefslogtreecommitdiffstats
path: root/python/exploration
diff options
context:
space:
mode:
Diffstat (limited to 'python/exploration')
-rw-r--r--python/exploration/VaR.py39
1 files changed, 18 insertions, 21 deletions
diff --git a/python/exploration/VaR.py b/python/exploration/VaR.py
index 1e6a02a3..09446591 100644
--- a/python/exploration/VaR.py
+++ b/python/exploration/VaR.py
@@ -1,11 +1,7 @@
from analytics.curve_trades import on_the_run
-from analytics.index_data import index_returns, get_index_quotes, index_returns
-from analytics import Portfolio
-from db import dbengine, dbconn
-from pandas.tseries.offsets import BDay, BMonthEnd
-from copy import deepcopy
+from analytics.index_data import get_index_quotes, index_returns
+from db import dbengine
-import numpy as np
import pandas as pd
import math
import datetime
@@ -13,15 +9,16 @@ import datetime
dawndb = dbengine('dawndb')
serenitasdb = dbengine('serenitasdb')
+
def hist_var(portf, index_type='IG', quantile=.05, years=5):
df = index_returns(index=index_type, years=years,
- tenor=['3yr', '5yr', '7yr', '10yr'])
+ tenor=['3yr', '5yr', '7yr', '10yr'])
df = (df.reset_index(['index'], drop=True).
- reorder_levels(['date', 'series', 'tenor']))
+ reorder_levels(['date', 'series', 'tenor']))
returns = df.spread_return.dropna().reset_index('series')
returns['dist_on_the_run'] = (returns.
- groupby('date')['series'].
- transform(lambda x: x.max() - x))
+ groupby('date')['series'].
+ transform(lambda x: x.max() - x))
del returns['series']
returns = returns.set_index('dist_on_the_run', append=True).unstack('tenor')
returns.columns = returns.columns.droplevel(0)
@@ -41,13 +38,14 @@ def hist_var(portf, index_type='IG', quantile=.05, years=5):
pnl = pd.DataFrame.from_records(r, columns=['date', 'pnl'], index=['date'])
return pnl.quantile(quantile) * math.sqrt(12)
-def rel_spread_diff(report_date = datetime.date.today(), index='HY', rolling=10):
+
+def rel_spread_diff(report_date=datetime.date.today(), index='HY', rolling=10):
otr = on_the_run(index)
## look at spreads
df = get_index_quotes(index, list(range(otr - rolling, otr + 1)),
tenor=['3yr', '5yr', '7yr', '10yr'], years=5)
- duration = df.duration.xs((report_date,'5yr', otr), level = ['date','tenor', 'series'])[-1]
+ duration = df.duration.xs((report_date, '5yr', otr), level=['date', 'tenor', 'series'])[-1]
df = df.xs('5yr', level='tenor')['closespread'].groupby(['date']).last()
df = df.loc['2013-01-15':report_date]
@@ -56,15 +54,14 @@ def rel_spread_diff(report_date = datetime.date.today(), index='HY', rolling=10)
return df.groupby('date').last(), curr_spread, duration
-def get_pos(report_date):
- strats = ["HEDGE_CSO", "HEDGE_MBS", "HEDGE_CLO", "HEDGE_MAC",
- "SER_IGINX", "SER_HYINX", "SER_IGCURVE", "SER_ITRXCURVE",
- "IGOPTDEL", "HYOPTDEL"]
- r = {}
- for st in strats:
- r[st] = pd.read_sql_query("SELECT * from list_cds_marks(%s, %s)",
- dawndb, params=(report_date, st))
- return pd.concat(r, names=['strategy']).reset_index()
+
+def get_pos(report_date, strategy=None):
+ if strategy is None:
+ return pd.read_sql_query("SELECT * from list_cds_marks(%s)",
+ dawndb, params=(report_date,))
+ else:
+ return pd.read_sql_query("SELECT * from list_cds_marks(%s, %s)",
+ dawndb, params=(report_date, strategy))
def cleared_cds_margins(report_date=datetime.date.today()):