| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0.471 Tracking Error 0.177 Treynor Ratio 0 Total Fees $0.00 |
class FilterByOptions(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 10, 2) # Set Start Date
self.SetEndDate(2020, 11, 2) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
self.UniverseSettings.Resolution = Resolution.Daily
self.AddUniverse(self.CoarseSelection)
self.lastMonth = -1
def CoarseSelection(self, coarse):
if self.lastMonth == self.Time.month:
return Universe.Unchanged
sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=False)
return [x.Symbol for x in sortedByDollarVolume if x.HasFundamentalData and x.Price > 20.0][:2000]
def OnData(self, data):
if self.lastMonth == self.Time.month:
return
self.lastMonth = self.Time.month
filteredByHasOptions = [x.Symbol for x in self.ActiveSecurities.Values if self.HasOptions(data, x.Symbol)]
self.Log("{} of {} securities have options".format(len(filteredByHasOptions), len(list(self.ActiveSecurities.Values))))
self.Log(str([sym.Value for sym in filteredByHasOptions]))
def HasOptions(self, data, symbol):
options = self.OptionChainProvider.GetOptionContractList(symbol, data.Time)
return len(options) > 0