diff options
| -rw-r--r-- | python/analytics/tranche_basket.py | 15 | ||||
| -rw-r--r-- | python/experiments/test_basket.py | 6 |
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() |
