Why your backtest is optimistic
Point-in-time data explained with one restated AUM figure, and how to check your own history for the same problem in an afternoon.
In this note
A backtest reads history from a table. If that table stores only the current value for each period, the backtest is reading numbers that nobody could have known at the time. It will look better than any real strategy could have been, and the reason is not the model.
One restated figure
A manager files regulatory AUM of $2.94bn for a period in March 2024. A year later, in March 2025, they restate the same period to $3.38bn. A table that keeps one value per period now shows $3.38bn for that date, including for a backtest that runs "as of" mid-2024, when only the $2.94bn figure existed.
Every strategy that keyed on AUM crossings, growth rates, or thresholds just traded on information from the future.
Point-in-time is a column, not a promise
The fix is structural. Every row carries a known-on date and a superseded-on date. "What was true on 2024-06-30" becomes a query with a WHERE clause, not an assumption baked into the schema. De-registered firms stay in the history, so survivorship does not quietly inflate the results either.
The test you can run this afternoon
Pick a figure you know was restated. Query your own system as of a date before the restatement. If it returns the restated value, every historical analysis on that system is optimistic by an amount you cannot measure, because the error moves with each firm.