Overall Statistics
Total Trades
4632
Average Win
0.63%
Average Loss
-0.70%
Compounding Annual Return
-1.835%
Drawdown
38.800%
Expectancy
-0.014
Net Profit
-28.914%
Sharpe Ratio
-0.11
Loss Rate
48%
Win Rate
52%
Profit-Loss Ratio
0.90
Alpha
-0.053
Beta
2.029
Annual Standard Deviation
0.112
Annual Variance
0.012
Information Ratio
-0.29
Tracking Error
0.112
Treynor Ratio
-0.006
Total Fees
$17372.35
# https://quantpedia.com/Screener/Details/4
# buy SPY ETF at its closing price and sell it at the opening each day. 
import numpy as np


class OvernightTradeAlgorithm(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2000, 1, 1)   #Set Start Date
        self.SetEndDate(2018, 6, 1)     #Set End Date
        self.SetCash(100000)            #Set Strategy Cash
        self.spy = self.AddEquity("SPY", Resolution.Hour).Symbol
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage)
        self.Schedule.On(self.DateRules.EveryDay(self.spy), self.TimeRules.AfterMarketOpen("SPY", 0), self.EveryDayAfterMarketOpen)
        self.Schedule.On(self.DateRules.EveryDay(self.spy), self.TimeRules.BeforeMarketClose("SPY", 0), self.EveryDayBeforeMarketClose)

    def EveryDayBeforeMarketClose(self):
        if not self.Portfolio.Invested:
            self.SetHoldings(self.spy, 1)
    
    def EveryDayAfterMarketOpen(self):
        if self.Portfolio.Invested:
            self.Liquidate()

    def OnData(self, data):
        pass