diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/basket_index.py | 12 |
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) |
