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.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py
index 84505101..6ce10899 100644
--- a/python/analytics/scenarios.py
+++ b/python/analytics/scenarios.py
@@ -1,14 +1,15 @@
from analytics import ATMstrike
from joblib import delayed, Parallel
import pandas as pd
+from copy import deepcopy
-def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_surface,
- params=["pv_black"]):
+def run_swaption_scenarios(swaption_copy, date_range, spread_shock, vol_shock, vol_surface,
+ params=["pv"]):
"""computes the pv of a swaption for a range of scenarios
Parameters
----------
- swaption : Swaption
+ swaption_copy : Swaption
date_range : `pandas.Datetime.Index`
spread_shock : `np.array`
vol_shock : `np.array`
@@ -17,7 +18,9 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_su
list attributes to call on the swaption object.
"""
r = []
+ swaption = deepcopy(swaption_copy)
spread_start = swaption.index.spread
+
for date in date_range:
swaption.index.trade_date = date.date()
T = swaption.T
@@ -30,11 +33,13 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_su
curr_vol = float(vol_surface(T, moneyness))
def aux(swaption, vol, params, prepend):
swaption.sigma = vol
+ import pdb; pdb.set_trace()
return prepend + [getattr(swaption, p) for p in params]
- r.append(Parallel(-1)(
- delayed(aux(swaption, curr_vol * (1 + vs), params, [date, spread, vs])) \
- for vs in vol_shock))
- swaption.index.spread = spread_start
+ for vs in vol_shock:
+ r.append(aux(swaption, curr_vol * (1 + vs), params, [date, spread, vs]))
+ #r.append(Parallel(1)(
+ # delayed(aux(swaption, curr_vol * (1 + vs), params, [date, spread, vs])) \
+ # for vs in vol_shock))
df = pd.DataFrame.from_records(r, columns=['date', 'spread_shock',
'vol_shock'] + params)