I'm making a simple test strategy:
class LiquidUniverseSelection(QCAlgorithm):
filteredByPrice = None
def Initialize(self):
self.SetStartDate(2019, 1, 11)
self.SetEndDate(2019, 7, 1)
self.SetCash(100000)
self.UniverseSettings.Resolution = Resolution.Daily
self.AddUniverse(self.coarse_select)
def coarse_select(self, coarse):
fundamental_filter = [x for x in coarse if x.HasFundamentalData]
volume_filter = [x for x in fundamental_filter if x.DollarVolume > 10000000]
price_filter = [x for x in volume_filter if (50 > x.Price > 5)]
return self.active
def OnData(self, data):
num_securities = len(self.ActiveSecurities.Keys)
targets = [PortfolioTarget(x, 1/num_securities) for x in self.ActiveSecurities.Keys]
self.SetHoldings(targets)
This returns this stacktrace:
System.Exception: TypeError : object of type '0, Culture=neutral, PublicKeyToken=null]]' has no len()
at OnData in main.py:line 67 :: num_securities = len(self.ActiveSecurities.Keys)
---> Python.Runtime.PythonException: TypeError : object of type '0, Culture=neutral, PublicKeyToken=null]]' has no len()
at Python.Runtime.PyObject.Invoke (Python.Runtime.PyTuple args, Python.Runtime.PyDict kw) [0x00033] in :0
at Python.Runtime.PyObject.TryInvoke (System.Dynamic.InvokeBinder binder, System.Object[] args, System.Object& result) [0x0001d] in :0
at (wrapper dynamic-method) System.Object.CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,object,QuantConnect.Data.Slice)
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1] (System.Runtime.CompilerServices.CallSite site, T0 arg0, T1 arg1) [0x00105] in <92922d9bda2f4e1cba9242d052be6d43>:0
at QuantConnect.AlgorithmFactory.Python.Wrappers.AlgorithmPythonWrapper.OnData (QuantConnect.Data.Slice slice) [0x0011f] in <6595d12b90e34d0e8d92c91974132544>:0
at QuantConnect.Lean.Engine.AlgorithmManager.Run (QuantConnect.Packets.AlgorithmNodePacket job, QuantConnect.Interfaces.IAlgorithm algorithm, QuantConnect.Lean.Engine.DataFeeds.ISynchronizer synchronizer, QuantConnect.Lean.Engine.TransactionHandlers.ITransactionHandler transactions, QuantConnect.Lean.Engine.Results.IResultHandler results, QuantConnect.Lean.Engine.RealTime.IRealTimeHandler realtime, QuantConnect.Lean.Engine.Server.ILeanManager leanManager, QuantConnect.Lean.Engine.Alpha.IAlphaHandler alphas, System.Threading.CancellationToken token) [0x01140] in Lean.Engine.Alpha.IAlphaHandler alphas, System.Threading.CancellationToken token) [0x01140] in <5153497fd8c94879ae659069852668fc>:0
--- End of inner exception stack trace ---
If I replace 'ActiveSecurities' with 'Securities' it works fine.