Maybe this will help someone... I had the same issue and solved it by using a percentage of my portfolio class Antoine_sizer(bt.Sizer): params = (('prop', 0.1),) def _getsizing(self, comminfo, cash, data, isbuy): """Returns the proper sizing""" if isbuy: # Buying target = self.broker.getvalue() * self.params.prop # Ideal total value of the position price = data.close[0] size_net = target / price # How many shares are needed to get target size = size_net * 0.99 if size * price > cash: return 0 # Not enough money for this trade else: return size else: # Selling return self.broker.getposition(data).size # Clear the position