diff options
| -rw-r--r-- | python/analytics/scenarios.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py index b663c5bc..ea84f2bf 100644 --- a/python/analytics/scenarios.py +++ b/python/analytics/scenarios.py @@ -25,12 +25,13 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_su swaption.index.ref = spread swaption._update() atm_strike = ATMstrike(swaption.index, swaption.exercise_date) - moneyness = (swaption.index.spread / atm_strike) - curr_vol = float(vol_surface.ev(T, moneyness)) - for vs in vol_shock: - vol = curr_vol * (1 + vs) + moneyness = (swaption.strike / atm_strike) + curr_vol = float(vol_surface(T, moneyness)) + def aux(swaption, vol, params, prepend): swaption.sigma = vol - r.append([date, ss, vs] + [getattr(swaption, p) for p in params]) + return prepend + [getattr(swaption, p) for p in params] + r.append(Parallel(-1)( + delayed(aux(swaption, curr_vol * (1 + vs), params, prepend)) for vs in vol_shock) swaption.index.spread = spread_start df = pd.DataFrame.from_records(r, columns=['date', 'spread_shock', 'vol_shock'] + params) |
