Suppose we have an algorithm architecture like:
class MyAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetUniverseSelection(**kwargs)
self.SetAlpha(MyAlphaModel()):
def OnData(self, data):
class MyAlphaModel(AlphaModel):
def __init__(self):
pass
def OnSecuritiesChanged(self, algorithm, changes):
pass
def Update(self, algorithm, data):
insights = []
return insights
The objective is to take the dataframe of security close prices, apply some function MyFunc() to it, and emit a single scalar value for each security as an Insight object.
def MyFunc(self, data):
for security in self.Securities:
# do something
return # some scalar value for each security
- Should MyFunc() be called inside MyAlphaModel.Update or OnData?
- Is self.Securities automatically populated with security objects from the set Universe, or should an empty list be instantiated and securities appended in MyAlphaModel.OnSecuritiesChanged()?
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!