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