aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/portfolio.py14
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')