diff options
Diffstat (limited to 'python/analytics/portfolio.py')
| -rw-r--r-- | python/analytics/portfolio.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py index 62861922..d37c0e11 100644 --- a/python/analytics/portfolio.py +++ b/python/analytics/portfolio.py @@ -2,6 +2,7 @@ from __future__ import annotations from .index import CreditIndex from .option import BlackSwaption from .tranche_basket import DualCorrTranche +from functools import reduce import pandas as pd import numpy as np @@ -136,12 +137,24 @@ class Portfolio: @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) + return sum(t.jump_to_default for t in self.trades if isinstance(t, CreditIndex)) + + def jtd_single_names(self): + jtd = reduce( + lambda x, y: x.add(y, fill_value=0.0), + ( + t.jtd_single_names() + for t in self.trades + if isinstance(t, (DualCorrTranche, CreditIndex)) + ), + ) + return ( + jtd.unstack() + .sort_index(1, ascending=False) + .fillna(0.0) + .cumsum(axis=1) + .sort_index(1) + ) @value_date.setter def value_date(self, d): |
