mcpField
Q
Quant Research MCP

Quant Research MCP

ローカル
github.com/FlawlessByte金融データ020 週間前に更新

Quant Research MCP について

Quant Research MCPは、トレーダーやエージェント向けの読み取り専用リサーチサーバーです。論文に基づく手法と再現可能な市場分析を提供し、LLMを使わない決定論的なエントリー評価を備えています。

主な機能

  1. 01論文に基づく手法の登録簿
  2. 02銘柄スクリーニングと指標計算
  3. 03相場レジームとセットアップ分析
  4. 04イン・アウトサンプル別のバックテスト
  5. 05ポートフォリオリスクとイベント確認
  6. 06決定論的なエントリー評価と計画

活用シーン

  1. 01デイトレード候補の銘柄選定
  2. 02過去データによる手法の検証
  3. 03候補取引前のポートフォリオリスク確認
  4. 04ニュースセンチメントとイベントリスクを加味した評価

MCP 対応

MCPクライアントに、手法検索、市場分析、リスク確認、意思決定スコアリングなど13種類の定量分析ツールを公開します。読み取り専用で、注文は行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"flawlessbyte-quant-research": {
"command": "uvx",
"args": [
"quant-research-mcp"
]
}
}
}
起動コマンドuvx quant-research-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiquant-research-mcp0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

quant_research_mcp

CI License: MIT Python MCP

論文に裏付けられた定量取引手法のレジストリと、決定論的なLLM不使用の意思決定ヘルパーを提供するMCP サーバーです。サーバーは再現可能な計算(スクリーニング、インジケーター、レジーム検出、手法シグナル、スコア付きエントリー判断)を提供し、呼び出し元のエージェントは判断(例:見出しを読み取ってセンチメントシグナルにすること)を担います。claude -pも、サブプロセスも、サーバー内のLLMもありません。

⚠️ 金融アドバイスではありません。 これは読み取り専用の調査・教育用ツールです。定量計算のみを行い、注文は一切発注しません。出力内容は投資アドバイスでも推奨でもありません。市場データには遅延や誤りがある場合があり、バックテストは予測ではありません。また、取引には大きな損失リスクが伴います。リスクにさらす資金については、すべてご自身の責任となります。 保証なしの「現状有姿」で提供されます。詳細はLICENSEをご覧ください。

これが作られた理由

稼働実績のあるデイトレードパイプラインを、組み合わせ可能なMCP ツールとして再構成したもので、目標は2つあります。

  1. 将来の論文にも拡張できます。 各戦略はレジストリに登録されたTradingMethodです。新しい論文の手法を追加するには、モジュールを1つ置き、register(...)を呼び出してインポートします。それ以外の変更は不要です。
  2. 意思決定は生成的ではなく、科学的です。 以前のパイプラインでは、エントリー判定にLLM呼び出しを使っていました。ここではそれを、リスクリワード、レジームの強さ、出来高、RSIの位置、ATRで正規化したストップの質を組み合わせて、監査可能なスコアを出す純粋関数quant_score_decisionに置き換えています。同じ入力なら、同じ出力になります。

ツール(13)

ツールネットワーク用途
quant_list_methodsなし登録済み手法(キー、論文、時間枠、レジーム)を一覧表示します。
quant_describe_methodなし1つの手法の詳細と引用情報を表示します。
quant_screen_universeありギャップ/相対出来高/ATR%でティッカーを順位付けします。
quant_compute_indicatorsありティッカーのEMA9/20、RSI、ATR、VWAP、ハースト指数を計算します。
quant_detect_regimeありハースト指数からTRENDING/MEAN_REVERTING/RANDOM_WALKを判定します。
quant_analyze_setupありティッカーごとに手法を実行し、シグナル+エントリー/ストップ/ターゲット(HTFコンテキストを含む)を返します。
quant_analyze_universeありユニバース向け手法を実行します。モメンタム順位付けやペアのスプレッドなどが対象です。
quant_backtest_methodあり手法を検証します:過去データに対して手法自身のanalyze()を再実行し、勝率、期待値、ドローダウン、IS/OOSの各期間の結果を返します。
quant_check_eventsあり次回の決算発表(までの日数)、配当落ち日を確認し、二値イベントのリスクを調べます。
quant_portfolio_riskありステートレスなリスク量/相関/集中度チェックと、候補の判定を行います。
quant_market_contextありSPY/QQQ/IWM、VIX、順位付けされた11セクター、リスクオン/オフの市場の広がりを確認します。
quant_score_decisionなし意思決定ヘルパー:セットアップ(+センチメント、決算発表、リスク量)から、スコア、判定、サイズ、時間枠を考慮した実行プランを返します。決定論的です。
quant_fetch_newsあり最近の見出しを取得します(データのみ。センチメントの判断はエージェントが行います)。

すべてのツールは読み取り専用で、response_format: markdown | jsonに対応しています。

ワークフロー

デイトレード

