Overall Statistics |
Total Trades 73 Average Win 10.89% Average Loss -3.05% Compounding Annual Return 50.884% Drawdown 37.200% Expectancy 0.461 Net Profit 112.735% Sharpe Ratio 1.036 Probabilistic Sharpe Ratio 40.186% Loss Rate 68% Win Rate 32% Profit-Loss Ratio 3.57 Alpha 0.468 Beta -0.086 Annual Standard Deviation 0.457 Annual Variance 0.208 Information Ratio 0.742 Tracking Error 0.711 Treynor Ratio -5.503 Total Fees $0.00 Estimated Strategy Capacity $12000000.00 Lowest Capacity Asset BTCUSD XJ Portfolio Turnover 19.37% |
# region imports from AlgorithmImports import * # endregion class HipsterFluorescentPinkMule(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 9, 1) # Set Start Date self.SetEndDate(2023, 7, 1) self.SetCash(100000) # Set Strategy Cash self.symbol = self.AddCrypto("BTCUSD", Resolution.Daily).Symbol self.EnableAutomaticIndicatorWarmUp = True self.mom = self.MOMP(self.symbol, int(self.GetParameter("lookback")), Resolution.Daily) self.dataset_symbol = self.AddData(RegalyticsRegulatoryArticles, "REG").Symbol self.SetBenchmark(self.symbol) def OnData(self, slice: Slice) -> None: # Parse articles if not slice.ContainsKey(self.dataset_symbol): return found = 0 articles = slice[self.dataset_symbol] for article in articles: if "Crypto" in article.Title or "Crypto" in article.Summary: found += 1 if found == 0: return if self.mom.Current.Value > 0 and not self.Portfolio[self.symbol].IsLong: self.SetHoldings(self.symbol, 1) if self.mom.Current.Value < 0 and not self.Portfolio[self.symbol].IsShort: self.SetHoldings(self.symbol, -1)