aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/portfolio.py12
-rw-r--r--python/analytics/tranche_basket.py5
2 files changed, 11 insertions, 6 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py
index 095485b0..48c18f22 100644
--- a/python/analytics/portfolio.py
+++ b/python/analytics/portfolio.py
@@ -81,9 +81,6 @@ class Portfolio:
raise ValueError(f"{trade_id} not found")
return trade
- def __bool__(self):
- return self.trades != []
-
@property
def indices(self):
return [t for t in self.trades if isinstance(t, CreditIndex)]
@@ -124,6 +121,15 @@ class Portfolio:
def value_date(self):
return self._value_date
+ @property
+ def jump_to_default(self):
+ r = []
+ for t in self.trades:
+ print(t.index_type, t.series, t.attach, t.detach)
+ r.append(t.jump_to_default())
+ df = pd.concat(r, axis=1)
+ return df.sum(axis=1)
+
@value_date.setter
def value_date(self, d):
for t in self.trades:
diff --git a/python/analytics/tranche_basket.py b/python/analytics/tranche_basket.py
index 26fa19dc..e093ecc3 100644
--- a/python/analytics/tranche_basket.py
+++ b/python/analytics/tranche_basket.py
@@ -703,7 +703,7 @@ class DualCorrTranche:
np.diff(np.clip(self.K, None, L)) / np.diff(self.K_orig) * orig_factor
)
upf += float(loss)
- r.append(upf)
+ r.append(self.notional * weight * (upf - orig_upf) / 100)
tickers.append(curve.ticker)
self._index._factor, self._index._cumloss = orig_factor, orig_cumloss
self.K = adjust_attachments(
@@ -711,8 +711,7 @@ class DualCorrTranche:
)
self._index.curves = curves
self.rho = rho_orig
- r = r - orig_upf
- return pd.Series(r / 100, index=tickers)
+ return pd.Series(r, index=tickers)
@property
def tranche_factor(self):