diff options
Diffstat (limited to 'python/analytics/basket_index.py')
| -rw-r--r-- | python/analytics/basket_index.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py index 6517b632..5fbdd60c 100644 --- a/python/analytics/basket_index.py +++ b/python/analytics/basket_index.py @@ -34,6 +34,15 @@ class BasketIndex(CreditIndex): value_date: pd.Timestamp tweaks: List[float] + __cache = {} + + def __new__(cls, index_type, series, tenors, *, value_date): + k = (index_type, series, tuple(tenors)) + if k in cls.__cache: + return cls.__cache[k] + else: + return super().__new__(cls) + def __init__( self, index_type: str, @@ -42,6 +51,8 @@ class BasketIndex(CreditIndex): *, value_date: pd.Timestamp = pd.Timestamp.today().normalize() - BDay(), ): + k = (index_type, series, tuple(tenors)) + self.__cache[k] = self self.index_type = index_type self.series = series if index_type in ("HY", "HY.BB"): @@ -160,6 +171,8 @@ class BasketIndex(CreditIndex): @value_date.setter def value_date(self, d: pd.Timestamp): + if d == self.value_date: + return conn = serenitas_pool.getconn() self.curves = get_singlenames_curves_prebuilt( conn, self.index_type, self.series, d |
