diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/risk/bonds.py | 11 | ||||
| -rw-r--r-- | python/risk/portfolio.py | 14 |
2 files changed, 12 insertions, 13 deletions
diff --git a/python/risk/bonds.py b/python/risk/bonds.py index 3804638b..ce064051 100644 --- a/python/risk/bonds.py +++ b/python/risk/bonds.py @@ -228,16 +228,17 @@ def get_portfolio(date, conn, asset_class: AssetClass, fund="SERCGMAST"): return df.set_index("cusip") -def crt_risk(date, dawn_conn, engine, model_version="hpi5_ir3_btm", fund="SERCGMAST"): +def crt_risk(date, dawn_conn, crt_engine, fund="SERCGMAST"): df = get_portfolio(date, dawn_conn, AssetClass.CRT, fund) df_model = pd.read_sql_query( "SELECT * from priced_at_market WHERE " - "timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) " - "AND model_des = %s", - engine, + "timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) ", + crt_engine, "cusip", - params=(date, date, model_version), + params=(date, date), ) + if any(~df_model["delta.ir"].isna()): + df_model = df_model[~df_model["delta.ir"].isna()] df = df.join(df_model) df["curr_ntl"] = df.notional * df.factor df["hy_equiv"] = ( diff --git a/python/risk/portfolio.py b/python/risk/portfolio.py index 2f4fb538..1e4a2f55 100644 --- a/python/risk/portfolio.py +++ b/python/risk/portfolio.py @@ -50,16 +50,14 @@ def build_portfolio(position_date, value_date=None, fund="SERCGMAST"): syn_portf += curve_portf + nocurve_portf # get bond risks: rmbs_pos = subprime_risk(position_date, conn, dbengine("rmbs_model"), fund=fund) - crt_pos = crt_risk( - position_date, conn, dbengine("crt"), fund=fund, model_version="hpi5_ir3_btm" - ) - # CRT model version changes with time, need to check - rmbs_notional = ( - rmbs_pos.get("hy_equiv", np.zeros(1)).sum() - + crt_pos.get("hy_equiv", np.zeros(1)).sum() + crt_pos = crt_risk(position_date, conn, dbengine("crt"), fund=fund) + portf.add_trade( + hy_equiv_trade(value_date, -rmbs_pos.get("hy_equiv", np.zeros(1)).sum()), + ("rmbs_bonds", "rmbs_bonds"), ) portf.add_trade( - hy_equiv_trade(value_date, -rmbs_notional), ("rmbs_bonds", "rmbs_bonds") + hy_equiv_trade(value_date, -crt_pos.get("hy_equiv", np.zeros(1)).sum()), + ("crt_bonds", "crt_bonds"), ) with dbconn("etdb") as etconn: clo_pos = clo_risk(position_date, conn, etconn, fund=fund) |
