aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/basket_index.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py
index 4d5ecb40..e4554d6f 100644
--- a/python/analytics/basket_index.py
+++ b/python/analytics/basket_index.py
@@ -4,6 +4,7 @@ from .utils import tenor_t
from dateutil.relativedelta import relativedelta
from functools import partial
from pickle import dumps, loads
+from pandas.util import hash_pandas_object
from pyisda.credit_index import CreditIndex
from typing import List
from yieldcurve import get_curve
@@ -75,13 +76,20 @@ class BasketIndex(CreditIndex):
def __hash__(self):
def aux(v):
if isinstance(v, pd.DataFrame):
- return hash_pandas_object(v)
+ return hash_pandas_object(v).sum()
elif isinstance(v, list):
return hash(tuple(v))
+ elif type(v) is np.ndarray:
+ return hash(v.tobytes())
else:
return hash(v)
- hash(CreditIndex.__hash__(self),
- hash(frozenset([(k, aux(v)) for k, v in dirs(self)])))
+ ignore = set(['_Z', '_w', '_skew'])
+ for k, v in vars(self).items():
+ if k not in ignore:
+ print(k, aux(v))
+ return hash((CreditIndex.__hash__(self),
+ hash(frozenset([(k, aux(v)) for k, v in vars(self).items() \
+ if k not in ignore]))))
def _query_version(self, i):
for lastdate, *data in self._version: