Hi, I couldn't find a lot of useful documentation for writing up option tradings. I need some serious help. For example, in theBasicTemplateOptionsAlgorithm.py: 

1. what data type 'option' is in option = self.AddOption("GOOG"). It seems like a list but when I tried to find it in the API tab, it says AddOption returns QuantConnect.Securities.Option.Option, which has property 'Strike'. This doesn't look like a list. How can a list of options only have one strike attribute?

2. variable 'option' was not used when the code was trying to retrieve option quotes. Instead, it uses slice.OptionChain. Then I couldn't find how does the OptionChain structure look like. How is the filtered option in the initializing phase impacting the chain? I don't know.

3. I found self.Sell(OptionStrategies.Straddle(self.option_symbol, atmStraddle.Strike, atmStraddle.Expiry), 2) in another example but I couldn't find a list of available strategies under OptionStrategies in the API tab. I tried to guess, it tells me that OptionStrategies doesn't have IronCondor.

4. How can I exam a variable? like what value or structure it is? I tried to log and print with no luck. I need this if the type is not fully documented. 

5. How is OnData is called? Is it a loop called every minute when reads in a minute bar? If I have some calculation in OnData, will it update the self.attributes I put under BasicTemplateOptionsAlgorithm class?

6. How can I filter option based on delta? How can I get IV30 for a symbol at each minute other than writing my own calculation functions?

7. If I want to do some machine learning, how to properly train a model? It seems that I can only write it in the main.py and train it on the fly? How can I preserve the model and use it later in live trading and keep optimizing it?

8. I think I can get started faster if I can just get access to the option data and write my own functions from scratch, is this an option here? Is downloading data an option?