aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/risk/bonds.py35
1 files changed, 22 insertions, 13 deletions
diff --git a/python/risk/bonds.py b/python/risk/bonds.py
index 0140de5e..b15ed2bf 100644
--- a/python/risk/bonds.py
+++ b/python/risk/bonds.py
@@ -230,24 +230,33 @@ def get_portfolio(date, conn, asset_class: AssetClass, fund="SERCGMAST"):
return df.set_index("cusip")
-def crt_risk(date, dawn_conn, crt_engine, model_date=None, fund="SERCGMAST"):
+def crt_risk(date, dawn_conn, crt_engine, fund="SERCGMAST"):
analytics.init_ontr(date)
df = get_portfolio(date, dawn_conn, AssetClass.CRT, fund)
- if model_date is None:
- sql_string = (
- "SELECT distinct timestamp FROM priced_at_market "
- "where model_des = 'base' "
- "AND timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) order by timestamp desc"
- )
- with crt_engine.connect() as c:
- r = c.execute(sql_string, (date - datetime.timedelta(days=15), date))
- (model_date,) = r.fetchone()
+ scen = {
+ datetime.date(2019, 5, 31): "base",
+ datetime.date(2020, 1, 29): "hpi3_ir3",
+ datetime.date(2020, 3, 18): "hpi4_ir3",
+ datetime.date(2020, 10, 20): "hpi5_ir3",
+ datetime.date(3000, 1, 1): "econ6_ir3",
+ }
+ scen_type = None
+ for d, s in scen.items():
+ if scen_type == None and date < d:
+ scen_type = s
+ sql_string = (
+ "SELECT distinct timestamp FROM priced_at_market "
+ "where model_des = %s "
+ "AND timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) order by timestamp desc"
+ )
+ with crt_engine.connect() as c:
+ r = c.execute(sql_string, (scen_type, date - datetime.timedelta(days=15), date))
+ (model_date,) = r.fetchone()
df_model = pd.read_sql_query(
- "SELECT * from priced_at_market WHERE "
- "timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) ",
+ "SELECT * from priced_at_market WHERE timestamp = %s",
crt_engine,
"cusip",
- params=(model_date, model_date),
+ params=(model_date,),
)
if any(~df_model["delta.ir"].isna()):
df_model = df_model[~df_model["delta.ir"].isna()]