The Tax Day Trade
Log in to collectAcademic paper
The Tax Day Trade: An Efficient Market Anomaly
Steven D. Moffitt
- Illinois Institute of Technology
- ?Stuart School of Business, Illinois Institute of Technology
Strategy in a nutshell
The strategy buys S&P 500 futures (or ETFs) at the close of tax day each year and sells them the following day. This approach is executed just once annually, leaving the rest of the year available for other investment strategies.
Economic rationale
The anomaly arises from investor behavior around tax day. Rationally, many delay contributions until taxes are calculated, creating temporary buying pressure. Irrationally, tax aversion leads to avoidance behaviors that inadvertently push prices up, producing the observed post-tax-day returns
Backtest performance
Annualised return2.5%
Beta0.003
Sortino ratio-0.258
Win rate58%
Full Python code
from AlgorithmImports import *
class TaxDayAnomaly(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2000, 1, 1)
self.SetCash(100000)
self.symbol = self.AddEquity("SPY", Resolution.Daily).Symbol
self.startPrice = None
# Tax day is on 15.4 each year.
def OnData(self, data):
if self.Portfolio[self.symbol].Invested:
self.Liquidate(self.symbol)
# Beacause of unknown reasons market was closed on 14.4. and 16.4. is Sunday, so we invest on 13.4. in years 2001, 2006 and 2017.
if self.Time.year in [2001, 2006, 2017] and self.Time.month == 4 and self.Time.day == 13:
self.SetHoldings(self.symbol, 1)
# When 16.4. is on the weekend, we invest on friday.
if (self.Time.day == 14 or self.Time.day == 15) and self.Time.month == 4 and self.Time.weekday() == 5:
self.SetHoldings(self.symbol, 1)
if self.Time.day == 16 and self.Time.month == 4:
self.SetHoldings(self.symbol, 1)