diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/portfolio.py | 2 | ||||
| -rw-r--r-- | python/analytics/tranche_basket.py | 16 |
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): |
