Overall Statistics |
Total Trades 110 Average Win 0.35% Average Loss -0.24% Compounding Annual Return 2.118% Drawdown 1.600% Expectancy 0.412 Net Profit 5.598% Sharpe Ratio 1.011 Probabilistic Sharpe Ratio 50.032% Loss Rate 42% Win Rate 58% Profit-Loss Ratio 1.43 Alpha 0.017 Beta 0.032 Annual Standard Deviation 0.021 Annual Variance 0 Information Ratio -0.524 Tracking Error 0.233 Treynor Ratio 0.668 Total Fees $110.00 |
class TurnaroundTuesdayAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2018, 1, 1) self.SetCash(30000) self.ar = .33 # allocation ratio self.spy = self.AddEquity("SPY", Resolution.Minute) self.symbol = self.spy.Symbol self.monday_open = 0 self.monday_down = False def OnData(self, data): if not data.ContainsKey(self.symbol) or data[self.symbol] is None: return if data.Time.weekday() == 0: # Monday if data.Time.hour == 9 and data.Time.minute == 31: # Open bar self.monday_open = data[self.symbol].Open if not self.spy.Exchange.DateTimeIsOpen(data.Time): # Close bar self.monday_down = data[self.symbol].Close < self.monday_open if self.monday_down: self.quantity = self.CalculateOrderQuantity(self.symbol, self.ar) if self.quantity > 0: self.MarketOrder(self.symbol, self.quantity) return if self.monday_down: # Fired on Tuesday at the open if self.quantity > 0: self.MarketOnCloseOrder(self.symbol, -self.quantity) self.monday_down = False