Bug in bt.analyzers.Transactions next method
In the line:
self.rets[self.data0.datetime.datetime()] = entries
datetime is accessed through self.data0.datetime. It is causing problems when you develop strategies with many datas from which some start earlier than others and you start trading from the moment when first data becomes available.
I think that easiest solution is to just change the line to:
self.rets[self.strategy.datetime.datetime()] = entries
That analyzer was developed ad-hoc for a specific purpose a long time ago and then added (or dumped) to the sources. Back then the synchronization relied on different methods, but as you point out using the main clock in the strategy would be the most appropriate path.