Overall Statistics
Total Trades
50
Average Win
0.42%
Average Loss
-0.17%
Compounding Annual Return
-31.731%
Drawdown
2.400%
Expectancy
-0.446
Net Profit
-1.888%
Sharpe Ratio
-4.673
Probabilistic Sharpe Ratio
0.191%
Loss Rate
84%
Win Rate
16%
Profit-Loss Ratio
2.46
Alpha
-0.119
Beta
0.272
Annual Standard Deviation
0.05
Annual Variance
0.002
Information Ratio
2.017
Tracking Error
0.094
Treynor Ratio
-0.859
Total Fees
$52.14
Estimated Strategy Capacity
$41000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
class OpeningRangeBreakoutRevision(QCAlgorithm):
    
    def Initialize(self):
        self.SetStartDate(2022, 1, 1)  
        #self.SetEndDate(2020, 12, 31)  
        self.SetCash(100_000)
        self.spy = self.AddEquity("SPY", Resolution.Minute, extendedMarketHours = True).Symbol
        self.Consolidate(self.spy, timedelta(minutes=30), self.OnDataConsolidated)
        self.window = RollingWindow[TradeBar](2)
        self.openingBar = None

    def OnData(self, data):
        if self.openingBar is None:
            return
        
        if data[self.spy].Price > self.openingBar.High and not self.Portfolio.Invested:
            self.SetHoldings(self.spy, 1)
        elif data[self.spy].Price < self.window[1].Low:
            self.Liquidate(self.spy)
         
    def OnDataConsolidated(self, bar):
        if bar.EndTime.hour == 10 and bar.EndTime.minute == 00:
            self.openingBar = bar
        self.window.Add(bar)