quant_market_context                  # tape read: risk-on/off, sectors
  → quant_screen_universe             # find movers
  → quant_analyze_setup               # hurst_regime_orb on the top name
  → quant_check_events + quant_fetch_news   # binary risk + agent sentiment
  → quant_portfolio_risk              # heat/correlation vs your open book
  → quant_score_decision(setup, news_sentiment, days_to_earnings,
                         portfolio_heat_pct)

スイング(数日) — quant_analyze_setup/quant_analyze_universe から rsi2_reversion、pairs_cointegration を実行します。ここでは決算による除外が最も重要です (quant_check_events → days_to_earnings)。

ポジション(数週間以上) — ティッカーごとに donchian_trend、ユニバース全体で xs_momentum を使用します。毎月再ランク付けし、執行プランに従って毎週ストップを見直します。

手法を信頼する前に:対象のティッカーと期間で quant_backtest_method を実行します。手法独自のシグナルロジックをコスト込みで再現し、インサンプルとアウトオブサンプルの期間を分けて報告するため、パフォーマンスの劣化を確認できます。

ナラティブはエージェントが作成し、数値はサーバーが保証します。

判断ヘルパー(quant_score_decision)

純粋関数です。複合スコアの重みは config.DECISION_WEIGHTS で指定します。

  • reward_risk — 実現したリスクリワードと目標倍率の比較。
  • regime_strength — ランダムウォークからの距離を示す、スケーリングされた |Hurst − 0.5|。
  • volume_confirmation — 相対出来高と下限値の比較。
  • momentum_position — 方向に対して健全な範囲内にあるRSI(過熱していない状態)。
  • stop_quality — 日次ATRで正規化したストップ幅(ノイズに近すぎるストップは減点)。

オプションの news_sentiment(エージェントが算出)は、スコアと一致する場合は加点し、 信頼度が0.5以上で矛盾する場合は除外します。出力には要因ごとの内訳、固定比率方式の position_size(ノイズに近すぎるストップに対する減額を含む)、および機械的に導出した execution_plan(エントリートリガー、注文タイプ、ストップの段階設定、利益確定、 時間ベースのストップ、中止条件)が含まれます。

同梱メソッド(5)

キー時間軸論文
hurst_regime_orb日中arXiv:2205.11122 — ハースト・レジーム → ORB/VWAPフェード
rsi2_reversionスイングConnors & Alvarez 2009 — 200日SMAを上回るRSI(2)の押し目
pairs_cointegrationスイングGatev et al. 2006 — Engle-GrangerのスプレッドZスコア
donchian_trendポジションFaith、Turtle Rules、Moskowitz et al. 2012 — 55日ブレイクアウト、20日/ATRトレール
xs_momentumポジションJegadeesh & Titman 1993 — 12-1のクロスセクショナル・モメンタム、上位N銘柄のポートフォリオ

データプロバイダー

デフォルトはyfinance(無料、約15分遅延)です。データレイヤーはプロバイダーインターフェース (quant_research_mcp/providers/)の背後にあります。Alpaca/Polygon/IBKR用に DataProviderプロトコルを実装し、ファクトリーを登録してから、 QUANT_DATA_PROVIDER=<name>を指定して実行してください。すべての呼び出しはプロセス内で TTLキャッシュされます(日次データは15分、日中データは60秒、ニュースは5分、イベント/セクターは1時間)。

今後、論文を追加する

# quant_research_mcp/methods/my_paper.py
from . import register
from .base import TradingMethod, TradeSetup

def analyze(daily, session, context) -> TradeSetup:
    ...  # compute signal, entry, stop, target

register(TradingMethod(
    key="my_paper_method",
    name="My Method",
    paper="Author et al., Title",
    paper_url="https://arxiv.org/abs/...",
    regime_applicability="TRENDING",
    description="One paragraph on the mechanics.",
    analyze=analyze,
))

次に、methods/__init__.pyにfrom . import my_paperを追加します。これで quant_list_methodsに表示され、quant_analyze_setup(method_key=...)から実行できるようになります。

クイックスタート(Makefile)

make install      # create venv + install deps (uv sync)
make smoke        # import server, list the 13 tools (no network)
make run          # run the server over stdio
make help         # list every target
シェルバイナリとしてインストール
make install-cli              # installs `quant-research-mcp` onto your PATH (uv tool)
quant-research-mcp            # runs the server over stdio from anywhere

インストール後にコマンドが見つからない場合は、uv tool update-shellを実行してシェルを再起動してください (uvのツール用バイナリディレクトリ。通常は~/.local/binがPATHに含まれている必要があります)。

ターゲット内容
make installuv sync — 仮想環境と依存関係をセットアップ
make install-cliquant-research-mcpバイナリをPATHにインストール
make uninstall-cliバイナリを削除
make devインストールと、リント用ruffのセットアップ
make runMCP サーバーを実行(stdio)
make smokeインポートとツール一覧の表示(ネットワーク接続なし)
make testpytestスイートを実行(ネットワーク接続なし)
make inspectMCP Inspectorを起動
make checkテスト、リント、LLM/サブプロセス呼び出しがないことの確認
make registerstdioクライアント設定のJSONを出力
make claude-addローカルクローンをClaude Codeに登録(ユーザースコープ)
make claude-removeClaude Codeから削除
make builddist/にsdistとwheelをビルド
make docker-buildDockerイメージをローカルでビルド
make mcpbClaude Desktop用の.mcpbバンドルをパッケージ化
make cleanキャッシュ、仮想環境、ビルド成果物を削除

