aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/analytics/tranche_basket.py15
-rw-r--r--python/experiments/test_basket.py6
2 files changed, 15 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']].
diff --git a/python/experiments/test_basket.py b/python/experiments/test_basket.py
new file mode 100644
index 00000000..4ee5c4c8
--- /dev/null
+++ b/python/experiments/test_basket.py
@@ -0,0 +1,6 @@
+from analytics import TrancheBasket
+import pandas as pd
+ig29 = TrancheBasket("IG", 29, "5yr", trade_date=pd.Timestamp("2017-12-15"))
+ig29.tweak()
+ig29.build_skew()
+df = ig29.tranche_deltas()