I'm confused by the fact that OnData doesn't seem to be receiving the full list of symbols that I wish to evaluate.  I have attached a backtest with a sample app to convey my question & confusion.  It's not a real algorithm.  

I'm loading into a custom universe on a daily basis a random set of 20 (out of 100) symbols.  When OnData is getting called, there are sometimes 0 symbols passed in, or 7, or 18 ... I must be missing something.  I would expect that if I'm loading a universe with 20 symbols that when OnData gets called that it would be able to evaluate trading rules for all 20 of those symbols, not some (seemingly) randon subset.

Surely there is just a misunderstanding on my part somewhere?  In the log snippet below you'll see that each day the universe is loading up 20 symbols, yet in OnData, only 16, 9, and 2 are available.  The full details are in the attached backtest.

Secondly - why on earth does this backtest take nearly 3 minutes?  It's really not doing any processing at all.  And, if I change the number of symbols I'm loading into the universe to be around 100 (which I want to do) I get timeout errors executing the backtest.

Log Snippet:

2016-11-01 00:00:00 Launching analysis for 3694b60833dd6868c9715ce5b1ceec91 with LEAN Engine v2.

2016-11-01 00:00:00 ENFDataManager loaded 50 records.

2016-11-01 08:30:00 Universe selection trigger time: 11/01/2016 08:30:00 - Number of symbols: 20

2016-11-01 09:30:01 OnData: Date: 11/01/2016 00:00:00 - Count: 16

2016-11-02 08:30:00 Universe selection trigger time: 11/02/2016 08:30:00 - Number of symbols: 20

2016-11-02 09:30:01 OnData: Date: 11/02/2016 00:00:00 - Count: 9

2016-11-03 08:30:00 Universe selection trigger time: 11/03/2016 08:30:00 - Number of symbols: 20

2016-11-03 09:30:01 OnData: Date: 11/03/2016 00:00:00 - Count: 2

Any help & explanations greatly appreciated.  Thanks!