Hi All,

Started looking into QuantConnect today and have a couple of basic questions after the first few boot camp tutorials! It's my first post here, so thanks a lot for helping out a complete noob.

I'm looking at the second tutorial:

class BootCampTask(QCAlgorithm):

def Initialize(self):

#1-2. Set Date Range
self.SetStartDate(2013, 10, 7)
self.SetEndDate(2013, 10, 11)
self.AddEquity("SPY", Resolution.Daily)

def OnData(self, data):

I have 3 questions:

  1. I assume the BootCampTask class inherits its methods and attributes from the QCAlgorithm class, i.e. the methods self.SetStartDate, self.SetEndDate, self.AddEquity() and self.SetCash() are nothing more than methods defined in parent class QCAlgorithm and hence accessible with self (although they don't seem to follow standard python naming conventions)?
  2. I then tried looking under the hood to see what these methods actually look like, but couldn't find a python class QCAlgorithm on github containing them. I did find one that's written in C# (here) but unsure if this is the method that's ultimately called and how it would work across languages (assume there must be some kind of "conversion" in between)?
  3. I was also wondering what happens in the back-end when we hit "Submit"? I assume QuantConnect makes an instance of the BootCampTask class and then calls the Initialize() and OnData() methods.. I assume that's why we always have to include those two and give them the same name?
Maybe I shouldn't think about this after the first lessons but I'm just trying to understand what's actually happening rather than treating everything like a black box. Thanks all,Matt