| 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)