aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/portfolio.py2
-rw-r--r--python/analytics/tranche_basket.py16
2 files changed, 12 insertions, 6 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py
index eb932034..b13d8dda 100644
--- a/python/analytics/portfolio.py
+++ b/python/analytics/portfolio.py
@@ -50,7 +50,7 @@ class Portfolio:
if len(value_dates) >= 1:
warn(f"not all instruments have the same trade date, picking {self._value_date}")
- def add_trades(self, trades, trade_ids):
+ def add_trade(self, trades, trade_ids):
self.trades.append(trades)
self.trade_ids.append(trade_ids)
self.indices = [t for t in self.trades if isinstance(t, CreditIndex)]
diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py
index f09cfedb..191ebf55 100644
--- a/python/analytics/tranche_basket.py
+++ b/python/analytics/tranche_basket.py
@@ -5,7 +5,7 @@ from .tranche_functions import (
from .index_data import get_tranche_quotes
from .utils import memoize, build_table
from collections import namedtuple
-from db import dbconn
+from db import dbconn, dbengine
from copy import deepcopy
from lru import LRU
from pyisda.date import cds_accrued
@@ -177,7 +177,7 @@ class DualCorrTranche():
# TODO: handle factor change
days_accrued = (self.value_date - self._trade_date).days / 360
return self.notional * self._direction * -(self.pv - self._original_pv +
- self.tranche_running * days_accrued)
+ self.tranche_running/10000 * days_accrued)
def __repr__(self):
s = ["{}{} {} Tranche".format(self.index_type, self.series, self.tenor),
@@ -213,9 +213,15 @@ class DualCorrTranche():
names=['spread_shock', 'corr_shock']))
def mark(self, **args):
- #mark BasketIndex
- #mark correlation
- pass
+ corr = pd.read_sql_query("select a.attach, a.detach, corr_at_detach from "
+ "get_tranche_quotes(%s, %s, %s, %s) a LEFT JOIN "
+ "risk_numbers_new b on a.id = b.tranche_id",
+ dbengine('serenitasdb'),
+ params=(self.index_type, self.series,
+ self.tenor, self.value_date))
+ if self.attach > 0:
+ self.rho[0] = corr[corr['detach'] == self.attach]['corr_at_detach']
+ self.rho[1] = corr[corr['detach'] == self.detach]['corr_at_detach']
class TrancheBasket(BasketIndex):