Overall Statistics |
Total Trades 93 Average Win 19.76% Average Loss -16.95% Compounding Annual Return -46.374% Drawdown 80.500% Expectancy 0.166 Net Profit -35.550% Sharpe Ratio 0.202 Probabilistic Sharpe Ratio 19.415% Loss Rate 46% Win Rate 54% Profit-Loss Ratio 1.17 Alpha 0.099 Beta 0.985 Annual Standard Deviation 1.302 Annual Variance 1.696 Information Ratio 0.074 Tracking Error 1.299 Treynor Ratio 0.267 Total Fees $217.78 Estimated Strategy Capacity $810000.00 Lowest Capacity Asset MEDS XC03HZ3KX3L1 |
class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2021,4,1) self.SetCash(5000) self.Data_Symbol = {} tickers = ["SPY","MEDS","ANY","XIN",] self.SetWarmUp(30, Resolution.Daily) for stock in tickers: symbol = self.AddEquity(stock, Resolution.Minute).Symbol self.Data_Symbol[symbol] = SymbolData(self, symbol) self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 260), self.EveryDayAfterMarketOpen) def EveryDayAfterMarketOpen(self): if self.IsWarmingUp: return for symbol, symbol_data in self.Data_Symbol.items(): if not symbol_data.rsi.IsReady: continue holdings = self.Portfolio[symbol] invested = holdings.Invested nowprice = holdings.Price aveprice = holdings.AveragePrice quantity = holdings.Quantity bpower = self.Portfolio.Cash rsi = symbol_data.rsi.Current.Value macd = symbol_data.macd.Current.Value cci = symbol_data.cci.Current.Value wilr = symbol_data.wilr.Current.Value if self.LiveMode and not invested and bpower > nowprice: self.Log(f'{symbol} :: {rsi:.6},{cci:.6},{wilr:.6},{macd:.6}') if not invested and bpower > nowprice and rsi > 0 and cci > -100 and wilr > -100 and macd > -10: self.MarketOrder(symbol, 1) if self.LiveMode: self.Log(f'{symbol} bought on {self.Time}') if invested and nowprice < aveprice * 0.95 and bpower > nowprice: #0.95 is better than 0.90 self.MarketOrder(symbol, quantity + 1) if invested and nowprice > aveprice * 1.20 or nowprice < aveprice * 0.7: #stop loss at 0.7 best self.Liquidate(symbol) class SymbolData: def __init__ (self,algo,symbol): self.algorithm = algo self.symbol = symbol self.rsi = algo.RSI(symbol, 14, Resolution.Daily) self.macd = algo.MACD(symbol, 12, 26, 9, Resolution.Daily) self.cci = algo.CCI(symbol, 14, Resolution.Daily) self.wilr = algo.WILR(symbol, 14, Resolution.Daily)