aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/tranche_basket.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py
index 8765b1c0..9ce787f2 100644
--- a/python/analytics/tranche_basket.py
+++ b/python/analytics/tranche_basket.py
@@ -838,7 +838,7 @@ class TrancheBasket(BasketIndex):
if (K == 0.0 and not complement) or (K == 1.0 and complement):
return 0.0, 0.0
elif (K == 1.0 and not complement) or (K == 0.0 and complement):
- return self.index_pv()[:-1]
+ return self.index_pv(zero_recovery=zero_recovery)[:-1]
elif np.isnan(rho):
raise ValueError("rho needs to be a real number between 0. and 1.")
else:
@@ -935,7 +935,7 @@ class TrancheBasket(BasketIndex):
bp = 1 + pl + cl - self._accrued
return self._Legs(cl, pl, bp)
- def index_pv(self, discounted=True, shortened=0):
+ def index_pv(self, discounted=True, shortened=0, zero_recovery=True):
if shortened > 0:
DP = self.default_prob.values[:, -shortened]
df = self.cs.df.values[:-shortened]
@@ -944,7 +944,10 @@ class TrancheBasket(BasketIndex):
DP = self.default_prob.values
df = self.cs.df.values
coupons = self.cs.coupons
- ELvec = self.weights * (1 - self.recovery_rates) @ DP
+ if zero_recovery:
+ ELvec = self.weights @ DP
+ else:
+ ELvec = self.weights * (1 - self.recovery_rates) @ DP
size = 1 - self.weights @ DP
sizeadj = 0.5 * (np.hstack((1.0, size[:-1])) + size)
if not discounted: