I am still learning the QC framework, so will try to explain what I understand about the sequence of function calls (pls correct me).



# Algo framework init creates class for Alpha model and initializes all other methods called within it:

2019-01-01 00:00:00 Launching analysis for 8567ee4b7e4176fdba2b70a63d1819f3 with LEAN Engine v2.4.0.0.7443
2018-11-16 00:00:00 alpha init: initializing securities

# Then, since I had self.SetWarmUp(30)
# it starts warmup for 30 bars (in this case days),
# since in this case my securities are subscribed to daily:
# self.AddEquity("SPY", Resolution.Daily)?
2018-11-16 00:00:00 Algorithm warming up...

# Then OnData is called 30 times to 'warmup indicators'
# also Alpha model 'Update' is also called 30 times
2018-11-16 00:00:00 2018-11-16 00:00:00: algo warming up
2018-11-16 00:00:00 2018-11-16 00:00:00 num items in symbol data: 0
2018-11-17 00:00:00 2018-11-17 00:00:00: algo warming up
2018-11-17 00:00:00 2018-11-17 00:00:00 num items in symbol data: 0
2018-11-20 00:00:00 2018-11-20 00:00:00: algo warming up
2018-11-20 00:00:00 2018-11-20 00:00:00 num items in symbol data: 0

# however Alpha model Update isnt able to warm up, since
# symbolDataBySymbol was not initialized:
num = len(self.symbolDataBySymbol.items())
algorithm.Debug(time + " num items in symbol data: " + str(num))

2019-01-01 00:00:00 Algorithm finished warming up.
# but real warmup hasn't even started :)

2019-01-01 00:00:00 >> OnSecuritiesChanged started
# This really warms up RSI, using the history call
2019-01-01 00:00:00 warming up RSI
2019-01-01 00:00:00 >> OnSecuritiesChanged complete

1. In case we are using the 'algorithm framework' coding framework, does  self.SetWarmUp() help at all? It seems it just calls data loops and does not really warmup anything...

2. in terms for performance how different is warmup vs history calls?

3. Indicators have a IsReady property, how reliable is it, what does is check to insure an indicator is ready? Can I skip warmup, and just rely on this property?