Overall Statistics |
Total Trades 11034 Average Win 0.14% Average Loss -0.11% Compounding Annual Return 10.146% Drawdown 60.000% Expectancy 0.342 Net Profit 659.343% Sharpe Ratio 0.539 Probabilistic Sharpe Ratio 0.745% Loss Rate 40% Win Rate 60% Profit-Loss Ratio 1.24 Alpha 0.108 Beta -0.081 Annual Standard Deviation 0.191 Annual Variance 0.036 Information Ratio 0.122 Tracking Error 0.27 Treynor Ratio -1.274 Total Fees $11670.92 |
class TransdimensionalCalibratedChamber(QCAlgorithm): def Initialize(self): self.SetStartDate(2000, 1, 1) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.market = self.AddEquity("SPY", Resolution.Daily).Symbol self.AddUniverseSelection( FineFundamentalUniverseSelectionModel(self.SelectCoarse, self.SelectFine) ) self.UniverseSettings.Resolution = Resolution.Daily self.in_consumer = True self.consumer_months = [11, 12, 1, 2, 3] def SelectCoarse(self, coarse): if self.Time.month not in self.consumer_months or (self.in_consumer and self.Portfolio.Invested): return [] return [c.Symbol for c in coarse if c.Price > 5] def SelectFine(self, fine): return [x.Symbol for x in fine if x.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.ConsumerCyclical] def into_market(self): self.Liquidate() self.SetHoldings(self.market, 1) self.in_consumer = False def into_consumer(self, securities): self.Liquidate() for s in securities: self.SetHoldings(s, 1 / len(securities)) self.in_consumer = True def OnData(self, data): if self.Time.month not in self.consumer_months: if self.in_consumer: self.into_market() return securities = [s for s in data.Keys if s != self.market] if len(securities) < 1 or (self.in_consumer and self.Portfolio.Invested): return self.into_consumer(securities)