diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/risk/tranches.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/python/risk/tranches.py b/python/risk/tranches.py index 01c08951..c5352ba5 100644 --- a/python/risk/tranches.py +++ b/python/risk/tranches.py @@ -1,3 +1,4 @@ +import numpy as np from pyisda.date import cds_accrued from serenitas.analytics.api import Portfolio, DualCorrTranche from serenitas.analytics.dates import prev_business_day @@ -80,8 +81,9 @@ def insert_tranche_pnl_explain(portf, conn): to_insert = [] for trade_id in all_ids: - pnl = 0 - fx_pnl = 0 + pnl = 0.0 + fx_pnl = 0.0 + corr_pnl = 0.0 if trade_id in daily_trades: trade = daily_trades[trade_id] pnl = trade.upfront * get_fx(value_date, trade.currency) @@ -131,6 +133,11 @@ def insert_tranche_pnl_explain(portf, conn): * get_fx(prev_day, trade.currency) ) ) + prev_rho = np.array( + [previous_risk.corr_attach, previous_risk.corr_detach] + ) + rho = trade.rho + corr_pnl = np.nansum((rho - prev_rho) * previous_risk.corr01_vec) else: fx_pnl = 0.0 day_trade = daily_trades[trade_id] @@ -145,12 +152,12 @@ def insert_tranche_pnl_explain(portf, conn): pnl += trade.pv * get_fx(value_date, trade.currency) unexplained = pnl - delta_pnl - fx_pnl to_insert.append( - (value_date, trade_id, pnl, fx_pnl, delta_pnl, unexplained) + (value_date, trade_id, pnl, fx_pnl, delta_pnl, corr_pnl, unexplained) ) c.executemany( - "INSERT INTO tranche_pnl_explain(date, tranche_id, pnl, fx_pnl, delta_pnl, unexplained) " - "VALUES (%s, %s, %s, %s, %s, %s)", + "INSERT INTO tranche_pnl_explain(date, tranche_id, pnl, fx_pnl, delta_pnl, corr_pnl, unexplained) " + "VALUES (%s, %s, %s, %s, %s, %s, %s)", to_insert, ) conn.commit() @@ -168,7 +175,7 @@ def insert_tranche_risk(portf, conn): "gamma", "theta", "theta_amount", - "corr01", + "corr01_vec", "tranche_factor", "upfront", "running", |
