The Anomaly I Would Have Traded in 1985
Suneet Malhotra
Jul 04, 2026
US markets were closed Friday for the Fourth. The trading day before a holiday used to be the best-paying day on the calendar, and it is worth remembering why, because the story is the cleanest lesson I know about how much to trust a backtest.
The edge was real, and it was large
In 1990, Robert Ariel published "High Stock Returns Before Holidays" in the Journal of Finance. Over 1963 to 1982, the mean return on the trading day before a market holiday ran roughly nine to fourteen times the mean of an ordinary day. There are about eight such days in a year. On those eight days, more than a third of the entire market's return for the year showed up. Lakonishok and Smidt found the same shape holding across ninety years of the Dow. This was not a fragile, data-mined blip. It was one of the most robust calendar anomalies ever documented.
If you had handed me that paper in 1985 with a paper account and a rule engine, I would have coded it in an afternoon. Flat most days, long the close into every holiday. The backtest would have been beautiful.
Then everyone read it
| Era | Pre-holiday return vs ordinary day | Source |
|---|---|---|
| 1963-1982 | About nine to fourteen times, one third of annual return on 8 days | Ariel (1990) |
| ~1897-1986 | Persistently positive over 90 years | Lakonishok & Smidt (1988) |
| 1991-1997 | Flat to negative, a partial reversal | Chong, Hudson & Keasey (2005) |
| Post-2000s | Largely absent in US large caps | Subsequent replications |
The effect did not merely shrink. In the years right after it became famous, the pre-holiday return in US markets went flat, and in some windows it turned negative. The edge that paid a third of the annual return for two decades stopped paying, and part of what stopped it was being written down.
This is not a one-off. McLean and Pontiff took ninety-seven published stock-return predictors and measured what happened to each after its paper came out. On average, the returns were twenty-six percent lower out of sample and fifty-eight percent lower after publication. Publication itself is a decay function. The moment an edge is legible enough to print, enough capital reads it to trade it away.
The take
The anomaly you can name from a textbook is, almost by construction, the one already arbitraged out. That has a specific and unpleasant consequence for anyone building a systematic engine. A backtest that reaches back far enough to make a calendar edge look significant is reaching back into the era before the edge was public. You are fitting on the decade when it worked, and you will pay execution costs in the decade when it does not.
The pre-holiday trade is the honest tombstone. It was real, it was large, it was published, and publishing it was part of the mechanism that killed it. So when my own engine flags a clean seasonal pattern, the first question is no longer whether it is statistically significant. It is how long the pattern has been in print, and who else can already see it. A significant backtest on a public anomaly is not evidence of an edge. It is evidence that the edge used to exist.
Markets reopen Monday. I will not be shorting the day after the Fourth on the strength of a reversal reported in a 2005 paper, for exactly the same reason.
Share this post
You Might Also Like
A Signal Is Not a Decision
A signal says that conditions are interesting. It does not say that the portfolio should trade. The missing layer is the decision record between detection and execution.
Quantitative TradingThe Quote Is Not the Fill
A backtest can use the right price and still model the wrong trade. The missing variable is often not slippage. It is the time between seeing a quote and joining the book.
AI & AutomationTest AI Latency from First Token to Finished Answer
A fast first token can hide a late or invalid answer. Test queueing, streaming, and completion with a synthetic workload before accepting a model-serving change.
AI & AutomationTest the Trace Before You Trust the Dashboard
A correct AI answer can hide a broken trace. Use a synthetic request and a deliberately stripped context header to test whether your debugging evidence survives service boundaries.
Latest Blog Posts
Test AI Latency from First Token to Finished Answer
A fast first token can hide a late or invalid answer. Test queueing, streaming, and completion with a synthetic workload before accepting a model-serving change.
Test the Trace Before You Trust the Dashboard
A correct AI answer can hide a broken trace. Use a synthetic request and a deliberately stripped context header to test whether your debugging evidence survives service boundaries.
The Evaluator Needs an Abstain State
A judge that must choose pass or fail will turn uncertainty into false confidence. Add an abstain state, calibrate it, and test the cases where the evaluator should refuse to decide.
Related Tools & Demos
The QA Field Manual to Language Models
A free 24-chapter book. Start at βwhat is AI, really?β and finish with a small language model you built yourself β one that reads a failing Playwright test and proposes a fix you can run. Read it in your browser, or download the PDF or the Mac app.
View Source Code βMulti-Model LLM Harness
One interface to call any AI model β capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code β
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.