Overall Statistics |
Total Trades 24 Average Win 0% Average Loss 0% Compounding Annual Return 0.020% Drawdown 0.000% Expectancy 0 Net Profit 0.012% Sharpe Ratio 1.098 Probabilistic Sharpe Ratio 53.218% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0 Beta 0.001 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -2.496 Tracking Error 0.117 Treynor Ratio 0.201 Total Fees $24.00 Estimated Strategy Capacity $320000000000.00 Lowest Capacity Asset GME SC72NCBXXAHX |
class CasualYellowGreenAnguilline(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 12, 15) self.SetCash(10000000) self.dataBySymbol = {} self.AddUniverse(self.MyCoarseFilterFunction) def MyCoarseFilterFunction(self, coarse): sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True) filtered = [ x.Symbol for x in sortedByDollarVolume if x.Price > 10 and x.DollarVolume > 10000000 ] return filtered[:5] def OnData(self, data): for symbol,Data in self.dataBySymbol.items(): if not Data.IsReady:continue if not self.Portfolio[symbol].Invested and symbol in data.Bars and Data.slow.Current.Value<Data.fast.Current.Value: self.MarketOrder(symbol,1) def OnSecuritiesChanged(self,changes): for x in changes.AddedSecurities: if x.Symbol not in self.dataBySymbol: self.dataBySymbol[x.Symbol] = SymbolData(self,x.Symbol) for x in changes.RemovedSecurities: symbol_data = self.dataBySymbol.pop(x.Symbol, None) if symbol_data: symbol_data.dispose() class SymbolData: def __init__(self,algo,symbol): self.algo = algo self.symbol = symbol self.slow = SimpleMovingAverage(100) self.fast = SimpleMovingAverage(20) history = self.algo.History(self.symbol, 200, Resolution.Daily) for bar in history.loc[self.symbol, :].itertuples(): self.slow.Update(bar.Index,bar.close) self.fast.Update(bar.Index,bar.close) self.consolidator = TradeBarConsolidator(1) self.consolidator.DataConsolidated += self.consolidation_handler self.algo.SubscriptionManager.AddConsolidator(symbol, self.consolidator) def consolidation_handler(self, sender, consolidated): self.slow.Update(consolidated.EndTime, consolidated.Close) self.fast.Update(consolidated.EndTime, consolidated.Close) @property def IsReady(self): return self.slow.IsReady def dispose(self): self.algo.SubscriptionManager.RemoveConsolidator(self.symbol, self.consolidator)