diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/option.py | 2 | ||||
| -rw-r--r-- | python/analytics/scenarios.py | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py index 34f1b7a0..a714ae17 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -352,7 +352,7 @@ class BlackSwaption(ForwardIndex): actual_params = [p for p in params if hasattr(self, p)] for ss in spread_shock: self.index.spread = orig_spread * (1 + ss) - curr_vol = vol_surface.ev(self.T, self.moneyness) + curr_vol = vol_surface.ev(self.T, math.log(self.moneyness)) for vs in vol_shock: self.sigma = curr_vol * (1 + vs) r.append([getattr(self, p) for p in actual_params]) diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py index 9996d405..1ebf9371 100644 --- a/python/analytics/scenarios.py +++ b/python/analytics/scenarios.py @@ -1,3 +1,4 @@ +import math import pandas as pd from copy import deepcopy import numpy as np @@ -33,13 +34,11 @@ def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, if vol_time_roll: T = swaption.T for s in spreads: swaption.index.spread = s - curr_vol = max(0, float(vol_surface(T, swaption.moneyness))) - if date.date() > swaption.exercise_date: curr_vol = 0 + curr_vol = float(vol_surface(T, math.log(swaption.moneyness))) for vs in vol_shock: swaption.sigma = curr_vol * (1 + vs) - r.append([date, s, round(vs,2)] + [getattr(swaption, p) for p in params]) + r.append([date, s, round(vs, 2)] + [getattr(swaption, p) for p in params]) df = pd.DataFrame.from_records(r, columns=['date', 'spread', 'vol_shock'] + params) - df.loc[df.date > pd.to_datetime(swaption.exercise_date), 'delta'] = 0 return df.set_index(['date', 'spread', 'vol_shock']) |
