diff options
| -rw-r--r-- | python/analytics/basket_index.py | 14 | ||||
| m--------- | python/pyisda | 0 |
2 files changed, 14 insertions, 0 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py index bb7ca371..5ad27574 100644 --- a/python/analytics/basket_index.py +++ b/python/analytics/basket_index.py @@ -182,6 +182,20 @@ class BasketIndex(CreditIndex): def spreads(self): return super().spreads(self.yc) + def dispersion(self, use_gini: bool = False, use_log: bool = True): + if use_gini: + w = self.weights + spreads = self.spreads().ravel() + if use_log: + spreads = np.log(spreads) + index = np.argsort(spreads) + spreads = spreads[index] + w = w[index] + S = np.cumsum(w * spreads) + return 1 - (np.inner(w[1:], (S[:-1] + S[1:])) + w[0] * S[0]) / S[-1] + else: + return super().dispersion(self.yc, use_log=use_log) + def pv(self, maturity=None, epsilon=0.0, coupon=None): if maturity is None: r = [] diff --git a/python/pyisda b/python/pyisda -Subproject 0e7cb3ec59de876bd32dcb86606351b2baa6108 +Subproject e2b581e2ecae15b145039035a8b318f8437a520 |
