diff options
Diffstat (limited to 'python/reto.py')
| -rw-r--r-- | python/reto.py | 17 |
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) |
