diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/reto.py | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/python/reto.py b/python/reto.py index 2839a4fd..85c48563 100644 --- a/python/reto.py +++ b/python/reto.py @@ -89,17 +89,35 @@ def save_shocks(conn, date, df, fund): def get_survival_curves(conn, date): - surv_curves = load_all_curves(conn, date) - surv_curves["spread"] = surv_curves["curve"].apply( - lambda sc: [h for d, h in sc][5] * (1 - sc.recovery_rates[5]) + surv_curves = ( + load_all_curves(conn, date) + .loc[~load_all_curves(conn, date).index.duplicated(keep="first")] + .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"]] ) - return surv_curves.groupby(level=0).first()[["name", "company_id", "spread"]] + return surv_curves def gen_jtd(portf, survival_curves): jtd = portf.jtd_single_names() jtd = survival_curves.join(jtd.iloc[:, 0], how="right") - jtd.columns = ["name", "company_id", "5yr_spread", "jtd"] + jtd.columns = [ + "name", + "company_id", + "one_year_spread", + "three_year_spread", + "five_year_spread", + "jtd", + ] return jtd.groupby(["company_id", "name"], as_index=False).sum() |
