# Point-in-Time and Survivorship-Free Data

> Point in time data records what was known on each date, including restated figures and index changes. Learn why it matters and how to build point in time datasets.

Source: https://learn.tradelabsai.com/programming/point-in-time-data/  
Track: Programming and Data · Level: Advanced · Updated: 2026-10-03  
Publisher: TradeLabs AI (https://tradelabsai.com). Education, not financial advice.  
Cite as: TradeLabs Learn, "Point-in-Time and Survivorship-Free Data", https://learn.tradelabsai.com/programming/point-in-time-data/

A backtest should only use information that was available at each moment in the past. Point in time data makes that possible by recording not just values but when each value became known. This matters because data changes after the fact: companies restate earnings, economic statistics get revised, index members change and vendors correct mistakes. A database that keeps only the latest version silently lets a backtest peek at the future, and the resulting strategies look far better on paper than they could ever have performed.

## What changes after the fact

| Data | How it changes | Lesson |
|---|---|---|
| Company financials | Restatements and late filings | [Fundamental Data](https://learn.tradelabsai.com/alternative-data/fundamental-data/) |
| Economic data | GDP, payrolls and others revised in later months | [GDP](https://learn.tradelabsai.com/macro/gdp/), [Employment Data and Non-Farm Payrolls](https://learn.tradelabsai.com/macro/non-farm-payrolls/) |
| Index membership | Stocks added and removed | [Index Rebalancing](https://learn.tradelabsai.com/fundamentals/index-rebalancing/) |
| Universe of stocks | Delistings, bankruptcies, mergers | [Survivorship and Selection Bias](https://learn.tradelabsai.com/research/survivorship-and-selection-bias/) |
| Analyst estimates | Revised continuously | [Guidance and Earnings Revisions](https://learn.tradelabsai.com/fundamentals/guidance-and-earnings-revisions/) |
| Prices | Vendor corrections, adjustments | [Splits and Dividends in Price Data](https://learn.tradelabsai.com/programming/adjusted-prices/) |

## Two dates for every value

A point in time record stores:

- **Period or effective date:** what the value describes, such as the quarter ending 30 June.
- **Knowledge date (as of date):** when the value was published or entered your database.

A backtest on any day uses only records with a knowledge date on or before that day, and for each item takes the latest such record.

**Example: The earnings that were not known yet**
A company's quarter ends on 31 March, and it reports earnings per share of $1.20 on 28 April. In July it restates the figure to $1.05. A naive database stores one row: Q1 EPS $1.05, dated 31 March. A backtest running on 15 April would wrongly see $1.05 two weeks before any number was published, and the restated value at that. A point in time database stores two rows: $1.20 known from 28 April, and $1.05 known from the July restatement date. On 15 April the backtest sees nothing for Q1; on 1 May it sees $1.20. See [Look-Ahead Bias](https://learn.tradelabsai.com/research/look-ahead-bias/).

## Economic data vintages

Government statistics are revised as more information arrives. The first estimate of US GDP can differ noticeably from the figure published years later. Markets react to the first release, so a macro backtest should use the initial values, often called first release or real time vintages. The Federal Reserve Bank of St. Louis provides historical vintages through its ALFRED database. See [Trading Economic Releases](https://learn.tradelabsai.com/macro/trading-economic-releases/).

## Point in time index membership

Testing a strategy on "today's S&P 500 members" over 20 years only includes companies that survived and grew enough to be in the index today. Real investors in the past would have held companies that later failed or were removed. A point in time membership table stores each stock's add and remove dates so the universe on any day matches what was actually in the index. See [Survivorship and Selection Bias](https://learn.tradelabsai.com/research/survivorship-and-selection-bias/).

## Building point in time data yourself

1. **Never overwrite;** append new versions with a knowledge timestamp. See [Data Versioning, Lineage and Schemas](https://learn.tradelabsai.com/programming/data-versioning/).
2. **Snapshot vendor data** each time you download it.
3. **Add a realistic delay** where knowledge dates are unclear, for example assume quarterly results are usable 45 to 90 days after quarter end, depending on filing deadlines.
4. **Keep delisted instruments** in your database.
5. **Record your own live data** as it arrives, which is point in time by construction.

## Commercial point in time datasets

Major data vendors offer point in time fundamentals, estimates and index constituents, usually at institutional prices. They are expensive because building them requires years of careful archiving. For individuals, the practical approach is adding conservative reporting lags and using survivorship free price data where possible. See [Historical Data for Backtesting](https://learn.tradelabsai.com/research/historical-data-for-backtesting/).

## Frequently asked questions

### What is point in time data?

Data that records when each value became known, so backtests can use only the information that was available on each historical date.

### Why do restatements matter for backtesting?

A backtest using restated figures sees numbers that were not known at the time, creating look ahead bias that inflates results.

### How can I avoid look ahead bias with fundamental data?

Use point in time datasets, or add conservative publication lags so each value is only used after it would have been published.

Next, learn how to track changes to data and code in [Data Versioning, Lineage and Schemas](https://learn.tradelabsai.com/programming/data-versioning/).

## Continue learning

- Next lesson: [Data Versioning, Lineage and Schemas](https://learn.tradelabsai.com/programming/data-versioning/)
- Previous lesson: [Splits and Dividends in Price Data](https://learn.tradelabsai.com/programming/adjusted-prices/)
- Related: [Splits and Dividends in Price Data](https://learn.tradelabsai.com/programming/adjusted-prices/): Adjusted prices remove the jumps caused by splits and dividends so returns are correct. Learn how adjustment factors work, when to use raw prices and common traps.
- Related: [Look-Ahead Bias](https://learn.tradelabsai.com/research/look-ahead-bias/): Look ahead bias happens when a backtest uses information that was not available at the time. Learn common sources, real examples and how to prevent it in code.
- Related: [Survivorship and Selection Bias](https://learn.tradelabsai.com/research/survivorship-and-selection-bias/): Survivorship bias ignores failures; selection bias picks unrepresentative samples. Learn how both inflate backtests, fund returns and advice, and how to fix them.
- Related: [Fundamental Data](https://learn.tradelabsai.com/alternative-data/fundamental-data/): Fundamental data covers company financials, estimates and economic statistics. Learn where it comes from, point in time issues, restatements and how quants use it.
- Related: [Data Versioning, Lineage and Schemas](https://learn.tradelabsai.com/programming/data-versioning/): Data versioning tracks exactly which data, code and settings produced each backtest. Learn snapshots, hashes, tools like git and DVC, and a simple workflow.
- Related: [Index Rebalancing](https://learn.tradelabsai.com/fundamentals/index-rebalancing/): Index rebalancing forces funds to buy additions and sell deletions. Learn how S&P 500 and Russell changes work, the index effect and closing auction flows.
