Overall Statistics
Total Trades
96
Average Win
0.89%
Average Loss
-0.93%
Compounding Annual Return
-6.799%
Drawdown
9.200%
Expectancy
-0.022
Net Profit
-1.354%
Sharpe Ratio
0.479
Probabilistic Sharpe Ratio
40.789%
Loss Rate
50%
Win Rate
50%
Profit-Loss Ratio
0.96
Alpha
-0.097
Beta
0.202
Annual Standard Deviation
0.182
Annual Variance
0.033
Information Ratio
-3.211
Tracking Error
0.257
Treynor Ratio
0.433
Total Fees
$268.76
class OpeningRangeBreakout(QCAlgorithm):
    
    openingBar = None 
    
    def Initialize(self):
        self.SetStartDate(2020, 5, 1)  
        self.SetEndDate(2020, 7, 10)  
        self.SetCash(100000)
        self.AddEquity("TQQQ", Resolution.Minute)
        self.Consolidate("TQQQ", timedelta(minutes=30), self.OnDataConsolidated)
        
        #3. Create a scheduled event triggered at 13:30 calling the ClosePositions function
        self.Schedule.On(self.DateRules.EveryDay("TQQQ"), self.TimeRules.At(13,30), self.ClosePositions)
        self.trades = 0
        
    def OnData(self, data):
        
        #self.Plot("Strategy Equity","SPY",self.Securities["SPY"].Price)
        
        if self.Portfolio.Invested or self.openingBar is None:
            return
        
        if data["TQQQ"].Close > self.openingBar.High:
            self.SetHoldings("TQQQ", .5)
            self.trades = self.trades + 1
            self.Debug("Total trades: " + str(self.trades))

        elif data["TQQQ"].Close < self.openingBar.Low:
            self.SetHoldings("TQQQ", -.5)
            self.trades = self.trades + 1
            self.Debug("Total trades: " + str(self.trades))
            
        
         
    def OnDataConsolidated(self, bar):
        if bar.Time.hour == 9 and bar.Time.minute == 30:
            self.openingBar = bar
    
    #1. Create a function named ClosePositions(self)
    def ClosePositions(self):
        #2. Set self.openingBar to None, and liquidate TSLA
        self.openingBar = None
        self.Liquidate("TQQQ")