diff options
| -rw-r--r-- | python/risk/__main__.py | 17 | ||||
| -rw-r--r-- | python/risk/tranches.py | 8 |
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"), |
