aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/risk/__main__.py17
-rw-r--r--python/risk/tranches.py8
2 files changed, 14 insertions, 11 deletions
diff --git a/python/risk/__main__.py b/python/risk/__main__.py
index 01e0e052..596b7333 100644
--- a/python/risk/__main__.py
+++ b/python/risk/__main__.py
@@ -4,6 +4,7 @@ from db import dbconn, dbengine
from pandas.tseries.offsets import BDay
from .subprime import get_rmbs_portfolio, subprime_risk
from .swaptions import get_swaption_portfolio, insert_swaption_portfolio
+from .tranches import get_tranche_portfolio, insert_tranche_portfolio
parser = argparse.ArgumentParser()
parser.add_argument('workdate', nargs='?',
@@ -17,10 +18,12 @@ else:
with dbconn('dawndb') as conn:
portf = get_swaption_portfolio(workdate, conn, source_list=["GS"])
insert_swaption_portfolio(portf, conn)
- portf = get_rmbs_portfolio(workdate, conn)
- crt_portf = portf[portf.strategy.str.contains("CRT")]
- subprime_portf = portf[~portf.strategy.str.contains("CRT")]
- subprime_portf_zero = subprime_portf[subprime_portf.identifier.str.endswith("_A")]
- subprime_portf = subprime_portf[~subprime_portf.identifier.str.endswith("_A")]
- df = subprime_risk(workdate)
- subprime_portf = subprime_portf.join(df)
+ portf = get_tranche_portfolio(workdate, conn)
+ insert_tranche_portfolio(portf, conn)
+ #portf = get_rmbs_portfolio(workdate, conn)
+ # crt_portf = portf[portf.strategy.str.contains("CRT")]
+ # subprime_portf = portf[~portf.strategy.str.contains("CRT")]
+ # subprime_portf_zero = subprime_portf[subprime_portf.identifier.str.endswith("_A")]
+ # subprime_portf = subprime_portf[~subprime_portf.identifier.str.endswith("_A")]
+ # df = subprime_risk(workdate)
+ # subprime_portf = subprime_portf.join(df)
diff --git a/python/risk/tranches.py b/python/risk/tranches.py
index 5f1532cc..22291170 100644
--- a/python/risk/tranches.py
+++ b/python/risk/tranches.py
@@ -15,7 +15,7 @@ def get_tranche_portfolio(date, conn, by_strat=False, fund="SERCGMAST"):
params = (date, date, fund)
with conn.cursor() as c:
c.execute(sql_string, params)
- trade_ids = list(c)
+ trade_ids = [tuple(e) for e in c]
if by_strat:
portf = Portfolio([DualCorrTranche(redcode=t.security_id,
maturity=t.maturity,
@@ -35,7 +35,7 @@ def get_tranche_portfolio(date, conn, by_strat=False, fund="SERCGMAST"):
portf.mark()
return portf
-def insert_tranche_risk(portf, conn):
+def insert_tranche_portfolio(portf, conn):
cols = ["clean_nav", "accrued", "theta", "duration", "delta",
"upfront", "running", "index_refprice", "index_refspread",
"index_duration"]
@@ -44,9 +44,9 @@ def insert_tranche_risk(portf, conn):
" ON CONFLICT (date, tranche_id) DO UPDATE "
f"SET {update_str}")
with conn.cursor() as c:
- for trade_id, trade in portf.items():
+ for (strat, trade_id), trade in portf.items():
c.execute(sql_str, (trade.value_date,
- trade_id[1],
+ trade_id,
trade.clean_pv,
-trade._accrued * trade.notional,
trade.theta(method="TLP"),