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 9.002 Tracking Error 0.041 Treynor Ratio 0 Total Fees $0.00 |
class TimeLimitProblem_002(QCAlgorithm): def Initialize(self): self.SetStartDate(2016, 12, 29) # Set Start Date self.SetEndDate(2016, 12, 30) self.SetCash(100000) # Set Strategy Cash # self.AddEquity("SPY", Resolution.Minute) self.__dataDict = {} self.UniverseSettings.Resolution = Resolution.Hour self.AddUniverse(self.CoarseSelect, self.FineSelect) def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' # if not self.Portfolio.Invested: # self.SetHoldings("SPY", 1) def CoarseSelect(self, coarse): self.Debug("CoarseSelect()") symbols = [] hasCoarse = [c for c in coarse if c.HasFundamentalData] top50ByDVol = sorted(hasCoarse, key=lambda x: x.DollarVolume, reverse=True)[:50] for c in top50ByDVol: symbols.append(c.Symbol) # self.History(c.Symbol, 150, Resolution.Daily) if c.Symbol not in self.__dataDict: try: hist = self.History(c.Symbol, 126, Resolution.Daily) self.__dataDict[c.Symbol] = SMAGroups(self, c.Symbol) self.__dataDict[c.Symbol].UpdateHist(hist, c.Symbol) except: continue else: self.__dataDict[c.Symbol].Update(c.EndTime, c.AdjustedPrice) self.Debug("CoarseSelect() total: {}".format(len(symbols))) return symbols def FineSelect(self, fine): self.Debug("FineSelect()") symbols = [f.Symbol for f in fine] pickSize = 10 self.Debug("FineSelect() total: {}".format(len(symbols[0:pickSize]))) return symbols[0:pickSize] class SMAGroups(object): def __init__(self, algorithm, symbol): self.__sma001 = SimpleMovingAverage(10) self.__sma002 = SimpleMovingAverage(20) self.__sma003 = SimpleMovingAverage(126) def UpdateHist(self, hist, symbol): for index, row in hist.loc[symbol].iterrows(): self.__sma001.Update(index, row["close"]) self.__sma002.Update(index, row["close"]) self.__sma003.Update(index, row["close"]) def Update(self, endTime, adjustedPrice): self.__sma001.Update(endTime, adjustedPrice) self.__sma002.Update(endTime, adjustedPrice) self.__sma003.Update(endTime, adjustedPrice)