aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/portfolio.py1
-rw-r--r--python/analytics/scenarios.py14
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: