diff options
Diffstat (limited to 'python/analytics/basket_index.py')
| -rw-r--r-- | python/analytics/basket_index.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py index f835cd61..78c353b0 100644 --- a/python/analytics/basket_index.py +++ b/python/analytics/basket_index.py @@ -52,7 +52,8 @@ class BasketIndex(CreditIndex): self._version = tuple(tuple(t) for t in r) self.issue_date = self.index_desc.issue_date[0] self.index_desc = self.index_desc.loc[tenors] - maturities = self.index_desc.maturity.sort_values().dt.to_pydatetime() + self.index_desc = self.index_desc.sort_values('maturity') + maturities = self.index_desc.maturity.dt.to_pydatetime() self.index_desc = self.index_desc.reset_index().set_index('maturity') self.index_desc.tenor = self.index_desc.tenor.astype(tenor_t) curves = get_singlenames_curves(index_type, series, value_date) @@ -168,7 +169,7 @@ class BasketIndex(CreditIndex): if theta_date is provided, computes the theta to that specific date instead of one-year theta""" if hasattr(self, "index_quotes"): - index_quotes = self.index_quotes.loc[self.value_date] + index_quotes = self._get_quotes() else: index_quotes = None if maturity is None: @@ -231,17 +232,15 @@ class MarkitBasketIndex(BasketIndex): super().__init__(index_type, series, tenors, value_date=value_date) self.index_quotes = (get_index_quotes(index_type, series, tenors, years=None, - remove_holidays=False)['closeprice']. - unstack(). - groupby(level='date', as_index=False).nth(0). - reset_index(['index', 'series', 'version'], drop=True)) - self.index_quotes.columns = (self.index_desc.reset_index(). - set_index('tenor'). - loc[self.index_quotes.columns, "maturity"]) - self.index_quotes = 1 - self.index_quotes / 100 + remove_holidays=False)[['close_price', 'id']]. + groupby(level=['date', 'tenor'], as_index=True). + nth(0)) + self.index_quotes.close_price = 1 - self.index_quotes.close_price / 100 def _get_quotes(self): - return self.index_quotes.loc[self.value_date] + quote = self.index_quotes.loc[self.value_date, "close_price"] + return {m: quote[self.index_desc.tenor[m]] + for m in self.maturities} if __name__ == "__main__": |
