diff --git a/bt/backtest.py b/bt/backtest.py
index <HASH>..<HASH> 100644
--- a/bt/backtest.py
+++ b/bt/backtest.py
@@ -70,14 +70,18 @@ class Backtest(object):
         else:
             # get values for all securities in tree and divide by root values
             # for security weights
-            vals = pd.DataFrame({x.name: x.values for x in
-                                 self.strategy.members if
-                                 isinstance(x, bt.core.SecurityBase)})
+            vals = {}
+            for m in self.strategy.members:
+                if isinstance(m, bt.core.SecurityBase):
+                    if m.name in vals:
+                        vals[m.name] += m.values
+                    else:
+                        vals[m.name] = m.values
+            vals = pd.DataFrame(vals)
+
+            # divide by root strategy values
             vals = vals.div(self.strategy.values, axis=0)
 
-            # combine securities with same ticker
-            vals = vals.groupby(vals.columns, axis=1).sum()
-
             # save for future use
             self._sweights = vals
fixed bug in calc of security weights