backtestport について
backtestportは、戦略開発者向けのMCPサーバー兼コマンドラインクライアントで、ホスト型のBacktest360エンジンを利用します。戦略の検証や比較、バックテスト、シグナル評価、市場・マクロデータの取得ができ、取引注文には対応しません。
主な機能
- 01戦略ドキュメントの検証
- 02バックテストの実行と比較
- 03最新シグナルの評価
- 04市場・マクロデータの取得
- 05インジケーターとテンプレートの参照
活用シーン
- 01実行前の戦略チェック
- 02同じデータでの戦略比較
- 03銘柄の価格履歴の確認
- 04マクロ経済系列の検索
MCP 対応
Backtest360エンジン、戦略、バックテスト、市場データ、マクロデータの操作をMCPクライアント向けのツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
19掲載時のツール一覧 · 1 週間前に更新
このツールにパラメーターはありません。
詳細
backtestport
独自のエンジンを立ち上げずに、トレーディング戦略をバックテストできます。backtestportは、ホスト型バックテストエンジンBacktest360用の小さなクライアントです。戦略ドキュメントを渡すと、ドキュメントを検証し、バックテストを実行し、最新のシグナルを評価し、同じデータ上で複数の戦略を比較し、エンジンが利用できる市場データとマクロ経済データを取得します。さらに、そもそも戦略を作成するために必要なインジケーターカタログ、テンプレート、参照データも取得できます。
これはバックテスト専用のクライアントです。ライブトレード、注文の発注、口座に関するツールはなく、どの機能も資金を動かしません。
応答はエンジンから返された内容そのままで返されます。以下で説明する出力バイト数の上限を除き、途中で削除、改名、要約されることはありません。
設定
クライアントは4つの環境変数で制御します。
BACKTEST360_API_KEY(必須) — すべてのリクエストでX-API-Keyヘッダーとして送信されます。設定されていない場合、リクエストを送信する前に、すべてのツールがBACKTEST360_API_KEY is not setで失敗します。BACKTEST360_ENGINE_URL(任意) — エンジンのベースURLです。デフォルトはhttps://api.backtest360.comです。BACKTEST360_MCP_TIMEOUT(任意) — リクエストごとのタイムアウト時間(秒)です。デフォルトは300です。タイムアウト時間を超えたリクエストはbacktest360 request timed outで失敗します。BACKTEST360_MCP_MAX_OUTPUT_BYTES(任意) — 応答サイズの上限(バイト)です。デフォルトは100000です。本文がこの上限を超える場合、上限まで切り詰めたうえで、末尾に{"truncated_by_mcp": true}が追加されるため、巨大なエクイティカーブで呼び出し元が圧迫されることはありません。
結果の読み方
失敗に見えるエンジンの応答のうち、実際には失敗ではないものが2つあります。
- 戦略の検証では、ドキュメントに問題がある場合、
{valid: false, errors: [...]}が返されます。これは正常な結果です。エラーは構造化され、該当箇所を特定できるため、ドキュメントを修正できます。 - エンジンが受け付けないバックテストでは、
{accepted: false}が返されます。これも正常な結果です。
実際の失敗はエラーとして返されます。エンジンがRetry-Afterヘッダーを送信した場合、HTTP 429はbacktest360 rate limited (HTTP 429); retry after <value>で失敗します(ヘッダーがない場合は末尾の部分が付きません)。その他の2xx以外の応答はbacktest360 error: HTTP <status>で失敗し、エンジンに接続できない場合はbacktest360 unreachableで失敗します。
戦略の引数(strategyおよびstrategiesの各項目)には、JSONオブジェクトまたはJSON文字列を指定できます。送信前に解析されます。解析できない文字列を指定すると、strategy is not valid JSONで失敗します。
バックテストの実行内容は、次の3つの引数で調整できます。
response_detail—summary(デフォルト)、stats、またはfull:判定結果のどの程度の詳細を返すかを指定します。max_series_points— 返される系列の長さの上限です。デフォルトは500です。2以上の整数を指定する必要があり、リクエストを送信する前にローカルで検証されます(max_series_points must be an integer >= 2)。include—trades、equity_curve、monthly_returns、yearly_returns、signal_diagnosticsのいずれかを指定すると、それぞれの系列が判定結果に追加されます。
ツール
探索とアカウント:
engine_info— エンジンのバージョン、API コントラクト、ヘルス状態。get_me— 設定済みのキーでできること:権限スコープ、制限、現在の使用状況、機能フラグ。get_catalog— 参照カタログ(演算子、実行モード、停止タイプ、サイズ設定方法、バーの頻度、指標セクション)。catalogを渡すと、指定したものだけを取得します。list_indicators— 指標の探索と、指標ごとのパラメータースキーマ。searchで一覧を絞り込めます。list_templates— あらかじめ設計された戦略テンプレートを簡潔に一覧表示します。または、idを指定すると、1 件を全体表示します。get_strategy_schema— 戦略ドキュメントの JSON Schema。
戦略と実行:
validate_strategy— 実行せずに戦略ドキュメントを確認します。run_backtest— バックテストを実行します。symbol、start、end、上記の整形引数、およびdata(インラインのバーを含むオブジェクト)はすべて省略可能です。get_latest_signal— 最新のバーのみを評価します。損益は計算しません。compare_backtests— 同じデータで複数の戦略を並べて実行します。compute_stats— 外部で生成されたreturns系列から指標セットを計算します。
市場データとマクロデータ:
search_tickers/list_tickers— 取得可能なシンボルの一覧。get_data_range— シンボルで利用可能な履歴と、バー数の推定値。get_ticker_info— 1 回の呼び出しでシンボルの識別情報とデータの対象範囲を取得します。get_quote— シンボルで利用可能な最新価格。get_price_history— 日付範囲における OHLCV 履歴(start、end、frequency。サーバー側データではエンジンがバーを 1d に固定します。この引数は受け付けられ、転送されます)。list_macro_series/get_macro_series— マクロ経済系列のカタログと、任意の日付範囲における 1 系列の観測値。
エンドポイントの出典
元プロジェクトの README では、19 個のツール、整形引数のセマンティクス、デフォルト値を含む 4 つの環境変数、X-API-Key ヘッダー、および検証結果とエンジンによる拒否をデータとして扱うルールが明記されています。以下のワイヤーパスは再構成したものであり、その旨を明記しています。GET /engine/info、GET /me、GET /catalogs、GET /indicators、GET /templates[/{id}]、GET /strategy/schema、POST /strategy/validate、POST /backtests、POST /signals/latest、POST /backtests/compare、POST /stats、GET /tickers/search、GET /tickers、GET /tickers/{symbol}/data-range、GET /tickers/{symbol}、GET /tickers/{symbol}/quote、GET /tickers/{symbol}/history、GET /macro、GET /macro/{series}。すべて設定済みのベース URL 配下にあり、パスの各セグメントとクエリ値は URL エンコードされます。
CLI
各ツールは、1 つの JSON 引数文字列を受け取るサブコマンドです。
npx @reneturcios/backtestport engine_info '{}'
npx @reneturcios/backtestport validate_strategy '{"strategy":{"name":"sma-cross","rules":[]}}'
npx @reneturcios/backtestport run_backtest '{"strategy":{"name":"sma-cross"},"symbol":"AAPL","include":["equity_curve"]}'
npx @reneturcios/backtestport get_quote '{"symbol":"AAPL"}'
npx @reneturcios/backtestport --version
出力はツールの結果テキスト(成功時は上流の JSON)です。終了コード:成功時は 0、実行時エラー時(キーの欠落、検証失敗、上流の失敗を含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
npx -y @reneturcios/backtestport mcp
MCP クライアントの設定:
{
"mcpServers": {
"backtestport": {
"command": "npx",
"args": ["-y", "@reneturcios/backtestport", "mcp"],
"env": {
"BACKTEST360_API_KEY": "<your key>"
}
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/backtestport
docker run --rm ghcr.io/cloudcorprecords/backtestport get_quote '{"symbol":"AAPL"}'
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。