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