| Overall Statistics |
|
Total Trades 5956 Average Win 0.12% Average Loss -0.06% Compounding Annual Return 11.436% Drawdown 34.200% Expectancy 0.654 Net Profit 247.019% Sharpe Ratio 0.729 Probabilistic Sharpe Ratio 13.076% Loss Rate 42% Win Rate 58% Profit-Loss Ratio 1.86 Alpha 0.114 Beta -0.069 Annual Standard Deviation 0.143 Annual Variance 0.021 Information Ratio -0.126 Tracking Error 0.219 Treynor Ratio -1.512 Total Fees $5956.00 Estimated Strategy Capacity $34000000.00 Lowest Capacity Asset EBAYL W8R4ZT6D4G9X |
class TransdimensionalCalibratedChamber(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 1, 1) # Set Start Date
#self.SetEndDate(2021, 1, 1)
self.SetCash(10000) # 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)