mcpField
T
trader-cloud-backtest

trader-cloud-backtest

github.com/ruvnetデータ・データベース80.0k599 回インストール今日更新
リポジトリ

trader-cloud-backtest について

trader-cloud-backtestは、Anthropic Claude Managed Agentsのクラウドコンテナで、計算負荷の高いneural-traderのバックテストや学習を実行するスキルです。大規模なウォークフォワード、モンテカルロ実行、パラメータ探索、モデル学習に向け、コスト見積もりから成果物の検証、終了処理までを扱います。

主な機能

  1. 01クラウドでのバックテストと学習
  2. 02ウォークフォワードとモンテカルロ実行
  3. 03単一コンテナでのパラメータ探索
  4. 04コスト見積もりとセッション終了
  5. 05署名済み成果物の検証

活用シーン

  1. 01複数年のウォークフォワードテスト
  2. 02多数のモンテカルロ経路による戦略評価
  3. 03戦略パラメータの探索
  4. 04クラウドでのトレーディングモデル学習

MCP 対応

Managed Agentsのツールでクラウドセッションの作成、プロンプト送信、確認、終了を行います。結果をMCPツールで保存する手順も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ruvnet/ruflo --skill trader-cloud-backtest

インストール後、Claude Code で/trader-cloud-backtestを入力して読み込まれたか確認します。

詳細

クラウドでのバックテスト/トレーニング(Managed Agent 上の neural-trader)

高負荷の neural-trader ジョブをローカルで実行する代わりに、Anthropic Claude Managed Agent(クラウドコンテナ)にディスパッチします。プロジェクトの ADR-117(レシピとコストルール)および ADR-115(managed_agent_* ランタイム)を参照してください。

trader-backtest(ローカル)ではなく、こちらを使うケース

ジョブランタイム
簡単な動作確認、短時間(約 1 分未満)のバックテスト 1 件ローカル — trader-backtest スキルを使用
複数年のウォークフォワード、大量のモンテカルロ試行、グリッド上でのパラメーター探索、またはモデルのトレーニング(LSTM/Transformer/N-BEATS)クラウド — このスキル

前提条件:ANTHROPIC_API_KEY(または CLAUDE_API_KEY)と Managed Agents のベータ版へのアクセス権。managed_agent_* が「needs ANTHROPIC_API_KEY」を返す場合は、ローカルの trader-backtest スキルに切り替えてください。

