| Overall Statistics |
|
Total Trades 61 Average Win 0.56% Average Loss -0.91% Compounding Annual Return 0.156% Drawdown 6.700% Expectancy 0.021 Net Profit 0.783% Sharpe Ratio 0.067 Probabilistic Sharpe Ratio 1.963% Loss Rate 37% Win Rate 63% Profit-Loss Ratio 0.61 Alpha -0.002 Beta 0.026 Annual Standard Deviation 0.03 Annual Variance 0.001 Information Ratio -0.912 Tracking Error 0.186 Treynor Ratio 0.077 Total Fees $114.10 Estimated Strategy Capacity $11000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
import numpy as np
from datetime import timedelta
class PreHolidayEffectAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2016, 1, 1)
self.SetEndDate(2020, 12, 31)
self.SetCash(100000)
self.AddEquity("SPY", Resolution.Minute)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 140), self.RebalancingCode)
def OnData(self, data):
pass
def RebalancingCode(self):
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]
self.Debug('calendar1: {}'.format(holidays))
self.Debug('self.time: {}'.format(self.Time))
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()