Learn · 14 of 21

Point-in-time data and backtesting

Only using what was known on the date, so backtests do not cheat.

Financial data gets restated. Annual reports arrive months after the year ends. A backtest that uses the final, restated numbers on the day the year ended is peeking at the future, and its returns are fiction. This is look-ahead bias, and it is the most common reason a strategy works in a backtest and fails in production.

Every fact in the database carries the date it was filed with the SEC, and every query is answered "as known on date D": filings after D are invisible, and where the same period was restated the latest filing on or before D wins. The screener, the backtest and the valuation's as-of date all go through this layer.

The backtest rebalances a screen on a schedule, using only point-in-time facts at each rebalance date, and holds the resulting portfolio until the next one. Forward returns use only prices after the rebalance date, and the 20-day liquidity that sets trading costs uses only the days up to it. A company that delists simply stops having prices; it is never back-filled (see screening for what this means for survivorship).

The rest of this group builds on that rule: how screens and universes work, how ranking systems order stocks and how to test them, what each backtest statistic means, why trading costs decide whether a strategy is real, how the portfolio simulator differs from a screen backtest, and how to read the house strategies and their live records.

In the appThe as-of date on the valuation page and the rebalance dates on the backtest page both use this rule. Set an as-of date to see what the model would have said then.

Go deeper