インストール

どの方法でも同じ stdio サーバーが実行されます。環境に合った方法を選んでください。

方法コマンド必要なもの
GitHub から uvx(クローン不要)uvx --from git+https://github.com/FlawlessByte/quant-research-mcp quant-research-mcpuv
PyPIuvx quant-research-mcp · pipx install quant-research-mcpuv / pipx
Dockerdocker run -i --rm ghcr.io/flawlessbyte/quant-research-mcpDocker
ソースからgit clone … && cd quant-research-mcp && make installgit + uv
Claude Desktop最新リリースから .mcpb をインストールClaude Desktop

PyPI と Docker イメージはタグ付きリリースで公開されます。最初の リリースまでは、GitHub から uvx または ソースから の行を使用してください。

Claude Code での使用

最も手軽な方法です。クローンせず、GitHub から直接実行します。

claude mcp add quant_research -- \
  uvx --from git+https://github.com/FlawlessByte/quant-research-mcp quant-research-mcp

PyPI リリース後は、次のように短縮できます。

claude mcp add quant_research -- uvx quant-research-mcp

コンテナー化する場合:

claude mcp add quant_research -- docker run -i --rm ghcr.io/flawlessbyte/quant-research-mcp

ローカルのクローンから(開発用):make claude-add は、このチェックアウトを ユーザースコープに登録します。make register は、貼り付けて使える .mcp.json ブロックを出力します。

Claude Code 内で確認します。

/mcp                       # should list 'quant_research' as connected

次のように尋ねます。「対象銘柄全体をスクリーニングし、ハースト法で上位銘柄を分析してから、エントリー判断をスコアリングしてください。」 すると、quant_screen_universe → quant_analyze_setup → quant_score_decision の順に呼び出します。

ソースから(開発用)

git clone https://github.com/FlawlessByte/quant-research-mcp
cd quant-research-mcp
make install      # uv sync — venv + dependencies
make smoke        # list the 13 tools (no network)
make test         # 40 offline tests

オプション:make install-cli を実行すると、uv tool 経由で quant-research-mcp バイナリが PATH に追加されます。その後見つからない場合は、uv tool update-shell を実行して、シェルを再起動してください。make inspect でツールのスキーマを確認できます。

リリース(メンテナー向け)

CI はプッシュまたは PR ごとに、ruff とオフラインテスト 40 件を実行します(Python 3.12 と 3.13)。 リリースはタグで管理します。

# bump version in pyproject.toml + server.json + manifest.json, commit, then:
git tag v0.1.0 && git push origin v0.1.0

これにより、2 つのワークフローが実行されます。

  • release.yml → uv build を実行し、Trusted Publishing (OIDC、保存済みトークン不要)を介して PyPI に公開し、wheel/sdist と .mcpb バンドルを GitHub Release に添付します。
  • docker.yml → ghcr.io/flawlessbyte/quant-research-mcp をビルドしてプッシュします。

初回のみ必要な設定:

  1. PyPI: プロジェクトを作成し、Trusted Publisher を追加します(owner FlawlessByte、 repo quant-research-mcp、workflow release.yml、environment pypi)。
  2. GHCR: 初回のプッシュ後、パッケージの公開範囲を public に設定します。
  3. MCP registry: 初回の PyPI リリース後、mcp-publisher CLI で登録します。 mcp-publisher login github を実行してから mcp-publisher publish を実行します(server.json を使用します。 GitHub ログインにより、io.github.FlawlessByte/… 名前空間の所有権が証明されます)。

Claude Desktop の .mcpb は内部で uvx を呼び出すため、ワンクリックでインストールする場合も、 マシンに uv が必要です。pandas/scipy/statsmodels の wheel を直接バンドルすると、 サイズが大きくなり、プラットフォーム固有になるためです。

制限事項(本格的なトレーダーが別途必要とするもの)

  • リアルタイムデータプロバイダーのキーを設定するまでは遅延データです(インターフェースは準備済みです。 yfinance のデータは約 15 分遅延し、ニュースフィードも限定的です)。
  • マクロ経済カレンダーはありません(FOMC/CPI/NFP)。信頼できる無料フィードがないため、news_sentiment/news_confidence を通じて 独自の判断を渡してください。
  • オプションデータはありません(IV、タームストラクチャー、ガンマ水準)。空売り残高/浮動株数、Level 2 データもありません。今後の課題です。
  • バックテストはパラメーター検証であり、予測ではありません:yfinance の過去データには サバイバーシップバイアスがあり、コストは推定値です。プロバイダーにより、5 分足を使った日中のリプレイは約 60 日分に制限されます。
  • 設計上、永続化は行いません。サーバーは何も保存しません。呼び出しごとにオープンポジションを渡してください(quant_portfolio_risk)。トレードジャーナルは、利用を選択できるモジュールとして開発を予定しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。