aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/index.py46
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