US Pre-Holiday Equity Exposure Strategy
Log in to collectAcademic paper
Testing the Significance of Calendar Effects
Peter Reinhard Hansen; Asger Lunde; James M. Nason
- DKCopenhagen Business School
- DKAarhus University
- University of North Carolina at Chapel Hill
- ?Aarhus University - CREATES
- ?Copenhagen Business School, Finance
- ?University of North Carolina (UNC) at Chapel Hill - Department of Economics
- ?Aarhus University - School of Business and Social Sciences
- ?CREATES
- North Carolina State University
- ?North Carolina State University - Department of Economics
Strategy in a nutshell
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.
Economic rationale
The main explanatory factors for this anomaly are behavioral. One explanation states that short-sellers close their risky positions prior to holidays. Another reason could be investors’ good mood around holidays, indicating greater optimism about future prospects and, therefore, a high probability of positive market moves.
Backtest performance
Full Python code
from AlgoLib import *
class PreHolidayEffect(XXX):
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()