diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/portfolio.py | 1 | ||||
| -rw-r--r-- | python/analytics/scenarios.py | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py index a5cd74b5..b724b8da 100644 --- a/python/analytics/portfolio.py +++ b/python/analytics/portfolio.py @@ -21,7 +21,6 @@ class Portfolio: @trade_date.setter def trade_date(self, d): - print("pomme") self.index.trade_date = d @property diff --git a/python/analytics/scenarios.py b/python/analytics/scenarios.py index 17a143f2..1a99562d 100644 --- a/python/analytics/scenarios.py +++ b/python/analytics/scenarios.py @@ -2,6 +2,7 @@ from analytics import ATMstrike from joblib import delayed, Parallel import pandas as pd from copy import deepcopy +import numpy as np def run_swaption_scenarios(swaption, date_range, spread_shock, vol_shock, vol_surface, params=["pv"]): @@ -47,8 +48,8 @@ def run_index_scenarios(index, date_range, spread_shock): return df.set_index('date') def run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, - vol_surface, params=["pv"]): - """computes the pv of a portfolio for a range of scenarios + vol_surface, params=["pnl"]): + """computes the pnl of a portfolio for a range of scenarios Parameters ---------- @@ -56,17 +57,18 @@ def run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, date_range : `pandas.Datetime.Index` spread_shock : `np.array` vol_shock : `np.array` - vol_surface + vol_surface : VolSurface params : list of strings list of attributes to call on the Portfolio object. """ portf = deepcopy(portf) spreads = portf.index.spread * (1 + spread_shock) - + r = [] for date in date_range: portf.index.trade_date = date.date() - curr_vols = [max(0., vol_surface(swaption.T, swaption.moneyness)) \ - for swaption in portf.swaptions] + t = [swaption.T for swaption in portf.swaptions] + mon = [swaption.moneyness for swaption in portf.swaptions] + curr_vols = np.maximum(vol_surface.ev(t, mon), 0) for s in spreads: portf.index.ref = s for vs in vol_shock: |
