aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/tranche_basket.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/tranche_basket.py')
-rw-r--r--python/analytics/tranche_basket.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py
index 83b69508..1dafd834 100644
--- a/python/analytics/tranche_basket.py
+++ b/python/analytics/tranche_basket.py
@@ -10,6 +10,7 @@ from pandas.tseries.offsets import BDay
from scipy.optimize import brentq
from scipy.interpolate import CubicSpline
from scipy.special import logit, expit
+import concurrent.futures
import pandas as pd
import numpy as np
@@ -109,7 +110,7 @@ class TrancheBasket(BasketIndex):
i += 1
dK = np.diff(self.K)
pl = np.diff(pl) / dK
- cl = np.diff(cl) / dK * self.tranche_quotes.running
+ cl = np.diff(cl) / dK * self.tranche_quotes.running.values
if complement:
pl *= -1
cl *= -1
@@ -183,14 +184,16 @@ class TrancheBasket(BasketIndex):
tb = deepcopy(self)
tb.tweak_portfolio(tweak, self.maturity)
index_list.append(tb)
- bp = np.zeros((len(index_list), self.K.size - 1))
- indexbp = np.zeros(len(index_list))
+ bp = np.empty((len(index_list), self.K.size - 1))
+ indexbp = np.empty(len(index_list))
+
for i, index in enumerate(index_list):
indexbp[i] = index.index_pv()[2]
- bp[i] = index.tranche_pvs(complement)[2]
+ bp[i] = index.tranche_pvs()[2]
- deltas = (bp[1] - bp[2]) / (indexbp[1] - indexbp[2]) * self.tranche_factors() / self.factor
- deltasplus = (bp[3] - bp[0]) / (indexbp[3]-indexbp[0]) * self.tranche_factors() / self.factor
+ factor = self.tranche_factors() / self.factor
+ deltas = (bp[1] - bp[2]) / (indexbp[1] - indexbp[2]) * factor
+ deltasplus = (bp[3] - bp[0]) / (indexbp[3] - indexbp[0]) * factor
gammas = (deltasplus - deltas) / (indexbp[1] - indexbp[0]) / 100
return pd.DataFrame({'delta': deltas, 'gamma': gammas},
index=self.tranche_quotes[['attach', 'detach']].