Overall Statistics |
Total Trades 69 Average Win 0.09% Average Loss -0.02% Compounding Annual Return 1.236% Drawdown 9.300% Expectancy 2.752 Net Profit 0.208% Sharpe Ratio 0.157 Probabilistic Sharpe Ratio 36.535% Loss Rate 32% Win Rate 68% Profit-Loss Ratio 4.48 Alpha -0.099 Beta 1.009 Annual Standard Deviation 0.162 Annual Variance 0.026 Information Ratio -0.884 Tracking Error 0.111 Treynor Ratio 0.025 Total Fees $69.27 Estimated Strategy Capacity $38000000.00 Lowest Capacity Asset AVGR VXOCXY104W9X |
class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2021,4,29) self.SetCash(10000) self.Data_Symbol = {} tickers = ["SPY","AAPL","MSFT", "AMZN", "GOOGL", "FB", "TSLA","BRK.B","BABA", "TSM", "V","NVDA","JPM", "JNJ", "WMT", "UNH", "MA","BAC","PYPL", "HD", "PG","DIS","ASML", "ADBE", "CMCSA", "NKE", "NFLX","KO","VZ", "INTC", "AVGR"] self.SetWarmUp(timedelta(days=30)) 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.At(23, 59), self.DayEnd) self.state = False def DayEnd(self): self.state = False def OnData(self, data): if self.IsWarmingUp or self.state: return for symbol, symbol_data in self.Data_Symbol.items(): holdings = self.Portfolio[symbol] invested = holdings.Invested nowprice = holdings.Price aveprice = holdings.AveragePrice quantity = holdings.Quantity bpower = self.Portfolio.Cash if not invested and bpower > nowprice: 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: self.MarketOrder(symbol, quantity + 1) self.state = True if invested and nowprice > aveprice * 1.05 or nowprice < aveprice * 0.7: self.Liquidate(symbol) self.state = True class SymbolData: def __init__ (self,algo,symbol): self.algorithm = algo self.symbol = symbol