A 5:1 split that read as a 79.5% drawdown
Exchange close prices are not corporate-action adjusted. If you do not fix that before the signal sees them, you are trading an artefact.
- point-in-time
- risk
A screen we were running flagged a name as one of the worst performers in its universe. The one-day return was roughly -79.5%.
The company had not lost four fifths of its value. It had done a 5:1 stock split.
Where the artefact comes from
Exchange end-of-day files carry the traded close. They are not retroactively adjusted for splits, bonuses, or other corporate actions, and neither is the previous-close field that sits next to them.
So on the ex-date the file honestly reports a price that is one fifth of the prior price, and any return computed naively from those two numbers reports a catastrophe that did not happen.
The failure is quiet, which is what makes it dangerous. Nothing errors. Nothing looks malformed. You simply get a return series with occasional enormous negative outliers, and any momentum or reversal signal computed on top of it will happily trade them.
For a reversal signal in particular, the artefact is actively attractive: it looks exactly like the deeply oversold name the signal is built to buy.
What we do about it
Three things, in order.
Adjust before anything reads the series. Corporate actions are applied to build an adjusted price series, and that adjusted series is the only one signals are permitted to see. The raw close stays available for reconciliation and nothing else.
Treat the adjustment table as fallible. We have found third-party split data on Indian listings to be wrong often enough that it cannot be trusted unchecked: phantom splits that never happened, and real bonus issues that are simply missing. An override file sits on top of the vendor feed, and entries get added to it whenever a discrepancy is confirmed against the exchange announcement.
Alert on the shape, not just the value. A single-day move past a threshold triggers a check against the corporate action calendar before it is allowed into any downstream computation. A large move with a matching action is an adjustment bug. A large move with no matching action is news. Those need different responses, and conflating them is how the artefact gets back in.
The general point
Point-in-time discipline is usually discussed as a question of when you knew something. This is the other half: whether the number you have is the number that existed.
Both failures produce a backtest that cannot happen. Only one of them is easy to spot.
This note describes research on historical data and is published for illustration only. Figures are not audited, are not a track record, and are not indicative of future results. Nothing here is an offer, a solicitation, investment advice, or a recommendation to transact in any security.