Canli Paper Trading について
Canli Paper Trading は、Alpaca のペーパー口座を操作するエージェント向けの MCP サーバーです。設定可能な取引前チェックと短時間有効の確認トークンを通過した注文だけを送信でき、実取引には対応しません。
主な機能
- 01ペーパー口座と注文状況の確認
- 02取引前の上限チェックとキルスイッチ
- 03注文のプレビューと期限付きトークン
- 04目標配分から整数株の注文を生成
- 05署名付き証明と改ざん検知ログ
- 06残高を隠す任意のコミットメント
活用シーン
- 01送信前にペーパー注文を確認
- 02ペーパーポートフォリオを目標配分に調整
- 03取引証明の確認や検証
- 04口座の数値をモデルに見せない運用
MCP 対応
ローカル stdio 経由で、口座確認、プレビュー、リバランス、送信、検証のツールを MCP クライアントに公開します。トークンで承認された注文のみ送信でき、Alpaca のペーパー取引に限定されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y canli-paper-trading-mcpALPACA_PAPER_KEY_IDシークレットYour Alpaca paper API key id (starts with PK).ALPACA_PAPER_SECRET_KEYシークレットYour Alpaca paper API secret key.CANLI_HOMEDirectory with limits.json, KILL and the order log; default ~/.canli.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 4 日前に更新
このツールにパラメーターはありません。
詳細
canli-paper-trading-mcp
チェックを回避できない仕組みで、AI エージェントがAlpaca のペーパーアカウントで取引できるようにします。 各注文は、お客様自身の制限、マーケットの取引時間、キルスイッチに照らして事前確認されます。すべてのチェックに合格した注文にのみ、5 分間有効な確認トークンが発行され、そのトークンがなければ注文を送信できません。ペーパー取引専用です。このパッケージにはライブ取引ホストが含まれておらず、ライブキーは拒否されます。
ローカル stdio で動作します。キーはお客様の環境内にとどまり、Alpaca のペーパー API 以外に送信されることはありません。
ツール
| ツール | 機能 |
|---|---|
paper_account | 資産、現金、購買力、ポジション、未決済注文、マーケットの取引時間、キルスイッチ、注文ログの検証済みヘッドを確認します。 |
preview_paper_orders | ライブのペーパーデータを使って注文の取引前チェックを実行し、すべての注文が合格した場合のみトークンを返します。 |
rebalance_to_weights | 目標ウェイト(バックテストの結果など)を端株ではない注文に変換し、売り注文を先に処理してチェックを行い、トークンを返します。 |
send_paper_orders | トークンを使って事前確認済みの注文を送信するか、ID を指定して未決済注文をキャンセルします。変更を加える唯一のツールです。 |
チェック
取引前チェックには、canlicapital の共有コア(js/pretrade-core.js。リポジトリ内でバイト単位で同一に複製され、テストされています)を使用します。注文ごとに、キルスイッチ、許可されたシンボルと注文タイプ、マーケットの取引時間内かどうか、価格の上限・下限、注文および日次の想定元本上限、ポジション、ポートフォリオ全体を対象とするグロスおよびネットの上限、縮小専用の整合性、推定コスト(スプレッドの半分。手数料と出来高を指定した場合は、それらも考慮)を確認します。拒否された場合は、理由をすべて示します。注文数量は調整されません。
お客様の制限は CANLI_HOME/limits.json(デフォルトは ~/.canli)に保存します。例:
{ "max_order_notional": 10000, "max_position_frac": 0.2, "max_gross": 1.0, "allowed_types": ["limit"] }
呼び出しごとに、プレビューの制限を厳しくすることはできますが、緩めることはできません。このディレクトリに KILL という名前のファイルが存在する間は、すべてのプレビューが失敗し、すべての送信が拒否されます。
トークン
- プレビューした注文の内容にひも付いています。数量を変更すると、トークンを検証できなくなります。
- 1 回のみ使用でき、有効期間は 5 分です。そのため、送信時に古いチェックが使われることはありません。
- 稼働中のサーバー内にのみ存在するキーで署名されます。サーバーを再起動すると、古いトークンは拒否されます。
- 送信された各注文には、トークンから生成された
client_order_idが付与されます。Alpaca は同じ ID の再使用を拒否するため、送信を再試行しても二重に約定することはありません。
注文ログ
すべての送信とキャンセルは CANLI_HOME/paper-orders.jsonl に追記されます。各行には、直前の行のハッシュが記録されます。paper_account はチェーンが引き続き検証できるかを報告します。行を編集すると、チェーンの整合性が崩れます。
署名付き証明と非公開残高
プレビュー、リバランス、送信の各処理では、どの注文がチェックされたか(そのハッシュ値)、どの制限に照らしてチェックされたか(そのハッシュ値)、判定、キルスイッチ、時刻、口座のエクイティとポジションに関するコミットメントを含む attestation が返されます。これらは、初回にお使いのマシン上で作成される Ed25519 キー(CANLI_HOME/attest-ed25519.pem、モード 0600)で署名されます。このキーがマシンの外に出ることはありません。attest-ed25519.pub.pem を監査担当者または取引相手に渡してください。verify_attestation は、ステートメントがそのキーで署名され、改ざんされていないことをチェックします。Node 24.7 以降では、各ステートメントに ML-DSA-65 キー(FIPS 204、耐量子署名方式、attest-ml-dsa-65.pem)でも署名されます。両方のキーを記載した同じステートメントに対する署名です。両方の公開鍵を渡してください。両方の署名が有効である必要があるため、一方の方式が破られてもステートメントの偽造を防げます。
CANLI_PAPER_PRIVATE=1 を設定すると、モデルに口座の数値が表示されなくなります。paper_account はエクイティ、現金、購買力、ポジションの代わりにコミットメント(ランダムなソルトと値の SHA-256)を返します。rebalance_to_weights は注文の数量を計算しますが、その内容を表示しません。チェックメッセージ内の数値は伏せられます。ソルトは CANLI_HOME/commitments.jsonl にのみ書き込まれるため、後からコミットメントを誰かに開示(値とソルトを提示)し、verify_attestation で検証できます。
これはコミットメントに対する署名であり、ゼロ知識証明ではありません。値を開示した相手には、その値が知られます。また、チェックはこのサーバーのコードで行われます。ブローカーが受け付けるのは証明ではなく API キーです。どちらのモードでも、キーは環境内に保管され、モデルに表示されることはありません。
クイックスタート
- Alpaca アカウントを作成し、ペーパートレーディングのダッシュボードを開いて、ペーパー用 API キーを生成します(キー ID は
PKで始まります)。 - 環境変数にキーを設定してサーバーを追加します。
claude mcp add canli-paper -e ALPACA_PAPER_KEY_ID=PK... -e ALPACA_PAPER_SECRET_KEY=... -- npx -y canli-paper-trading-mcp
次のように依頼します。「ペーパー口座を SPY 60%、TLT 40%にリバランスし、チェック内容を表示して、すべて通過したら送信してください。」
canli-quant-mcp と組み合わせて使えます。そちらで戦略をバックテストしてから、こちらでペーパー口座の資産配分を目標の比率に変更します。
このツールでできないこと
実資金の取引は行いません。また、それを可能にする設定もありません。取引対象を決めることもありません。ペーパートレーディングの約定は Alpaca のシミュレーションであり、実際の市場より有利な条件です(キューの順位やマーケットインパクトは考慮されません)。ペーパー取引で機能する戦略でも、実運用で機能することが確認されたわけではありません。
MIT ライセンス。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。