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