aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/reto.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/python/reto.py b/python/reto.py
index 6d9f163c..6fca0c50 100644
--- a/python/reto.py
+++ b/python/reto.py
@@ -2,6 +2,7 @@ import datetime
import pandas as pd
import numpy as np
import argparse
+from copy import deepcopy
from risk.portfolio import build_portfolio, generate_vol_surface
@@ -26,7 +27,7 @@ def parse_args():
return parser.parse_args()
-def gen_spreads(shock_date, fund):
+def gen_shocks(portf, shock_date, fund):
Trade.init_ontr(shock_date)
ana._local = False
spread_shock = np.array([-25.0, 1.0, +25.0, 100.0, 200.0, 500, 1000])
@@ -40,7 +41,6 @@ def gen_spreads(shock_date, fund):
(626 / Trade._ontr["HY"].spread - 1),
],
)
- portf, _ = build_portfolio(shock_date, shock_date, fund)
vol_surface = generate_vol_surface(portf, try_days_back=10, source="BAML")
portf.reset_pv()
scens = run_portfolio_scenarios(
@@ -106,7 +106,7 @@ def gen_spreads(shock_date, fund):
return results
-def process_shocks_dataframe(raw_df):
+def process_shocks_df(raw_df):
"""Clean and transform the input dataframe to insert into database."""
transformed_df = raw_df.reset_index()
transformed_df = transformed_df.rename(columns={"level_0": "unit"})
@@ -123,8 +123,7 @@ def process_shocks_dataframe(raw_df):
return transformed_df
-def save_shocks(date, fund):
- results = gen_spreads(args.date, fund)
+def save_shocks(date, fund, df):
with conn.cursor() as c:
c.execute(
"DELETE FROM shocks WHERE fund=%s AND date=%s",
@@ -134,7 +133,6 @@ def save_shocks(date, fund):
),
)
conn.commit()
- df = process_shocks_dataframe(results)
df["fund"] = fund
df.to_sql("shocks", dawn_engine, if_exists="append", index=False)
@@ -143,4 +141,9 @@ if __name__ == "__main__":
args = parse_args()
conn = dbconn("dawndb")
for fund in ("SERCGMAST", "BOWDST", "ISOSEL", "BRINKER"):
- save_shocks(args.date, fund)
+ portf, _ = build_portfolio(args.date, args.date, fund)
+
+ # Shocks process
+ shocks = gen_shocks(portf, args.date, fund)
+ df = process_shocks_df(shocks)
+ save_shocks(args.date, fund, df)