Overall Statistics |
Total Trades 509 Average Win 0.88% Average Loss -0.78% Compounding Annual Return 4.531% Drawdown 17.300% Expectancy 0.031 Net Profit 4.540% Sharpe Ratio 0.339 Probabilistic Sharpe Ratio 24.977% Loss Rate 51% Win Rate 49% Profit-Loss Ratio 1.12 Alpha 0.068 Beta -0.018 Annual Standard Deviation 0.187 Annual Variance 0.035 Information Ratio -0.482 Tracking Error 0.388 Treynor Ratio -3.631 Total Fees $728.08 Estimated Strategy Capacity $61000000.00 Lowest Capacity Asset TSLA UNU3P8Y3WFAD |
class TestStrategy(QCAlgorithm): def Initialize(self): #set backtest time and starting cash to 10000 self.SetStartDate(2020, 1, 1) self.SetEndDate(2021, 1, 1) self.SetCash(100000) #add Equity of TSLA self.ticker = ["AAPL", "TSLA"] for x in self.ticker: self.AddEquity(x, Resolution.Minute) for x in self.ticker: #Set Scheduled Events self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.BeforeMarketClose(x, 0), self.ClosingBar) self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen(x, 1), self.OpeningBar) self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen(x, 60), self.ClosePositions) #Set a window self.window = RollingWindow[TradeBar](2) def OnData(self, data): pass def ClosingBar(self): for x in self.ticker: self.window.Add(self.CurrentSlice[x]) def OpeningBar(self): for x in self.ticker: if x in self.CurrentSlice.Bars: self.window.Add(self.CurrentSlice[x]) if not self.window.IsReady: return gap = (self.window[0].Open / self.window[1].Close) - 1 if gap > -0.10: self.SetHoldings(x, 0.5) self.Log(str(x) + str(self.Time) + "Gap is " + str(gap * 100)) elif gap > 0.10: self.SetHoldings(x, -0.5) self.Log(str(x) + str(self.Time) + "Gap is " + str(gap * 100)) def ClosePositions(self): for x in self.ticker: self.Liquidate()