I recently had issues in Live trading a project, that worked perfectly in backtesting. 

Lets assume you schedule trading 5 minutes after market opening on 1-minute resolution. In theory it could be the case that within 5 minutes, no bar arrives or that bar 1,2,3,4 has data but bar 5 has not.

In addition I learned from the QC support that in high volatility phase, time slices might arrive milliseconds later, so the scheduler does not catch it.

While in backtest, it always works, in LiveMode orders were skipped. 

The support send me a fix which i am sharing here:

def Initialize(self):
	self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 5),self.trade)
	self.weight_by_sec = {"SPY":0.5,"TLT":0.5}

#----------works in backtest, does not work in LiveMode---------
def trade(self):
	for sec, weight in self.weight_by_sec.items():
		# Check that we have data in the algorithm to process a trade
		if not self.CurrentSlice.ContainsKey(sec) or self.CurrentSlice[sec] is None:
			self.Error(f"[trade],{sec},missing_data")
			continue
		qty=self.CalculateOrderQuantity(sec,weight)
		entry_order = self.MarketOrder(sec, qty, tag=str(sec),asynchronous=False)

#----------works in backtest and LiveMode---------
def trade(self):
	weight_by_sec = {"SPY":0.5,"TLT":0.5}
	for sec, weight in self.weight_by_sec.items():
		# Check that we have data in the algorithm to process a trade
		bar = self.Securities[sec].GetLastData()
		if bar.EndTime.date() < self.Time.date():
			self.Error(f"[trade],{sec},data_not_arrived_yet")
			continue
		qty=self.CalculateOrderQuantity(sec,weight)
		entry_order = self.MarketOrder(sec, qty, tag=str(sec),asynchronous=False)

Author