Quant BuffetRelax, Not Over Thinking

The Tax Day Trade

Log in to collect

Academic paper

The Tax Day Trade: An Efficient Market Anomaly

AuthorsSteven D. Moffitt

Institute
  • 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)
The Tax Day Trade | CFDs Quant Strategy | Quant Buffet