Glossary
Lookahead bias
Lookahead bias occurs when a system uses data at time T that was not available at time T.
Updated 2026-08-26. Corpus figures read off a running server.
In market research, lookahead bias usually happens when future returns leak into input features. In news and filing APIs, it usually takes four forms: mixing up timestamp clocks, treating vendor coverage gaps as zeros, joining identifiers against current data instead of historical data, or treating timestamps recorded during a later backfill as if they were known at the time. The table below details each mechanism.
The four mechanisms
| Leak | What happens | How PIT answers it |
|---|---|---|
| Clock substitution | A publication or filing timestamp is read as the moment the document was public, or an acceptance receipt is read as dissemination. | visible_by is named per query and repeated in the response. available_at is never imputed, and acceptance_at is readable on the row but rejected as a cut clock. |
| Unlabeled gap | A vendor never ingested a day, returns an empty list for it, and the reader records zero filings. | A partition — one source, one day — that we never read returns HTTP 409, with count as JSON null and the day listed in coverage.missing. A certified day with nothing matching returns 200 with count 0. |
| Current-universe join | Historical rows are joined against a ticker file downloaded today, so renamed and delisted symbols point somewhere new or vanish. | Half-open ticker-to-CIK intervals resolved at the query instant. Ticker FB resolves to CIK 1326801 up to 2022-06-09, and META resolves to the same CIK from that date. The current ticker file is labeled leakage_risk=current_universe. |
| Lane mix | A first-seen timestamp recorded during a later backfill is stored as though it were contemporaneous knowledge. | A lane says how a row got its timestamp. certified_pit and forward_first_seen are separate lanes, and a page of results never mixes them. Backfilled rows receive no available_at. |
Lookahead bias in language models
A language model asked to evaluate a past date may have already seen those events during training. API cutoff dates control which rows enter the context window, but model weights still retain facts from training data (such as March 2023 events). This matters most when corpus rows omit full document text, forcing the model to rely on its internal memory. See Backtesting an LLM on filings without lookahead for how to measure this effect.
Example
The SVB Financial Group receivership 8-K (accession 0001193125-23-067777) is included in the 10 March 2023 published_at window and excluded from the 9 March 20:00Z cutoff. A live API query will return this document for any window containing 10 March, even if a backtest mislabels the query date as 9 March.
What lookahead bias does not cover
Survivorship bias is a separate issue that determines which companies exist in a dataset. Identity intervals resolve the ticker component of survivorship bias. Sentiment is also separate; this corpus contains no sentiment scores. A high backtest score does not show whether accuracy came from context data or model memory. To test for training data leakage, run the control arm on the backtest page, which withholds issuer names and shifts all dates forward by ten years.