Overall Statistics |
Total Trades 1042 Average Win 0.07% Average Loss -0.02% Compounding Annual Return 74.020% Drawdown 4.000% Expectancy 0.788 Net Profit 14.811% Sharpe Ratio 4.447 Probabilistic Sharpe Ratio 92.116% Loss Rate 58% Win Rate 42% Profit-Loss Ratio 3.23 Alpha 0.639 Beta -0.087 Annual Standard Deviation 0.138 Annual Variance 0.019 Information Ratio 1.805 Tracking Error 0.194 Treynor Ratio -7.05 Total Fees $1105.02 Estimated Strategy Capacity $13000.00 Lowest Capacity Asset SENEB R735QTJ8XC9X |
class UglyRedOrangeChinchilla(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 12, 1) self.SetEndDate(2021, 3, 1) self.SetCash(100000) self.SetBenchmark("SPY") self.num_fine = 10 self.UniverseSettings.Resolution = Resolution.Daily self.AddUniverseSelection( FineFundamentalUniverseSelectionModel(self.SelectCoarse, self.SelectFine)) self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel()) self.SetExecution(ImmediateExecutionModel()) def SelectCoarse(self, coarse): hasFundamentalData = [c for c in coarse if c.HasFundamentalData] filteredByPrice = [p.Symbol for p in hasFundamentalData if p.Price > 10] return filteredByPrice def SelectFine(self, fine): filter_sector = [f for f in fine if f.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.ConsumerDefensive] sortedByFactor = sorted(filter_sector, key=lambda f: f.ValuationRatios.FCFYield, reverse=True) self.forLong = [f.Symbol for f in sortedByFactor[:self.num_fine]] self.forShort = [f.Symbol for f in sortedByFactor[-self.num_fine:]] return self.forShort + self.forLong def OnData(self, slice): insights = [] for kvp in self.Portfolio: holding = kvp.Value symbol = holding.Symbol if holding.Invested and symbol not in self.forLong and symbol not in self.forShort: insights.append(Insight(symbol, timedelta(1), InsightType.Price, InsightDirection.Flat, None, None)) [insights.append(Insight.Price(symbol, timedelta(1), InsightDirection.Up)) for symbol in self.forLong] [insights.append(Insight.Price(symbol, timedelta(1), InsightDirection.Down)) for symbol in self.forShort] self.EmitInsights(insights)