Backtest on what was knowable, not on what is known now
A backtest that reads today’s fundamentals trades on information that did not exist yet. Arche answers every query as of a date, using the time the SEC accepted each filing, so a feature built for a 2021 rebalance only sees what had been filed by then.
Where look-ahead bias comes from
Two things put the future into a historical fundamentals dataset. A fiscal period ends weeks or months before its 10-K or 10-Q is filed, so a figure stamped to its period end was not public on that date. And companies amend and restate, so a dataset that overwrites the original with the correction serves the corrected figure for dates on which only the original existed.
Survivorship adds a third distortion. A universe built only from companies that still file today leaves out the ones that were delisted, acquired or taken private, and the backtest is wrong in a direction you cannot see from inside its results.
What Arche does about it
- As-of retrieval on every plan, including Free. Query any date and Arche resolves the figures using accepted filing dates, returning what was on file then.
- Restatements add a version instead of overwriting. The original stays queryable, with the filing it came from.
- Point-in-time time series. One request returns a metric across a company’s history, with every point anchored to the as-of date you pass.
- Delisted, acquired and taken-private registrants are retained in the corpus.
- Each as-of snapshot returns a snapshot_hash, and replay tokens reproduce a past response exactly, so a backtest can be re-run and checked later.
A reproducible research job
The point-in-time research guide recommends storing, with every model run, the company identifier, the query boundary, any fiscal or statement filters, and the statement_version_id values returned. Compute the boundary for each decision date first, query with an as_of route anchored to it, and only then join market or model data.
Worked example: a revenue series as it stood on March 31, 2024
From the time-series documentation. as_of_date anchors the whole series to a historical boundary, so every point is the value that was knowable on that date rather than today’s restated value.
curl -X GET "https://api.arche.fi/v1/edgar/companies/0000789019/metrics/REVENUE/time-series?as_of_date=2024-03-31&period_type=annual&page_size=50" \
-H "X-Api-Key: $ARCHE_API_KEY" \
-H "Accept: application/json"Without as_of_date the series reflects the current best understanding of history, which is the correct answer to a different question. For a whole statement rather than one metric, GET /v1/edgar/as-of/{date}/financials/{cik} returns the snapshot with its snapshot_hash.
What you need
Any plan can query any as-of date. The Free plan covers any 25 companies you choose; Developer and above cover the full corpus of 17,000 companies, including delisted and acquired registrants. Universe point-in-time snapshots (up to 50 CIKs per request) start at Growth.
Current prices and limits are on the pricing page.
Documentation
How does Arche decide what was knowable on a date?
Arche resolves an as-of query using the time the SEC accepted each filing. A statement whose filing had not been accepted by the query date is not returned, and a restatement filed later does not replace the original for dates before it was filed.
Can I backtest on the Free plan?
Yes, for up to 25 companies you choose. Point-in-time retrieval and deterministic replay are on every plan; the paid plans open the full corpus and add throughput.
Does Arche include companies that no longer file?
Yes. Delisted, acquired and taken-private registrants are retained and stay queryable, so a backtest universe is not limited to survivors.
Blog
Why Deterministic Financial Data Matters
What breaks in backtests, models and audits when filing-derived history is silently rewritten.
Blog
How Arche Handles Financial Restatements
Why Arche records a restatement as a new version instead of replacing the original figures.
AI agents and LLM tool use
Give an AI agent SEC financial statements it can cite: Arche runs an MCP server whose tools call the same routes as the REST API, with accession numbers on every figure. Free plan included.
Quantitative research on restatements
Study restatements directly: Arche keeps every filed version of a statement, computes per-metric deltas, classifies materiality and pushes a webhook when a filer restates.
Fintech and financial applications
A REST API for SEC financial statements to build products on: 81 documented endpoints, a typed Python SDK, decimal-string values, provenance on every figure and published per-organization pricing.