Canli Backtest について
Canli Backtestは、クオンツ研究者やエージェント向けに、SECのポイントインタイム因子を作成し、持ち込み価格データでシグナルをバックテストするMCPサーバーです。売買のラグで先読みを防ぎ、売買コストを計上し、試行台帳に各バリアントを記録します。
主な機能
- 01SECポイントインタイム因子の生成
- 02クロスセクショナルなシグナル検証
- 03先読みの強制防止
- 04売買回転率に応じたコスト計上
- 05試行台帳によるバリアント記録
活用シーン
- 01SEC提出書類から因子を作成
- 02持ち込み価格データでシグナルを検証
- 03探索全体を考慮して結果を比較
MCP 対応
因子の検索・生成とシグナル検証のツールをMCPクライアントに公開します。ローカルのstdioで動作し、価格、シグナル、台帳はマシン外に送信されません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 4 日前に更新
このツールにパラメーターはありません。
詳細
canli-backtest-mcp
AI エージェントが信頼できるバックテストです。SEC 提出書類からポイント・イン・タイムのファクターを構築し、先読みを一切行わず(コードで強制)、独自の価格データ上で任意のシグナルのクロスセクション・バックテストを実行し、実際の取引にコストを適用して、すべてのバリエーションを試行台帳に記録する MCP サーバーです。これにより、検索で得られた最良の結果を単独で評価するのではなく、検索全体を考慮して評価できます。
ローカルの stdio のみを使用します。価格データ、シグナル、台帳がマシンの外に出ることはありません。
理由
エージェントが実行するバックテストの多くが、実際よりも良く見える原因となる間違いが3つあります。
- 先読み。 公開前の数値を使ってしまうことです。たとえば、2月に提出された年次数値を1月に使ったり、後に修正された値を使ったりするケースです。
pit_factorは各日付時点で SEC に提出済みだった情報のみを使用します。backtest_signalはlag_days取引日前までの日付が付いたシグナル行のみで取引し、それより先のデータがあれば処理を停止します。 - 取引コストなし。 売買回転率を無視してしまうことです。リバランスの間にポジションは価格変動に応じてずれていき、コストはそのずれたポジションから新しい目標ポジションへの取引に対して適用されます。
- 勝者だけを数える。 エージェントが200種類のバリエーションを試し、最良の結果だけを報告することです。
ledgerを使うと、すべての実行が記録され(canli-validation-mcp のハッシュチェーン付き台帳に記録されます)、各応答には、すべての実行を考慮した最良の実行のデフレート・シャープレシオと、運だけで達成できるシャープレシオが示されます。
ツール
| ツール | 内容 |
|---|---|
list_factors | pit_factor が構築するファクターと、それぞれが測定する内容です。 |
pit_factor | ティッカーを対象に、各日付時点で判明していた情報に基づいて月次のファクター(roa、gross_margin、operating_margin、revenue_growth、asset_growth、accruals、または level:<measure>)を作成します。シグナル CSV を出力します。 |
backtest_signal | シグナルの順位に基づいて、上位の分位をロング(下位の分位をショート)し、lag_days、cost_bps、省略可能な ledger を指定して、週次、月次、四半期ごと、または N 日ごとにリバランスします。 |
クイックスタート
npx -y canli-backtest-mcp
Claude Code:
claude mcp add canli-backtest -- npx -y canli-backtest-mcp
次のように依頼します:「この200銘柄について、2015年から2024年までの roa を構築し、prices.csv の価格データで月次バックテストを実行してください。コストは10 bps とし、台帳 'roa-search' で分位 0.1、0.2、0.3 を試して、最良の結果が検索を考慮しても有効かどうかを教えてください。」
ファイル
どちらのファイルも、date 列(YYYY-MM-DD)と、ティッカーごとの列で構成される CSV です。
- 価格データ:取引日ごとに1行の終値です。独自の価格データを用意してください。トータルリターンが必要な場合は、株式分割と配当を調整してください。サーバーは価格データを提供しません(ベンダーのライセンスにより、価格データの受け渡しは禁止されています)。
- シグナル:値が判明した日付ごとに1行です。
pit_factorがこれを出力します。各行の日付が値の入手可能日を示していれば、独自のシグナルも使用できます。
空のセルは欠損値であり、ゼロではありません。
結果からは立証できないこと
- 価格データは独自のものです。生存者バイアス、株式分割、配当、データエラーは、そのまま結果に反映されます。
- バックテストで測定できるのは、これらのコストを前提とした過去の一つの経路です。シグナルが今後も機能し続けることを立証するものではありません。
- コストは取引単位あたりの一律料金です。
cost_bpsに含めない限り、市場インパクト、空売りの借株料、資金調達コストは適用されません。 - SEC の値は、企業が XBRL で報告し、提出した内容です。提出の遅い企業、XBRL を使用しない企業、タグの変更は、データから欠落する場合があります。
設定
| 変数 | デフォルト | 意味 |
|---|---|---|
CANLI_LEDGER_DIR | ~/.canli/ledgers | 台帳の保存先(canli-validation-mcp と共有) |
CANLI_CACHE_DIR | ~/.cache/canli-fundamentals | SEC データのキャッシュ |
Canli Capital MCP ファミリーの一部
canli-validation-mcp(バリデーターと試験用台帳)、canli-fundamentals-mcp(SEC の時点情報を含むファンダメンタルズ)、canli-research-mcp(オープンな調査記録)。ソース:github.com/arhancanli/canlicapital。MIT ライセンス。Arhan Canli が開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。