POINT-IN-TIME RESEARCH TERMINAL · MCP
A research terminal that costs $0 and won't lie to you about your Sharpe.
One command. Nothing to clone.
claude mcp add vintage -s user -- uvx vintage-mcpAdd to claude_desktop_config.json, then restart the app.
{
"mcpServers": {
"vintage": {
"command": "uvx",
"args": ["vintage-mcp"]
}
}
}Add to ~/.cursor/mcp.json.
{
"mcpServers": {
"vintage": {
"command": "uvx",
"args": ["vintage-mcp"]
}
}
}Settings → Connectors → Developer mode. Needs a hosted URL — run vintage behind HTTPS and point the connector at it.
uvx vintage-mcp --transport streamable-http --port 8000Needs uv.
Prefer pip? pip install vintage-mcp, then use vintage as the command.
No API keys required for anything above.
A century of market history, five primary sources, zero API keys. The Fama-French factors start in July 1926 and the SEC filing stream runs to this morning — Vintage covers both ends from the same six verbs.
Three of the five are the primary source, not a reseller and not a scraper: the filings come from the regulator that receives them, the macro series come from the central bank that publishes them, and the factors come from the university that computes them. Vintage hosts none of it — it connects, normalizes, and preserves vintage.
Every concept every US filer has ever tagged, with the accession number and filing date attached to each figure. Restatements arrive as separate rows, not as an overwrite.
8-K, 10-K, 10-Q, Form 4 and 13D/G, timestamped to the second EDGAR accepted them. This is the clock the rest of the market runs on.
Federal Reserve Bank of St. Louis. ALFRED is the rare archive that keeps first releases, so you can ask what CPI looked like that morning rather than after the revisions.
Dartmouth. FF3, FF5, momentum, daily FF3, and the 49 industry portfolios — the same series the papers are written against, from where the authors publish them.
Daily OHLCV and adjusted close, decades deep. Labelled honestly: adjustments are applied retroactively, so price history is not fully point-in-time and Vintage says so on every row.
Counts current as of August 2026. Each upstream source keeps its own terms — Vintage redistributes none of it.
What period the number describes. Apple's Q4 2019 assets describe September 2019.
When it first became public. You could not have traded on it until the 10-K landed in October.
The backtest panel is indexed on known_at, so any slice of it is
automatically point-in-time. There is no flag to turn that off. Sources that cannot supply an
honest known_at are flagged UNKNOWN_VINTAGE rather than given a made-up date.
The number is true in December. It gets published in February.
The company says "oops, wrong" and changes last year's number.
The government keeps fixing old jobs and inflation figures, for years.
Dead companies get deleted. Only the winners are still listed.
Today's S&P 500 list is not the list from 2005.
Splits and dividends silently rewrite every price before them.
All six say the same thing: the data you have today is not what people saw back then. Point-in-time means showing only what was already public that day — and Vintage enforces it in the panel index rather than trusting you to remember.
| What you ask for | What a normal API returns | What Vintage returns |
|---|---|---|
| 2019 revenue, asked today | the restated figure | both, with the date each was filed |
| A universe, as of 2012 | today's survivors | a warning that it is doing the same, loudly |
| A Sharpe, on your 41st idea | 2.14 | 0.09 after deflation |
Vintage implements the backtest-validation literature rather than inventing its own statistics. Execution realism is a different problem, already solved by LEAN and Nautilus Trader — Vintage runs before that, where most ideas should die.
| Technique | Source | Status |
|---|---|---|
Point-in-time panel, indexed on known_at | structural, no flag to disable | shipped |
| Costs charged on turnover, always | no zero-cost mode exists | shipped |
| Deflated Sharpe Ratio | Bailey & López de Prado (2014) | shipped |
| Session trial ledger feeding the deflation | Bailey & López de Prado (2014) | shipped |
| Probability of Backtest Overfitting, via CSCV | Bailey, Borwein, López de Prado & Zhu (2017) | planned |
| Purged k-fold CV with embargo | Advances in Financial Machine Learning, ch. 7 | planned |
| Combinatorial purged cross-validation | Advances in Financial Machine Learning, ch. 12 | planned |
| Minimum Backtest Length | Bailey, Borwein, López de Prado & Zhu (2014) | planned |
| Newey–West adjustment for autocorrelated returns | Newey & West (1987) | planned |
| Square-root market impact | Almgren et al. (2005) | planned |
Citations are references, not endorsements — none of these authors is affiliated
with Vintage. Anything marked planned is not in the code yet, and the
backtest response says so at runtime rather than in the footnotes.
| resolve | Any identifier → the entity key everything else accepts |
| discover | Plain-English search across every source's catalog |
| fetch | The workhorse. Any field, any source, with as_of |
| events | Filing timeline with exact public timestamps |
| backtest | Cross-sectional signal → returns, costs, honesty report |
| benchmark | Your returns → correlation and alpha vs published factors |
Source is a parameter, never a separate tool. Twenty more sources adds zero tools.