手順

  1. まず見積もります。 ジョブの規模から推定コスト(コンテナの稼働時間 × 料金 + トークン)を出力します。長時間の探索は意図的に選択するものであり、デフォルトではありません。

  2. コンテナをプロビジョニング(または再利用)します — エージェントが実行途中に再インストールしなくて済むよう、コンテナの起動時に neural-trader をインストールします:

    managed_agent_create({
      name: "nt-cloud",
      model: "claude-haiku-4-5-20251001",            // orchestration only — the compute is the Rust engine, not the LM (ADR-026)
      system: "You operate the `neural-trader` CLI in this container. Run exactly the commands asked, report the metrics, write requested artifacts, then stop.",
      networking: "unrestricted",                     // or "restricted" pinned to your data host
      packages: { npm: ["neural-trader"] },           // add apt:["build-essential"] ONLY if there's no prebuilt NAPI binary for the arch (neural-trader ships prebuilds → usually omit)
      initScript: "npm install -g --ignore-scripts neural-trader >/dev/null 2>&1 || npx -y neural-trader --version >/dev/null 2>&1 || true"
    })
    → { sessionId, agentId, environmentId }
    

    探索の場合:環境を一度だけ作成し、すべての設定を1 つの managed_agent_prompt(1 つのコンテナ)で実行します。N 個のセッションには分けません。

  3. 実行前の確認は低コストで行います。 1000 パス/複数年の実行前に、小規模なスモークテスト(MC パス 1 回、約 3 か月)を実行します。戦略名やシンボルの誤りを数秒で検出できます:

    managed_agent_prompt({ sessionId, message: "Run `npx neural-trader --backtest --strategy <name> --symbol <TICKER> --period <last 3 months> --mc-paths 1`. Just confirm it ran and report the Sharpe. Then stop.", maxWaitMs: 60000 })
    

    失敗した場合は、本番実行の前に引数を修正し、managed_agent_terminate を実行します。

  4. 本番ジョブを実行します:

    managed_agent_prompt({
      sessionId,
      message: "Run `npx neural-trader --backtest --strategy <name> --symbol <TICKER> --period <range> --walk-forward --mc-paths <N>` (for training: `npx neural-trader --train --model <lstm|transformer|nbeats> --symbol <TICKER> --period <range>`; for a sweep: loop the configs and run each). Report: total return, annualized return, Sharpe, Sortino, max drawdown, win rate, profit factor, # trades, 95% CVaR. Write the equity curve to /tmp/equity.csv and the trade log to /tmp/trades.csv. Then stop.",
      maxWaitMs: <generous — minutes>
    })
    → { finished, status, stopReason, assistantText (the metrics), toolUses }
    

    finished:false の場合は、アイドル状態になるまで managed_agent_events({ sessionId }) を呼び出して確認します。

  5. 必要に応じて成果物を取得します: managed_agent_prompt({ sessionId, message: "cat /tmp/equity.csv" }) を使うか、managed_agent_events を呼び出して tool_result を読み取ります。

  6. ローカルに取り込み、Ed25519 で検証します(ADR-126 フェーズ 4 のフェイルクローズゲート):

    • クラウドから返されたメトリクス、パラメーターハッシュ、実行ハッシュから SignedBacktestArtifact の本文を作成します。plugins/ruflo-neural-trader/src/signed-artifact.mjs の signBacktestArtifact(body, privateKeyHex) を使ってローカルで署名します(キーの解決方法は trader-backtest と同じです:RUFLO_WITNESS_KEY_PATH → verification/witness-key.json → 署名なしの場合は警告)。
    • 成果物を保存または本番戦略に昇格させる前に、trustedPublicKey がプロジェクト設定で固定された Ed25519 公開鍵であることを確認してから、await verifyBacktestArtifact(artifact, trustedPublicKey) を呼び出します(artifact.witnessPublicKey フィールドは攻撃者が制御可能なため、使用しないでください。CWE-347/#1922 を参照)。検証結果が false の場合:昇格を拒否してください — エラー "[ERROR] ruflo-neural-trader: SignedBacktestArtifact signature INVALID against trusted key — refusing to promote to live strategy" を明確に出力し、早期に戻ります。これは ADR-126 に基づくフェイルクローズゲートです。
    • 検証に成功した場合:memory_store({ key: "backtest-<strategy>-<ts>", value: JSON.stringify(signedArtifact), namespace: "trading-backtests" })。保存された値には witnessSignature と witnessPublicKey が含まれます。
    • Sharpe が 1.5 を超える場合:agentdb_pattern-store({ pattern: "profitable-<strategy-type>", data: "<params + results>" })。
    • ADR-117 に従い、実行のコンテナ稼働時間とトークンコストを cost-tracking 名前空間に記録します。クラウドセッションは終了するまで課金されます。
  7. 結果を受け取ったら、すぐに終了します:

    managed_agent_terminate({ sessionId, environmentId })   → { sessionDeleted: true, environmentDeleted: true }
    

    アイドル状態の課金対象コンテナを放置しないでください。(ruflo doctor/GC が孤立コンテナを検出します — #1931。)

コストルール(必ず守ってください)

  • インストールは一度だけ行い(initScript)、環境を再利用し、探索を 1 つのプロンプトにまとめ、実行前の確認は低コストで行い、すぐに終了し、エージェントのループには Haiku/Sonnet を使い、開始前に見積もります。(ADR-117 §「コスト最適化」。)
  • 1 時間実行するクラウドバックテストには、コンテナ 1 時間分の料金とエージェントループのトークンコストがかかります。計画的に実行してください。

簡単な例

managed_agent_create  { "name":"nt-cloud", "model":"claude-haiku-4-5-20251001", "packages":{"npm":["neural-trader"]}, "initScript":"npm install -g --ignore-scripts neural-trader >/dev/null 2>&1 || true" }
  → { sessionId:"sesn_…", environmentId:"env_…" }
managed_agent_prompt   { "sessionId":"sesn_…", "message":"Run `npx neural-trader --backtest --strategy multi-indicator --symbol SPY --period 2020-2024 --walk-forward --mc-paths 1000`. Report Sharpe/Sortino/max-DD/win-rate/CVaR; write /tmp/equity.csv. Then stop.", "maxWaitMs":600000 }
  → { finished:true, status:"idle", assistantText:"<metrics>", toolUses:[{bash:"npx neural-trader --backtest …"}] }
# … memory_store the metrics, agentdb_pattern-store if Sharpe>1.5, record cost …
managed_agent_terminate { "sessionId":"sesn_…", "environmentId":"env_…" }

コメント