Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -10.959% Drawdown 35.800% Expectancy 0 Net Profit -20.742% Sharpe Ratio -0.417 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.222 Beta 6.769 Annual Standard Deviation 0.216 Annual Variance 0.046 Information Ratio -0.507 Tracking Error 0.216 Treynor Ratio -0.013 Total Fees $1.00 |
class CalibratedMultidimensionalPrism(QCAlgorithm): def Initialize(self): self.SetStartDate(2000, 1, 1) self.SetEndDate(2002, 1, 1) # remove this and it gets slowed down self.SetCash(10000) self.UniverseSettings.Resolution = Resolution.Daily self.AddEquity("SPY", Resolution.Daily) self.numberOfSymbolsCoarse = 250 self.numberOfSymbolsFine = 25 self.dollarVolumeBySymbol = {} self.symbols = [] self.lastMonth = -1 self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction) def CoarseSelectionFunction(self, coarse): if self.Time.month == self.lastMonth: return self.symbols filtered = [x for x in coarse if x.HasFundamentalData and x.Volume > 0 and x.Price > 0] sortedByDollarVolume = sorted(filtered, key = lambda x: x.DollarVolume, reverse=True)[:self.numberOfSymbolsCoarse] self.symbols.clear() self.dollarVolumeBySymbol.clear() for x in sortedByDollarVolume: self.symbols.append(x.Symbol) self.dollarVolumeBySymbol[x.Symbol] = x.DollarVolume return self.symbols def FineSelectionFunction(self, fine): if self.Time.month == self.lastMonth: return self.symbols self.lastMonth = self.Time.month filteredFine = [x for x in fine if x.CompanyReference.CountryId == "USA" and (x.CompanyReference.PrimaryExchangeID == "NAS") and (self.Time - x.SecurityReference.IPODate).days > 180 and x.CompanyReference.IndustryTemplateCode == "N"] sortedByDollarVolume = [] sortedByDollarVolume = sorted(filteredFine, key = lambda x: self.dollarVolumeBySymbol[x.Symbol], reverse=True) self.symbols = [x.Symbol for x in sortedByDollarVolume[:self.numberOfSymbolsFine]] return self.symbols 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)