aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/basket_index.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/basket_index.py')
-rw-r--r--python/analytics/basket_index.py14
1 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 = []