| Overall Statistics |
|
Total Orders
318
Average Win
1.00%
Average Loss
-0.89%
Compounding Annual Return
1.032%
Drawdown
13.600%
Expectancy
0.198
Start Equity
100000
End Equity
129835.56
Net Profit
29.836%
Sharpe Ratio
-0.476
Sortino Ratio
-0.141
Probabilistic Sharpe Ratio
0.000%
Loss Rate
44%
Win Rate
56%
Profit-Loss Ratio
1.13
Alpha
-0.017
Beta
0.041
Annual Standard Deviation
0.032
Annual Variance
0.001
Information Ratio
-0.366
Tracking Error
0.156
Treynor Ratio
-0.373
Total Fees
$1530.20
Estimated Strategy Capacity
$1300000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
3.39%
|
# https://quantpedia.com/strategies/pre-holiday-effect/
#
# Investors use some simple investment vehicles to gain exposure to US equity market (ETF, fund, CFD or future) only during days
# preceding holiday days (New Year’s Day, Martin Luther King Jr. Day, President’s Day, Good Friday, Memorial Day, Independence Day,
# Labor Day, Election Day, Thanksgiving Day, Christmas Day). Investors stay in cash during other trading days. The anomaly isn’t
# limited only to the US market but seems to work well also in other countries; therefore, it could be broadened to include
# pre-holiday days for local holidays in other markets
from AlgorithmImports import *
class PreHolidayEffect(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2000, 1, 1)
self.SetCash(100000)
self.symbol = self.AddEquity("SPY", Resolution.Daily).Symbol
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(self.symbol, 1)
elif self.Portfolio.Invested and len(public_holidays)==0:
self.Liquidate()