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