diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/portfolio.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/python/analytics/portfolio.py b/python/analytics/portfolio.py index 22ccaaf7..d8bc675f 100644 --- a/python/analytics/portfolio.py +++ b/python/analytics/portfolio.py @@ -27,8 +27,9 @@ def portf_repr(method): class Portfolio: - def __init__(self, trades): + def __init__(self, trades, trade_ids=None): self.trades = trades + self.trade_ids = trade_ids self.indices = [t for t in trades if isinstance(t, Index)] self.swaptions = [t for t in trades if isinstance(t, BlackSwaption)] value_dates = set(t.value_date for t in self.trades) @@ -39,7 +40,14 @@ class Portfolio: if len(value_dates) >= 1: warn("not all instruments have the same trade date, picking {}". format(self._value_date)) - self._vs = {} + + def __iter__(self): + for t in self.trades: + yield t + + def items(self): + for trade_id, trade in zip(self.trade_ids, self.trades): + yield(trade_id, trade) @property def pnl(self): @@ -153,7 +161,7 @@ class Portfolio: else: raise TypeError rec.append(r) - return pd.DataFrame.from_records(rec, columns=headers) + return pd.DataFrame.from_records(rec, columns=headers, index=self.trade_ids) __repr__ = portf_repr('string') |
