diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/index.py | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py index 0f53425e..f5f17d57 100644 --- a/python/analytics/index.py +++ b/python/analytics/index.py @@ -83,21 +83,32 @@ class CreditIndex(CreditDefaultSwap): self._floating_version = True if all([redcode, maturity]): r = serenitas_engine.execute( - "SELECT index, series, tenor, coupon, issue_date, factor, version, cumloss " + "SELECT index, series, tenor, coupon, issue_date, indexfactor, " + "version, cumulativeloss " "FROM index_desc " "WHERE redindexcode=%s AND maturity=%s", (redcode, maturity), ) - index_type, series, tenor, coupon, issue_date, factor, version, cumloss = next(r) + ( + index_type, + series, + tenor, + coupon, + issue_date, + self._factor, + self._version, + self._cumloss, + ) = next(r) self._floating_version = False elif all([index_type, series, tenor]): + index_type = index_type.upper() sql_str = ( "SELECT indexfactor, lastdate, maturity, coupon, " "issue_date, version, cumulativeloss " "FROM index_desc WHERE index=%s AND series=%s AND tenor=%s " "ORDER BY lastdate ASC" ) - params = (index_type.upper(), series, tenor) + params = (index_type, series, tenor) try: df = pd.read_sql_query( sql_str, @@ -129,17 +140,18 @@ class CreditIndex(CreditDefaultSwap): self._indic = tuple( (ld, factor / 100, cumloss, version) for ld, factor, cumloss, version in ( - df[ - ["lastdate", "indexfactor", "cumulativeloss", "version"] - ].itertuples(index=False) + df[ + ["lastdate", "indexfactor", "cumulativeloss", "version"] + ].itertuples(index=False) ) ) + else: + self._indic = None self.index_type = index_type self.series = series self.tenor = tenor - tenor = tenor.upper() - if tenor.endswith("R"): + if tenor.upper().endswith("R"): tenor = tenor[:-1] if index_type in ("IG", "HY"): self.name = "CDX {} CDSI S{} {}".format(index_type, series, tenor) @@ -154,12 +166,11 @@ class CreditIndex(CreditDefaultSwap): self.currency = "EUR" self.value_date = value_date - @classmethod def from_tradeid(cls, trade_id): r = dawn_engine.execute( """ - SELECT trade_date, notional, security_desc, + SELECT trade_date, notional, security_id, security_desc, protection, upfront, maturity FROM cds WHERE id=%s""", @@ -168,7 +179,12 @@ class CreditIndex(CreditDefaultSwap): rec = r.fetchone() if rec is None: raise ValueError(f"No index trade for id: {trade_id}") - instance = cls(redcode=rec.redcode, maturity=rec.maturity, value_date=rec.trade_date, notional=rec.notional) + instance = cls( + redcode=rec.security_id, + maturity=rec.maturity, + value_date=rec.trade_date, + notional=rec.notional, + ) instance.name = rec.security_desc instance.direction = rec.protection @@ -217,7 +233,13 @@ class CreditIndex(CreditDefaultSwap): "SELECT * FROM index_quotes " "WHERE " "index=%s AND series=%s AND tenor=%s AND date=%s AND version=%s", - (self.index_type, self.series, self.tenor, self.value_date, self.version), + ( + self.index_type, + self.series, + self.tenor, + self.value_date, + self.version, + ), ) rec = run.fetchone() self.spread = rec.closespread |
