diff options
Diffstat (limited to 'python/analytics/index.py')
| -rw-r--r-- | python/analytics/index.py | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py index 908763ed..681f0fa3 100644 --- a/python/analytics/index.py +++ b/python/analytics/index.py @@ -80,11 +80,12 @@ class CreditIndex(CreditDefaultSwap): notional=10_000_000, redcode=None, maturity=None, + freeze_version=False, ): - self._floating_version = True + self._floating_version = not freeze_version if all([redcode, maturity]): r = serenitas_engine.execute( - "SELECT index, series, tenor, coupon, issue_date, indexfactor, " + "SELECT index, series, tenor, coupon, issue_date, indexfactor/100, " "version, cumulativeloss " "FROM index_desc " "WHERE redindexcode=%s AND maturity=%s", @@ -100,31 +101,14 @@ class CreditIndex(CreditDefaultSwap): self._version, self._cumloss, ) = next(r) - self._floating_version = False - self._factor /= 100 elif all([index_type, series, tenor]): index_type = index_type.upper() sql_str = ( - "SELECT indexfactor, lastdate, maturity, coupon, " - "issue_date, version, cumulativeloss " + "SELECT maturity, coupon, issue_date " "FROM index_desc WHERE index=%s AND series=%s AND tenor=%s " - "ORDER BY lastdate ASC" ) - params = (index_type, series, tenor) - try: - df = pd.read_sql_query( - sql_str, - serenitas_engine, - parse_dates=["lastdate", "issue_date"], - params=params, - ) - maturity = df.maturity[0] - coupon = df.coupon[0] - issue_date = df.issue_date[0] - df.loc[df.lastdate.isnull(), "lastdate"] = maturity - except DataError as e: - print(e) - return None + r = serenitas_engine.execute(sql_str, (index_type, series, tenor)) + maturity, coupon, issue_date = next(r) else: raise ValueError("Not enough information to load the index.") @@ -139,14 +123,12 @@ class CreditIndex(CreditDefaultSwap): ) self._quote_is_price = index_type == "HY" if self._floating_version: - self._indic = tuple( - (ld, factor / 100, cumloss, version) - for ld, factor, cumloss, version in ( - df[ - ["lastdate", "indexfactor", "cumulativeloss", "version"] - ].itertuples(index=False) - ) + r = serenitas_engine.execute( + "SELECT lastdate, indexfactor/100, cumulativeloss, version " + "FROM index_version WHERE index=%s AND series=%s", + (index_type, series), ) + self._indic = list(r) else: self._indic = None self.index_type = index_type |
