The reason why is because Price is 0 just for the reason you said, SetHoldings was called when the markets were closed, my start date was 1/1/2010. I've attached the code and here is the log and as you can see on the line " ... VCLT Price=0":
2010-01-01 00:00:00 Launching analysis for c187f74155f968f25c5c53522ad946b5 with LEAN Engine v2.2.0.2.744
2010-01-01 00:00:00 Initialize:+
2010-01-01 00:00:00 Initialzie: securitiesParamStrg=
2010-01-01 00:00:00 Initialize: SPY 0.25
2010-01-01 00:00:00 Initialize: VCLT 0.25
2010-01-01 00:00:00 Initialize:-
2010-01-04 10:00:00 OnData-Slice: SPY Price=112.8300
2010-01-04 10:00:00 OnData-Slice: Purchased Stock SPY 0.25% quantity=22
2010-01-04 10:00:00 OnData-Slice: VCLT Price=0
2010-01-04 10:00:00 OnData-Slice: Bad quantity VCLT 0.25% quantity=0
2010-01-04 10:00:00 OnData-Slice: SPY time=01/04/2010 09:00:00 open=112.3700 high=112.9400 low=112.3300 close=112.8300 volume=17467767 Value=112.8300
2010-01-04 11:00:00 OnData-Slice: SPY Price=113.1000
2010-01-04 11:00:00 OnData-Slice: VCLT Price=74.2100
2010-01-04 11:00:00 OnData-Slice: Purchased Stock VCLT 0.25% quantity=33
...
So my question is what's the best way to handle this, using Securities like I'm doing doesn't feel right?