aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/analytics/basket_index.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py
index 92962004..715a7122 100644
--- a/python/analytics/basket_index.py
+++ b/python/analytics/basket_index.py
@@ -106,7 +106,7 @@ class BasketIndex(CreditIndex):
self.value_date = d + 3 * BDay()
CreditIndex.trade_date.__set__(self, d)
- def pv(self, epsilon=0., maturity=None, coupon=None):
+ def pv(self, maturity=None, epsilon=0., coupon=None):
if maturity is None:
r = []
for m in self.maturities:
@@ -117,6 +117,11 @@ class BasketIndex(CreditIndex):
epsilon))
return pd.Series(r, index=self.index_desc.tenor, name='pv')
else:
+ if coupon is None:
+ try:
+ coupon = self.index_desc.coupon[maturity]
+ except KeyError:
+ raise ValueError("Non standard maturity: coupon must be provided")
return super().pv(self.step_in_date, self.value_date, maturity,
self.yc, self.recovery, coupon,
epsilon)
@@ -163,7 +168,10 @@ class BasketIndex(CreditIndex):
return pd.Series(r, index=self.index_desc.tenor, name='theta')
else:
if coupon is None:
- raise ValueError("coupon needs to be defined")
+ try:
+ coupon = self.index_desc.coupon[maturity]
+ except KeyError:
+ raise ValueError("Non standard maturity: coupon must be provided")
return super().theta(self.step_in_date, self.value_date, maturity,
self.yc, self.recovery, coupon,
np.nan)