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.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py
index 1ce940bb..5b57b207 100644
--- a/python/analytics/basket_index.py
+++ b/python/analytics/basket_index.py
@@ -66,6 +66,8 @@ class BasketIndex(CreditIndex):
self.cash_settle_date = value_date + 3 * BDay()
self.tweaks = []
self.start_date = previous_twentieth(value_date)
+ self._ignore_hash = set(['_Z', '_w', '_skew', 'tenors',
+ 'index_desc', 'tweaks', '_ignore_hash'])
super().__init__(self.issue_date, maturities, curves, value_date=value_date)
def __reduce__(self):
@@ -81,9 +83,8 @@ class BasketIndex(CreditIndex):
return hash(v.tobytes())
else:
return hash(v)
- ignore = set(['_Z', '_w', '_skew', 'tenors', 'index_desc'])
return hash((CreditIndex.__hash__(self),) + tuple(aux(v) for k, v in vars(self).items()
- if k not in ignore))
+ if k not in self._ignore_hash))
def _query_version(self, i):
for lastdate, *data in self._version:
@@ -208,6 +209,8 @@ class BasketIndex(CreditIndex):
continue
else:
index_quote = quotes[m]
+ if abs(self.pv(m) - index_quote) < 1e-12: # early exit
+ self.tweaks.append(0.)
lo, hi = -0.3, 0.3
hi_tilde = exp(hi) - 1
while hi_tilde < 5: