diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/reto.py | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/python/reto.py b/python/reto.py index 1fe6d847..f45114fe 100644 --- a/python/reto.py +++ b/python/reto.py @@ -89,22 +89,14 @@ def save_shocks(conn, date, df, fund): def get_survival_curves(conn, date): - surv_curves = ( - ( - load_all_curves(conn, date).assign( - **{ - f"{cds_tenor}yr_spread": lambda df: df["curve"].apply( - lambda sc: [h for d, h in sc][cds_tenor] - * (1 - sc.recovery_rates[cds_tenor]) - ) - for cds_tenor in (1, 3, 5) - } - ) - ) - .groupby(level=0) - .first()[["name", "company_id", "1yr_spread", "3yr_spread", "5yr_spread"]] + surv_curves = load_all_curves(conn, date) + fun = lambda sc: (np.array([h for d, h in sc]) * (1 - sc.recovery_rates))[[1, 3, 5]] + surv_curves[["1yr", "3yr", "5yr"]] = np.stack( + [fun(sc) for sc in surv_curves["curve"].values], axis=0 ) - return surv_curves + return surv_curves.groupby(level=0).first()[ + ["name", "company_id", "1yr", "3yr", "5yr"] + ] def gen_jtd(portf, survival_curves): @@ -132,7 +124,7 @@ def save_jtd(conn, date, df, fund): ) conn.commit() c.executemany( - """INSERT INTO jtd_risks(date, fund, company_id, name, "1yr_spread", "3yr_spread", "5yr_spread", jtd) """ + 'INSERT INTO jtd_risks(date, fund, company_id, name, "1yr_spread", "3yr_spread", "5yr_spread", jtd)' "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)", [(date, fund, *t) for t in df.itertuples(index=False)], ) @@ -160,7 +152,7 @@ if __name__ == "__main__": args = parser.parse_args() C.local = False - C.dual_corr_tranche_cache_size = 16384 + C.dual_corr_tranche_cache_size = 2**14 survival_curves = get_survival_curves(Trade._conn, args.date) conn = dbconn("dawndb") |
