Overall Statistics
Total Trades
5537
Average Win
0.51%
Average Loss
-0.57%
Compounding Annual Return
4.193%
Drawdown
26.200%
Expectancy
0.021
Net Profit
57.158%
Sharpe Ratio
0.348
Probabilistic Sharpe Ratio
0.437%
Loss Rate
46%
Win Rate
54%
Profit-Loss Ratio
0.88
Alpha
-0.02
Beta
0.508
Annual Standard Deviation
0.096
Annual Variance
0.009
Information Ratio
-0.756
Tracking Error
0.095
Treynor Ratio
0.066
Total Fees
$18978.56
Estimated Strategy Capacity
$7700000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
class tthTrialBuyClose_SellOpen_On_SP500(QCAlgorithm):
 
    def Initialize(self):
        self.SetStartDate(2010, 1, 1)  # Set Start Date
        self.SetEndDate(2021, 1, 1) # Set End Date
        self.SetCash(100000)  # Set Strategy Cash
        # Setting it to hourly, ideally need to work out how to get the last hour bar and use the high and low and latest price on last bar before close
        spy = self.AddEquity("SPY", Resolution.Hour) 
        
        spy.SetDataNormalizationMode(DataNormalizationMode.Raw)
       
        self.spy = spy.Symbol
       
        self.SetBenchmark("SPY")
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
       

        self.Schedule.On(self.DateRules.EveryDay(self.spy), self.TimeRules.AfterMarketOpen("SPY", 0), self.EveryDayAfterMarketOpen)
 

    def EveryDayAfterMarketOpen(self):
        if self.Portfolio.Invested:
            self.Liquidate()
 

    def OnData(self, data):
        if not self.spy in data:
              return
        # If i uncomment below I get a runtime eror
        #prevcloseprice = data[self.spy].Close
        #prevhighprice  = data[self.spy].High
        #prevlowprice   = data[self.spy].Low
        #curropenprice  = data[self.spy].Open
        # Ideally get the price of the last hour bar before close, so can do some if statements on this.
 
        if not self.Portfolio.Invested:

         # if prevcloseprice > curropenprice:
              self.SetHoldings(self.spy, 1)