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