diff options
Diffstat (limited to 'python/analytics/scenarios.py')
| -rw-r--r-- | python/analytics/scenarios.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py index 45db5096..b663c5bc 100644 --- a/python/analytics/scenarios.py +++ b/python/analytics/scenarios.py @@ -1,7 +1,8 @@ from analytics import ATMstrike import pandas as pd -def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_surface): +def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_surface, + params=["pv_black"]): """computes the pv of a swaption for a range of scenarios Parameters @@ -11,6 +12,8 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_su spread_shock : `np.array` vol_shock : `np.array` vol_surface + params : list of strings + list attributes to call on the swaption object. """ r = [] spread_start = swaption.index.spread @@ -27,8 +30,8 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_su for vs in vol_shock: vol = curr_vol * (1 + vs) swaption.sigma = vol - r.append([date, ss, vs, swaption.pv_black]) + r.append([date, ss, vs] + [getattr(swaption, p) for p in params]) swaption.index.spread = spread_start df = pd.DataFrame.from_records(r, columns=['date', 'spread_shock', - 'vol_shock', 'pv']) + 'vol_shock'] + params) return df.set_index('date') |
