diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/index.py | 43 | ||||
| -rw-r--r-- | python/analytics/option.py | 9 |
2 files changed, 26 insertions, 26 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 diff --git a/python/analytics/option.py b/python/analytics/option.py index af2e8e2d..ff22f018 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -110,7 +110,7 @@ class BlackSwaption(ForwardIndex): redcode=rec.security_id, maturity=rec.maturity, value_date=rec.trade_date, - freeze_version=False, + freeze_version=True, ) index.ref = rec.index_ref instance = cls( @@ -123,11 +123,10 @@ class BlackSwaption(ForwardIndex): instance.notional = rec.notional instance.price = rec.price instance._original_pv = instance.pv - if trade_id == 128: - instance._orig_params = (rec.strike, 0.99, 0.9075) - else: - instance._orig_params = (rec.strike, index.factor, index.cumloss) + instance._orig_params = (rec.strike, index.factor, index.cumloss) instance._trade_id = trade_id + index._floating_version = True + index._update_factors() return instance def mark(self, source_list=[], surface_id=None, **kwargs): |
