diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/index.py | 13 | ||||
| -rw-r--r-- | python/analytics/option.py | 10 |
2 files changed, 21 insertions, 2 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py index 8d157897..44c0102f 100644 --- a/python/analytics/index.py +++ b/python/analytics/index.py @@ -293,6 +293,10 @@ class Index(object): if self._spread is not None: self._update() + def set_original_pv(self): + self._original_clean_pv = self._clean_pv + self._original_trade_date = self._trade_date + @property def pnl(self): if self._original_clean_pv is None: @@ -353,11 +357,16 @@ class Index(object): @classmethod def from_tradeid(cls, trade_id): engine = dbengine('dawndb') - r = engine.execute("SELECT * from cds WHERE id=%s", (trade_id,)) + r = engine.execute(""" + SELECT * FROM cds + LEFT JOIN index_desc + ON security_id = redindexcode AND cds.maturity = index_desc.maturity + WHERE id=%s""", (trade_id,)) rec = r.fetchone() recovery = 0.4 if "IG" in rec.security_desc else 0.3 instance = cls(rec.trade_date, rec.maturity, recovery, rec.fixed_rate * 100, - rec.notional, recovery==0.3) + rec.notional, recovery==0.3, rec.issue_date) + instance.name = rec.security_desc instance.currency = rec.currency instance.direction = rec.protection diff --git a/python/analytics/option.py b/python/analytics/option.py index 5378b0ce..ef2c43bb 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -208,6 +208,16 @@ class BlackSwaption(ForwardIndex): b *= eta self.sigma = brentq(handle, a, b) + def set_original_pv(self): + self._original_pv = self.pv + + @property + def pnl(self): + if self._original_pv is None: + raise ValueError("original pv not set") + else: + return self.pv - self._original_pv + @property def delta(self): old_index_pv = self.index.pv |
