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.py43
1 files changed, 22 insertions, 21 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 681f0fa3..13aa32ea 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -122,15 +122,12 @@ class CreditIndex(CreditDefaultSwap):
issue_date,
)
self._quote_is_price = index_type == "HY"
- if self._floating_version:
- 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
+ r = serenitas_engine.execute(
+ "SELECT lastdate, indexfactor/100, cumulativeloss, version "
+ "FROM index_version WHERE index=%s AND series=%s ORDER BY version",
+ (index_type, series),
+ )
+ self._indic = list(r)
self.index_type = index_type
self.series = series
self.tenor = tenor
@@ -215,9 +212,10 @@ class CreditIndex(CreditDefaultSwap):
self.ref = ref_data[security][field]
else:
run = serenitas_engine.execute(
- "SELECT closeprice FROM index_quotes "
+ "SELECT date, closeprice, closespread FROM index_quotes "
"WHERE "
- "index=%s AND series=%s AND tenor=%s AND date=%s AND version=%s",
+ "index=%s AND series=%s AND tenor=%s AND date<=%s AND version=%s "
+ "ORDER BY date DESC LIMIT 3",
(
self.index_type,
self.series,
@@ -235,21 +233,24 @@ class CreditIndex(CreditDefaultSwap):
value_date = property(CreditDefaultSwap.value_date.__get__)
- @value_date.setter
- def value_date(self, d):
- CreditDefaultSwap.value_date.__set__(self, d)
- if self._floating_version:
- for lastdate, factor, cumloss, version in self._indic:
- if lastdate >= self.value_date:
- self._factor = factor
- self._version = version
- self._cumloss = cumloss
- break
+ def _update_factors(self):
+ for lastdate, factor, cumloss, version in self._indic:
+ if lastdate >= self.value_date:
+ self._factor = factor
+ self._version = version
+ self._cumloss = cumloss
+ break
else:
self._factor = 1.0
self._version = 1
self._cumloss = 0.0
+ @value_date.setter
+ def value_date(self, d):
+ CreditDefaultSwap.value_date.__set__(self, d)
+ if self._floating_version:
+ self._update_factors()
+
@property
def factor(self):
return self._factor