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