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