diff options
Diffstat (limited to 'python/analytics/scenarios.py')
| -rw-r--r-- | python/analytics/scenarios.py | 19 |
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) |
