aboutsummaryrefslogtreecommitdiffstats
path: root/python/risk
diff options
context:
space:
mode:
Diffstat (limited to 'python/risk')
-rw-r--r--python/risk/bonds.py11
-rw-r--r--python/risk/portfolio.py14
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)