aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/index.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 396ee3fc..38d76eda 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -38,7 +38,8 @@ def g(index, spread, exercise_date, pv=None):
class CreditIndex(CreditDefaultSwap):
- __slots__ = ('_indic', '_version', 'index_type', 'series', 'tenor', '_quote_is_price')
+ __slots__ = ('_indic', '_version', '_cumloss', 'index_type',
+ 'series', 'tenor', '_quote_is_price')
def __init__(self, index_type=None, series=None, tenor=None,
value_date=datetime.date.today(), notional=10_000_000,
@@ -52,7 +53,7 @@ class CreditIndex(CreditDefaultSwap):
if all([index_type, series, tenor]):
sql_str = "SELECT indexfactor, lastdate, maturity, coupon, " \
- "issue_date, version " \
+ "issue_date, version, cumulativeloss " \
"FROM index_desc WHERE index=%s AND series=%s AND tenor = %s " \
"ORDER BY lastdate ASC"
params = (index_type.upper(), series, tenor)
@@ -78,8 +79,10 @@ class CreditIndex(CreditDefaultSwap):
super().__init__(value_date, maturity, recovery, coupon, notional,
df.issue_date[0])
self._quote_is_price = index_type == "HY"
- self._indic = tuple((ld.date(), factor / 100, version) for ld, factor, version in \
- df[['lastdate', 'indexfactor', 'version']].itertuples(index=False))
+ self._indic = tuple((ld.date(), factor / 100, cumloss, version) \
+ for ld, factor, cumloss, version in \
+ (df[['lastdate', 'indexfactor', 'cumulativeloss', 'version']].
+ itertuples(index=False)))
self.index_type = index_type
self.series = series
self.tenor = tenor
@@ -155,10 +158,11 @@ class CreditIndex(CreditDefaultSwap):
@value_date.setter
def value_date(self, d):
CreditDefaultSwap.value_date.__set__(self, d)
- for lastdate, factor, version in self._indic:
+ 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.
@@ -172,6 +176,10 @@ class CreditIndex(CreditDefaultSwap):
def version(self):
return self._version
+ @property
+ def cumloss(self):
+ return self._cumloss
+
class ForwardIndex():
__slots__ = ('index', 'forward_date', 'exercise_date_settle', 'df',
'_forward_annuity', '_forward_pv', '_forward_spread',