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