diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/tranche_basket.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py index 68a67448..e62130b4 100644 --- a/python/analytics/tranche_basket.py +++ b/python/analytics/tranche_basket.py @@ -132,11 +132,11 @@ class DualCorrTranche(): tranche_pl(L, self.cs, 0., K)) def index_pv(self, epsilon=0., discounted=True): - DP = self._default_prob(epsilon).values + DP = self._default_prob(epsilon) df = self.cs.df.values coupons = self.cs.coupons - ELvec = self.weights * (1 - self.recovery_rates) @ DP - size = 1 - self.weights @ DP + ELvec = self._index.weights * (1 - self._index.recovery_rates) @ DP + size = 1 - self._index.weights @ DP sizeadj = 0.5 * (np.hstack((1., size[:-1])) + size) if not discounted: pl = - ELvec[-1] @@ -144,7 +144,7 @@ class DualCorrTranche(): else: pl = - np.diff(np.hstack((0., ELvec))) @ df cl = coupons @ (sizeadj * df) - bp = 1 + cl * self.coupon(self.maturity) + pl + bp = 1 + cl * self._index.coupon(self.maturity) + pl Pvs = namedtuple('IndexPvs', 'coupon_leg, protection_leg, bond_price') return Pvs(cl, pl, bp) @@ -287,10 +287,10 @@ class DualCorrTranche(): def _greek_calc(self): eps = 1e-4 - indexbp = [self._index.pv(self.maturity)] + indexbp = [self.index_pv().bond_price] bp = [self.pv] for tweak in [eps, -eps, 2*eps]: - indexbp.append(self._index.pv(self.maturity, tweak)) + indexbp.append(self.index_pv(tweak).bond_price) bp.append(self._pv(tweak)) return {'indexbp': indexbp, 'bp': bp} |
