Overall Statistics |
Total Trades 96 Average Win 0.05% Average Loss -0.30% Compounding Annual Return -26.058% Drawdown 24.100% Expectancy -0.706 Net Profit -13.978% Sharpe Ratio -1.087 Probabilistic Sharpe Ratio 2.959% Loss Rate 75% Win Rate 25% Profit-Loss Ratio 0.16 Alpha -0.195 Beta 0.64 Annual Standard Deviation 0.164 Annual Variance 0.027 Information Ratio -1.595 Tracking Error 0.129 Treynor Ratio -0.278 Total Fees $96.06 Estimated Strategy Capacity $550000000.00 Lowest Capacity Asset MMM R735QTJ8XC9X |
# region imports from AlgorithmImports import * # endregion class SmoothYellowGreenKitten(QCAlgorithm): def Initialize(self): self.SetStartDate(2022, 8, 6) # Set Start Date self.SetEndDate(2023, 2, 5) self.SetCash(100000) # Set Strategy Cash self.AddUniverse(self.coarse_filter, self.fine_filter) self.UniverseSettings.Resolution = Resolution.Daily self.curr_month = -1 def OnData(self, data: Slice): if self.Time.month == self.curr_month: return self.curr_month = self.Time.month stocks = [s for s in self.Securities.Keys] to_liquidate = [s for s in self.Portfolio.Keys if s not in stocks] for stock in stocks: self.SetHoldings(stock, 1/len(stocks)) for stock in to_liquidate: self.Liquidate(stock) def coarse_filter(self, coarse: Collection[CoarseFundamental]): # volume, price of a share filtered = [c for c in coarse if c.Price > 10 and c.HasFundamentalData] sortedByDVol = sorted(filtered, key=lambda c:c.DollarVolume, reverse=True) top10 = sortedByDVol[:50] return [c.Symbol for c in top10] def fine_filter(self, fine): # revenue, profits, assets, debts filtered = [f for f in fine if f.ValuationRatios.PERatio < 20] sortedByPE = sorted(filtered, key=lambda f:f.ValuationRatios.PERatio) return [f.Symbol for f in fine][:10]