diff options
Diffstat (limited to 'python/analytics/index.py')
| -rw-r--r-- | python/analytics/index.py | 43 |
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 |
