diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/scenarios.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py index 2169df46..334a27a1 100644 --- a/python/analytics/scenarios.py +++ b/python/analytics/scenarios.py @@ -36,7 +36,7 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, for vs in vol_shock: swaption.sigma = curr_vol * (1 + vs) r.append([date, s, vs] + [getattr(swaption, p) for p in params]) - df = pd.DataFrame.from_records(r, columns=['date', 'spread_shock', 'vol_shock'] + params) + df = pd.DataFrame.from_records(r, columns=['date', 'spread', 'vol_shock'] + params) return df.set_index('date') @@ -50,7 +50,7 @@ def run_index_scenarios(index, date_range, spread_shock, params=['pnl']): for s in spreads: index.spread = s r.append([date, s] + [getattr(index, p) for p in params]) - df = pd.DataFrame.from_records(r, columns=['date', 'spread_shock'] + params) + df = pd.DataFrame.from_records(r, columns=['date', 'spread'] + params) return df.set_index('date') def _aux(portf, curr_vols, params, vs): @@ -79,19 +79,19 @@ def run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, if nproc > 0 run with nproc processes. """ portf = deepcopy(portf) - spreads = portf.index.spread * (1 + spread_shock) + spreads = np.hstack([index.spread * (1 + spread_shock) for index in portf.indices]) r = [] with MaybePool(nproc) as pool: pmap = pool.map if pool else map for date in date_range: - portf.index.trade_date = date.date() + portf.trade_date = date.date() t = [swaption.T for swaption in portf.swaptions] for s in spreads: - portf.index.ref = s + portf.ref = s mon = [swaption.moneyness for swaption in portf.swaptions] curr_vols = np.maximum(vol_surface.ev(t, mon), 0) temp = pmap(partial(_aux, portf, curr_vols, params), vol_shock) r.append([[date, s] + rec for rec in temp]) - df = pd.DataFrame.from_records(chain(*r), columns=['date', 'spread_shock', 'vol_shock'] + params) + df = pd.DataFrame.from_records(chain(*r), columns=['date', 'spread', 'vol_shock'] + params) return df.set_index('date') |
