Point-in-time financial data

The number
that moved
markets.

Not the one revised three years later.
Not the one that rewrote history.
The one the market actually saw.

BEA Release · Q3 2008 GDP · Revision History
Oct 30, 2008
−0.3%as released
Nov 25, 2008
−0.3%−0.5%revised
Dec 23, 2008
−0.5%−6.3%revised
Jul 29, 2011
−6.3%−8.9%final
Most APIs return −8.9% for 2008-Q3. Vintl returns the exact vintage
available on any date you specify. import vintl · as_of="2008-10-30"
GDP Q3 2008·−0.3%−8.9%NFP Jan 2020·+225K+256KPCE Dec 2021·5.8%6.1%Retail Sales Feb 2023·−0.4%−0.2%UNRATE Apr 2020·14.7%14.4%ISM Mfg Oct 2019·48.348.3GDP Q3 2008·−0.3%−8.9%NFP Jan 2020·+225K+256KPCE Dec 2021·5.8%6.1%Retail Sales Feb 2023·−0.4%−0.2%UNRATE Apr 2020·14.7%14.4%ISM Mfg Oct 2019·48.348.3

History is being
quietly rewritten.

Economic data is revised. Sometimes for months. Sometimes for years. Every strategy backtested against a live feed is backtested against a lie — a future the market never saw.

Vintl stores every release, every revision, with its original timestamp. You get the exact vintage your model would have consumed on any date in history.

Other APIslook-ahead bias
# What you think you're backtesting with:
gdp = fred.get("GDP", date="2008-10-01")
# Returns: -8.9% ← the 2011 revision
# Your model saw a number that didn't exist yet.
Vintltrue vintage
# What the market actually knew on that date:
gdp = vintl.get("GDP",
  date="2008-10-01",
  as_of="2008-10-30")
# Returns: -0.3% ← the first release

We pull our macro signals from Vintl. It's the only way to run a backtest that means anything.

Quant PM, Global macro fund

Vintl's as_of parameter catches the look-ahead bias that FRED misses. It's the first thing I check now.

Research analyst, systematic desk

Check the Vintl docs for the as_of parameter. Three lines of code, zero contamination.

Senior quant engineer

One parameter
changes everything.

$ pip install vintl
backtest.py
import vintl

# Initialize with your key
v = vintl.Client(api_key="vntl_live_...")

# Replay history exactly as it was seen
for date in backtest_dates:
    obs = v.get(
        series="UNRATE",
        as_of=date   # ← the vintage
    )

    # obs.value is what was known then.
    # Not what we know now.
    signal = my_model(obs.value)

# Pandas-native helper
df = v.series("UNRATE").vintage("2020-04-01").to_frame()
response.json
{
  "series": "UNRATE",
  "observation_date":
      "2020-03-01",
  "as_of": "2020-04-03",

  // The vintage value
  "value": 4.4,

  // Full revision history
  "revisions": [
    {
      "released": "2020-04-03",
      "value": 4.4
    }
  ],

  "look_ahead_delta": 0.0
}

The GDP no one
knew was wrong.

Q3 2008. The quarter Lehman collapsed. The BEA initially released GDP at −0.3%. Markets priced on that number. Models trained on it.

By December, it was −6.3%. By 2011, −8.9%. Three years of revisions, silently overwriting what the market actually saw.

Every model trained on today's value was trained on a number no one had yet. Vintl preserves every vintage.

Oct 30, 2008 · First release
−0.3%
GDP Growth, Q3 2008
vintl as_of: 2008-10-30
Nov 25, 2008 · Second estimate
−0.5%
GDP Growth, Q3 2008
revised from −0.3%
Dec 23, 2008 · Third estimate
−6.3%
GDP Growth, Q3 2008
revised from −0.5%
Jul 29, 2011 · Comprehensive revision
−8.9%
GDP Growth, Q3 2008 — current value
what most APIs return
01
Every vintage,
archived.

Every release, every revision, every correction — stored with its publication timestamp. The dataset doesn't change when the government rewrites history.

point-in-time
02
Bias-free
backtesting.

The as_of parameter reconstructs the exact information set available to any market participant on any date. Tested against reality, not revisionism.

look-ahead clean
03
Developer-first
by design.

SDKs for Python, R, TypeScript. OpenAPI spec. Pandas-native responses. Streaming vintage replay for real-time simulation.

api-first
04
Macro
and beyond.

Fed data, BLS, Census, EDGAR filings. The vintage concept extends to any domain where revisions occur — and they always do.

30,000+ series
05
Institutional
grade.

99.97% uptime SLA. Sub-100ms p99. Full audit trail for compliance. Used by quant funds and macro desks that can't afford surprises.

enterprise-ready
06
Transparent
pricing.

Pay for what you call. No seat licenses. No data tiers. No negotiated contracts. Free tier for exploration, scales to institutional volume.

usage-based
get started

Your backtest
deserves the truth.

api.macrodata.dev · docs.macrodata.dev · @vintl