Vintage について
Vintageは、複数のWeb金融データソースを正規化し、定量調査やバックテストに使える形で提供します。公開時点を保持した履歴検索に対応し、MCPサーバーとPythonライブラリの両方で利用できます。
主な機能
- 01複数の金融データソースを統一
- 02初回公開日に基づくデータ抽出
- 03財務情報、価格、マクロデータの取得
- 04リスク指標を含むバックテスト
- 05公開ファクターとのリターン比較
活用シーン
- 01過去の特定日に利用可能だった財務データの再現
- 02企業の財務情報の修正履歴の確認
- 03取引コスト込みの横断シグナル検証
- 04戦略リターンと公開ファクターの比較
MCP 対応
Vintageは金融データの取得、イベント、バックテスト、ベンチマーク比較のツールをMCPクライアントに公開します。外部データソースに接続して結果を正規化し、データ自体はホストしません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx vintage-mcpVINTAGE_USER_AGENTContact string sent to SEC EDGAR, which asks for a real name and email. Format: 'Your Name [email protected]'.FRED_API_KEYシークレットFree key from https://fredaccount.stlouisfed.org/apikeys. Unlocks 800k macro series with ALFRED first-release vintages. Everything else works without it.VINTAGE_CACHE_DIRWhere the gzipped response cache lives. Defaults to ~/.cache/vintage.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
7掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| identifier | string | はい |
詳細
無料の金融データは存在しますが、形もばらばらな20種類のAPIに散在しています。誰もが同じ接着コードを雑に作り直し、気づかないうちに、改訂後の数値や生存者バイアスのあるユニバースを使ってバックテストを行うことになります。
Vintageは、MCP経由で提供される、一度だけ書けばよい接着コードです。データは保持しません。ウェブ上の構造化された金融データに接続し、正規化して提供します。
コストは0ドル、シャープレシオをごまかさないリサーチターミナルです。
rezasoleymanifar.github.io/vintage
利用例
4つのシーンのうち2つ — サイトで全編をご覧ください。
インストール
Claude Code
claude mcp add vintage -s user -- uvx vintage-mcp
Claude Desktop/任意のMCPクライアント — 設定ファイルに追加します:
{
"mcpServers": {
"vintage": {
"command": "uvx",
"args": ["vintage-mcp"]
}
}
}
Claude Desktopの設定ファイルは、%APPDATA%\Claude\claude_desktop_config.json(Windows)または~/Library/Application Support/Claude/claude_desktop_config.json(macOS)にあります。追加後、アプリを再起動してください。MCPサーバーは起動時に一度だけ読み込まれます。
uvが必要です。pipを使う場合は、pip install vintage-mcpを実行し、コマンドをvintageに設定してください。
任意の設定
設定なしでもすべて動作します。以下を設定すると、より便利に使えます:
| 変数 | 用途 |
|---|---|
VINTAGE_USER_AGENT | SEC EDGARでは実際の連絡先が必要です。"Your Name [email protected]"を指定します。 |
FRED_API_KEY | 無料のキー — 初回公表時点のビンテージを含む80万件のマクロ系列を利用できます。 |
VINTAGE_CACHE_DIR | デフォルトは~/.cache/vintageです。 |
同じ設定ブロックの"env"に設定します:
{
"mcpServers": {
"vintage": {
"command": "uvx",
"args": ["vintage-mcp"],
"env": {
"VINTAGE_USER_AGENT": "Jane Quant [email protected]",
"FRED_API_KEY": "..."
}
}
}
}
キーはこのファイル内に保持されます。サーバープロセスが読み取り、モデルに渡されたり、会話に書き込まれたりすることはありません。
ライブラリとして使う
サーバーを介さずに、同じデータを使えます。すべて同期処理で、Jupyterのようにすでにイベントループが動いている環境でも、pandasを返します。
import vintage as v
v.prices("AAPL", start="2020-01-01") # daily prices, with known_at
v.panel(["AAPL", "MSFT", "JNJ"]) # dates x tickers
v.fundamentals("AAPL", "us-gaap:Assets", as_of="2020-01-01")
v.restatements("AAPL", "us-gaap:Assets") # periods reported twice, differently
v.factors("ff3") # Ken French, wide
v.macro("DGS10", as_of="2008-09-15") # ALFRED first-release vintage
v.claim("Mom12m") # what the paper claimed
v.claims(price_only=True) # the 56 replicable with free data
v.crypto("BTC-USD")
v.short_volume("AAPL")
v.sentiment("wallstreetbets")
known_atは、見やすさのために削除せず、すべてのデータフレームの列として保持されます。この情報を失うと、特定時点のデータセットが気づかないうちに通常のデータセットになってしまいます。as_ofを渡すと、その日付より後に公開された行は、表示される前に除外されます。
試してみる
インストールしたら、アシスタントに次のように尋ねてみてください。
「2020年1月時点で、Appleの総資産はいくらでしたか? その後、修正再表示されていますか?」
「2010年以降のダウ30銘柄で、12-1モメンタムをバックテストしてください。」
「今度は短期リバーサルを試してください。アルファは維持されましたか?」
重要なのは3つ目の質問です。すべての回答で、注目されるシャープレシオに加えて、ホールドアウト期間における最悪の推移も示されます。
2つの日付
すべての値には、次の2つの日付が付いています。
observed_at— 数値が表す期間known_at— その情報が初めて公開された時点
バックテストで使用できるのは、取引日より前に known_at が設定された行だけです。これは設定ではなく、構造上そうなっています。パネルは known_at をインデックスとしているため、どのように切り出しても自動的にポイント・イン・タイムになります。これを無効にするフラグはありません。
正確な known_at を提供できないソースには、日付を捏造して付与するのではなく、UNKNOWN_VINTAGE のフラグを付けます。
昨日のデータが気づかれないまま変わる6つの理由
- ラグ — 数値は12月時点のものでも、公開されるのは2月です。
- 修正再表示 — 企業が「間違っていました」と認め、昨年の数値を変更します。
- 改定 — 政府は過去の雇用者数やインフレ率を何年にもわたって修正し続けます。
- 生存者バイアス — 倒産した企業が削除され、勝ち残った企業だけが上場企業として残ります。
- 構成銘柄 — 今日のS&P 500の銘柄リストは、2005年当時のリストとは異なります。
- 価格調整 — 株式分割や配当によって、それ以前のすべての価格がひそかに書き換えられます。
この6つが示すことは同じです。今日手にしているデータは、当時の人々が見ていたデータとは異なります。
6つの動詞
ソースはパラメーターであり、独立したツールではありません。ソースを20個追加しても、ツールの数は増えません。
| 動詞 | 機能 |
|---|---|
resolve | あらゆる識別子を、他のすべての機能で受け入れられるエンティティキーに変換します |
discover | すべてのソースのカタログを横断して、平易な英語で検索します |
fetch | 中核となる機能です。任意のフィールドを、任意のソースから as_of を指定して取得します |
events | 正確な公開タイムスタンプ付きの提出書類の時系列を取得します |
backtest | クロスセクショナルなシグナルから、リターン、コスト、ホールドアウト期間の推移を算出します |
benchmark | リターンから、公開ファクターに対する相関とアルファを算出します |
さらに、キャッシュサイズ、キー、これまでに試したスペック数を確認するための status もあります。
バックテストの方法論
- Deflated Sharpe(Bailey & López de Prado, 2014)。このセッションで試したすべての仕様を考慮します
- コストは常に売買回転率に対して課金されます。コストなしモードはありません
- ユニバースは現在存在する銘柄のリストであるため、サバイバーシップバイアスについて常に警告を表示します
Vintage は独自の統計量を考案するのではなく、バックテスト検証に関する文献を実装しています。執行のリアリティは別の問題であり、すでに LEAN と Nautilus Trader によって解決されています。Vintage はその前の段階、つまりほとんどのアイデアが淘汰されるべき段階で動作します。
| 手法 | 出典 | 状態 |
|---|---|---|
known_at にインデックスされたポイント・イン・タイム・パネル | 構造上の仕様であり、無効化するフラグはありません | ✅ 実装済み |
| 売買回転率に対するコスト課金(常時) | コストなしモードはありません | ✅ 実装済み |
| Deflated Sharpe Ratio | Bailey & López de Prado (2014) | ✅ 実装済み |
| デフレーションに用いるセッション試行台帳 | Bailey & López de Prado (2014) | ✅ 実装済み |
| CSCV によるバックテスト過剰適合確率 | Bailey, Borwein, López de Prado & Zhu (2017) | ⏳ 実装予定 |
| エンバーゴ付きパージド k 分割 CV | Advances in Financial Machine Learning, ch. 7 | ⏳ 実装予定 |
| 組み合わせパージド交差検証 | Advances in Financial Machine Learning, ch. 12 | ⏳ 実装予定 |
| 最小バックテスト期間 | Bailey, Borwein, López de Prado & Zhu (2014) | ⏳ 実装予定 |
| 自己相関リターンに対する Newey–West 補正 | Newey & West (1987) | ⏳ 実装予定 |
| 平方根型のマーケットインパクト | Almgren et al. (2005) | ⏳ 実装予定 |
引用は参考文献であり、推奨を意味するものではありません。これらの著者はいずれも Vintage とは関係ありません。実装予定と記載された機能はまだコードに含まれておらず、脚注ではなく実行時に backtest のレスポンスでその旨を伝えます。
データの出所
| 100 年分、1926年7月から今朝まで | 331 主張付きで公表されたアノマリー | 18 データソース、6つの動詞 | 10,398 ティッカーに対応付けられた米国の申告企業 | 800k+ ビンテージ情報付きのマクロ時系列 |
市場の歴史は1世紀分、データソースは22件、そのうち20件はキーをまったく必要としません。 Fama-French ファクターは1926年7月から始まり、SEC の申告データは今朝まで続いています。Vintage は同じ6つの動詞で、その両端をカバーします。
これらのデータの大半は一次ソースから取得しています。再販業者でもスクレイパーでもありません。申告書はそれを受け取る規制当局から、マクロ時系列はそれを公表する中央銀行から、ファクターはそれを算出する大学から取得しています。 @絵文字をすべて削除し、各ソースのアイコン付きリストだけを出力してください。
| ソース | 信頼性 | 対象 | キー | 時点情報 |
|---|---|---|---|---|
| SEC EDGAR XBRL | 一次 · 米国規制当局 | 米国のすべての提出者がタグ付けしたすべての概念を対象とし、各数値に accession number と提出日が付いています。修正再表示は上書きではなく、行として追加されます。 | なし | ✅ ネイティブの提出日 |
| SEC filings stream | 一次 · 米国規制当局 | 8-K、10-K、10-Q、Form 4、13D/G — EDGAR が受理した時刻を秒単位で記録しています。 | なし | ✅ 正確なタイムスタンプ |
| FRED / ALFRED | 一次 · 中央銀行 | セントルイス連邦準備銀行。ALFRED は初回発表値を保持しているため、「あの朝」の CPI がどのような値だったかを確認できます。 | 無料 | ✅ 初回発表時点のデータ |
| Ken French Data Library | 一次 · 学術機関 | ダートマス大学。FF3、FF5、モメンタム、日次 FF3、49 業種ポートフォリオを、著者が公開した場所から取得できます。 | なし | ❌ リリースごとに再構築 |
| Open Source Asset Pricing | 一次 · 学術機関 | Chen & Zimmermann。公表された 331 の予測指標について、主張されるリターン、t 値、サンプル期間、実装可能な定義を収録しています。openap:Mom12m は Jegadeesh-Titman の 1.31%/月、t=3.74 を返します。 | なし | ✅ 主張の公表年を記録 |
| SEC Form 13F | 一次 · 米国規制当局 | 1 億ドル超を運用するすべてのマネージャーの機関投資家保有株を対象としています。四半期末と提出日の間には最大 45 日の差があり、両方を保持しているため、as_of は実際に公表されていたポートフォリオを返します。 | なし | ✅ 四半期末と提出日 |
| SEC Form 25 | 一次 · 米国規制当局 | 記録されているすべての上場廃止 — 11,614 社にわたる 36,830 件の提出書類を収録しています。現在も存在する企業名だけで構築されたユニバースを補正できます。 | なし | ✅ 提出日を記録し、改訂なし |
| SEC XBRL frames | 一次 · 米国規制当局 | 1 回の呼び出しで、すべての提出者について 1 つの概念を取得できます。840 KB で 6,289 社を収録しており、横断的なソートに必要な形式です。 | なし | ❌ accession は含みますが、その日付は含みません |
| US Treasury | 一次 · 米国政府 | 1 か月から 30 年までの 14 の年限を網羅したパー利回り曲線を、各営業日に公開しています。 | なし | ✅ 改訂なし |
| CFTC | 一次 · 米国規制当局 | トレーダー区分別の火曜日時点の建玉を、翌金曜日に公表する建玉明細です。公表までの遅れも保持しています。 | なし | ✅ known_at に遅れを保持 |
| Bureau of Labor Statistics | 一次 · 米国機関 | 品目層別の CPI、雇用者数、JOLTS、賃金、生産性を対象としています。厳選された一覧ではなく、任意の系列 ID を指定できます。 | 任意 | ❌ 公表日を提供しません |
| Bureau of Economic Analysis | 一次 · 米国機関 | 国民経済計算です。1 回の呼び出しで、系列ごとではなく NIPA 表のすべての項目を取得できます。 | 無料 | ❌ 現在の推計値のみ |
| European Central Bank | 一次 · 中央銀行 | 1999 年以降の日次 FX 参照レートに加え、2 つのユーロレッグから算出したクロスレートを導出値として明示して提供します。 | なし | ✅ 公表は 1 回のみ、改訂なし |
| CBOE | 一次 · 取引所 | VIX と、タームストラクチャー、VVIX、SKEW を含むボラティリティ関連指数一式を、1990 年まで遡って提供します。 | なし | ✅ 指数水準は改訂されません |
| FINRA | 一次 · 米国規制当局 | 銘柄ごとの日次空売り出来高を、各取引終了後に公表し、改訂しません。空売りの「出来高」であり、空売り残高ではありません。 | なし | ✅ 改訂なし |
| Coinbase Exchange | 取引所 | 上場しているすべてのペアの暗号資産 OHLCV。 | なし | ✅ 取引データは再表示されません |
| ApeWisdom | コミュニティ | 約 15 のサブレディットにおけるフォーラムの言及ランキングです。上流には履歴がないため、Vintage が取得した時点で行にタイムスタンプが付与されます。 | なし | ⏩ 記録した日以降のみ |
| Yahoo Finance | サードパーティ | 数十年分の日次 OHLCV と調整後終値を提供します。 | なし | ⚠️ 遡及的に調整され、各行にフラグが付与されます |
COVERAGE.md はフィールドごとの完全なカタログです — すべてのプレフィックス、データセット、シグナルと、実測されたカバレッジ期間を掲載しています。レジストリから生成されるため、コードとの不整合は起こりません。
件数は 2026 年 8 月時点のものです。Vintage はこれらのデータを再配布しません — 各上流ソースの利用条件が適用されます。
キャッシュ
~/.cache/vintage に保存される gzip 圧縮 JSON で、データの変動しやすさに応じて階層化されています。終了した期間のデータは再取得せず、学術データセットは毎月、最新のファンダメンタルズデータは毎日、価格データは取引セッションごとに更新されます。1 時間の会話で、上流への呼び出しはおよそ 20 回です。
既知の不足点
不適切な代替品を提供するよりも、率直に記載します。
データ:
- サバイバーシップ — 対象は現在上場している銘柄のみです。Form 25 による上場廃止銘柄への対応は次の実装項目で、それまではバックテスターが警告を表示します。
- アナリスト予想 — 無料で利用できるデータソースはありません。
- 過去のオプションチェーン — どこでも有料です。
- 時点ごとの指数構成銘柄 — S&P と MSCI がライセンスを提供しています。
エンジン — バックテスターはベクトル化されたクロスセクション方式であり、イベント駆動型シミュレーターより一段劣ります。
- パージもエンバーゴもありません — ラベル期間が重複すると、訓練データとテストデータの分割をまたいで情報が漏れる可能性があります(López de Prado, AFML 第 7 章)。デフレーションは選択バイアスを検出しますが、情報漏洩は検出しません。
- マーケットインパクトはありません — コストは売買回転率に対する一律の料金なので、取引額が大きい場合、結果は楽観的になります。
- PBO はありません — デフレート・シャープレシオは多重検定に対応しますが、組み合わせ対称クロスバリデーションによるバックテスト過剰適合確率(Probability of Backtest Overfitting)のほうが、より強力な検定になります。
- 試行回数はセッション単位で、リセット可能です —
reset_trials=Trueを指定すると、会話の途中で試行回数がゼロになります。これは意図的な仕様です。補正が適用されるのは、1 つの質問に対する繰り返しの試行だけであり、エンジンはそれと無関係な試行を区別できません。 - シャープレシオは年率換算ではなく観測値ごとです — デフレーションの定義上、この頻度を使用しており、応答でもそのように説明しています。
開発
git clone https://github.com/RezaSoleymanifar/vintage
cd vintage
uv sync --group dev
uv run pytest
smoke_test.py は、実際のデータソースに対して 6 つすべての動詞を実行します。リリース前に役立ちますが、ネットワーク接続が必要です。
ライセンス
MIT。Vintage はデータを再配布しません。各上流データソースには、それぞれ独自の利用規約があります。
mcp-name: io.github.RezaSoleymanifar/vintage
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

