Overall Statistics
Total Trades
412
Average Win
0.98%
Average Loss
-0.89%
Compounding Annual Return
1.114%
Drawdown
13.400%
Expectancy
0.126
Net Profit
22.873%
Sharpe Ratio
0.236
Loss Rate
47%
Win Rate
53%
Profit-Loss Ratio
1.11
Alpha
-0.008
Beta
1.008
Annual Standard Deviation
0.053
Annual Variance
0.003
Information Ratio
-0.143
Tracking Error
0.053
Treynor Ratio
0.012
Total Fees
$2101.71
 
 
import numpy as np
from datetime import timedelta

class PreHolidayEffectAlgorithm(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2000, 1, 1)  
        self.SetEndDate(2018, 8, 1)    
        self.SetCash(100000)           
        self.AddEquity("SPY", Resolution.Daily)


    def OnData(self, data):
        calendar1 = self.TradingCalendar.GetDaysByType(TradingDayType.PublicHoliday, self.Time, self.Time+timedelta(days=2))
        calendar2 = self.TradingCalendar.GetDaysByType(TradingDayType.Weekend, self.Time, self.Time+timedelta(days=2))
        holidays = [i.Date for i in calendar1]
        weekends = [i.Date for i in calendar2]
        # subtract weekends in all holidays
        public_holidays = list(set(holidays) - set(weekends))

        if not self.Portfolio.Invested and len(public_holidays)>0:
            self.SetHoldings("SPY", 1)
        elif self.Portfolio.Invested and len(public_holidays)==0:
            self.Liquidate()