Point-in-time (PIT) refers to building datasets, features, and instrument sets using only information that was available as of a specific historical timestamp. A PIT workflow prevents future listings, delistings, symbol remaps, or revised metadata from influencing past decisions. In trading research, PIT applies both to values (prices/quotes) and to membership (which symbols were eligible).
Without PIT handling, backtests can “cheat” by selecting symbols that were not listed yet, avoiding symbols that will be delisted later, or using metrics that accidentally include future observations. That typically inflates performance and creates a gap between research and live trading. PIT is especially important in crypto because symbol catalogs and liquidity can change quickly.
A PIT process usually includes:
The key idea is that every decision point must be driven by an “as-of” information set.
“As-of” means evaluating data exactly as it would have been known at a given timestamp, including which symbols existed and which records were available then. It is more than filtering prices by date; it also covers universe membership and metadata changes. The goal is to reproduce the same inputs a real system could have used at that time.
No. Avoiding future prices is necessary, but PIT also requires avoiding future knowledge about universe membership and eligibility. You can have a backtest with correct price timing that is still biased if it uses today’s symbol list for the past.
Survivorship bias is often a symptom of not using PIT universes. When you build the universe from today’s survivors, historical dropouts disappear. PIT universe construction keeps dropouts in the sample during the period they existed, which reduces survivorship bias.
A weekly strategy buys the “top 50 by 7-day volume” each Monday at 00:00 UTC. If your pipeline accidentally computes the 7-day volume using trades that occur later on Monday, the backtest will pick better symbols than were identifiable at the rebalance time. A PIT implementation restricts the window to observations strictly before 00:00 UTC.
CoinAPI’s Market Data API exposes symbol metadata via GET /v1/symbols, including fields like data_start / data_end and (when available) type-specific windows such as data_trade_start / data_trade_end. These fields help you enforce time-bounded eligibility and avoid including symbols outside their historical coverage when constructing PIT universes. Storing the symbol list used at each rebalance further improves reproducibility if metadata evolves.