Data5 min read
Why every value in a research dataset needs the timestamp of when it became knowable — and how look-ahead bias hides in plain sight.
A backtest can only be as honest as the data it sees. The most common way research goes wrong is not a bad model; it is a dataset that quietly knows the future.
Every observation carries two timestamps: the time it describes and the time it became knowable. A quarterly earnings figure describes the quarter that ended in March, but the market learned it in late April — and it may be restated in August. A point-in-time store keeps every version, stamped with when it was published.
If a value was not knowable at time t, a strategy evaluated at time t must not see it.
Our ingest layer writes append-only, versioned records with an as_of timestamp. Research queries take an
as_of parameter and can never read past it. The same query run tomorrow returns the same answer — which is the
whole point.