diff options
| -rw-r--r-- | python/analytics/portfolio.py | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py index 00ab09b1..3d89ae11 100644 --- a/python/analytics/portfolio.py +++ b/python/analytics/portfolio.py @@ -1,23 +1,45 @@ +from .index import Index + class Portfolio: def __init__(self, trades): self.trades = trades + self.index = next(t for t in trades if isinstance(t, Index)) + self.swaptions = (t for t in trades if isinstance(t, BlackSwaption)) @property def pnl(self): return sum(t.pnl for t in self.trades) - def make_original(self): + def set_original_pv(self): for t in self.trades: - t.make_original() + t.set_original_pv() + + @property + def trade_date(self): + return self.index.trade_date + + @trade_date.setter + def trade_date(self, d): + print("pomme") + self.index.trade_date = d @property def ref(self): - return self.trades[0].ref + return self.index.ref @ref.setter def ref(self, val): - for t in self.trades: - t.ref = val + self.index.ref = val - def delta(self, val): - sum([getattr(t, 'delta', 1) * t.notional for t in self.trades]) + @property + def delta(self): + """returns the equivalent protection notional""" + return sum([getattr(t, 'delta', -t._direction) * t.notional for t in self.trades]) + + @property + def gamma(self): + return sum([getattr(t, 'gamma', 0) * t.notional for t in self.trades]) + + @property + def dv01(self): + return sum(t.dv01 for t in self.trades) |
