aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/scenarios.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/scenarios.py')
-rw-r--r--python/analytics/scenarios.py9
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')