🦔

Claude CodeでNISAを分析する12エージェントシステムを作った — アーキテクチャ全公開

に公開

競馬AIを3回作り直した後、同じ設計思想を自分のNISA口座に持ち込んだ。

「複数エージェントが独立して分析し、最後に反論役が穴を突く」という構造は投資判断でも有効だと思った。3週間、実際にNISAで動かして確認した。今回はそのアーキテクチャを全部公開する。


システム概要

finance-ai — Claude Codeで動く米国株マルチエージェント分析システム。

  • エージェント数: 12体
  • データソース: 全て無料(yfinance / finvizfinance / tradingview_ta / WebSearch)
  • 対象: 米国株(NYSE / NASDAQ)
  • 言語: Python + Markdown(エージェント定義)

12体の構成

# エージェント モデル 役割
00 Receptionist Sonnet ユーザー窓口・Use Caseルーティング
01 Data-Collector Sonnet yfinance/Finviz/TradingViewでデータ収集
02 Fundamental-Analyst Sonnet バリュエーション・DCF・財務健全性
03 Technical-Analyst Sonnet チャートパターン・RSI/MACD/移動平均
04 Quant-Analyst Sonnet マルチファクタースコアリング
05 Earnings-Catalyst-Analyst Sonnet 決算分析・短期カタリスト
06 Macro-Sector-Analyst Sonnet マクロ経済・セクターローテーション
07 Devil's-Advocate Opus + thinking 全員への反論専任
08 Moderator Sonnet + thinking 合議統合・最終判断
09 Portfolio-Manager Sonnet ポジションサイジング(Quarter Kelly)
10 Orchestrator Sonnet パイプライン進行管理
11 Tracker Haiku 実績追跡・学習ログ

実行フロー

[00 Receptionist] ← ユーザー入力(「TSLAを分析して」)

[01 Data-Collector] ← yfinance/Finviz/TradingView/WebSearchでデータ収集

[02〜06 並列分析] ← 5体が独立して同時実行(互いの結論を参照しない)

[07 Devil's-Advocate] ← 全5体のレポートを読んで反論を生成(Opus + thinking)

[08 Moderator] ← 反論を含めた合議・統合(Sonnet + thinking)

[09 Portfolio-Manager] ← Quarter Kellyでポジションサイズを算出

最終レポート出力

並列フェーズ(02〜06)で重要なのはコンセンサスバイアスの防止だ。他のエージェントの結論を見てから分析すると、必ず多数派に引きずられる。だから5体は互いの出力を参照せず、それぞれのJSONを独立して生成する。


Devil's Advocateの設計

このシステムで最も重要なエージェントが07番だ。

ペルソナ設定はBridgewater Associatesのシニアポートフォリオリスクアナリスト(Ray Dalio's All Weather原則)。他のエージェントがどれだけ強気でも、このエージェントだけは強制的に反論を書く。

やっていることは3段階:

Step 1: 過信の検出

  • DCF仮定が楽観的すぎないか
  • テクニカルの強気シグナルが過熱感を示していないか
  • クオンツスコアが過去データへの過適合になっていないか

Step 2: 見落としの指摘

  • 規制変化リスク
  • オフバランスシートのリスク
  • 配当カットリスク

Step 3: ストレステスト

  • 金利急上昇(+200bps)シナリオ
  • 景気後退シナリオ
  • 業績ミス・ガイダンス下方修正シナリオ

出力はJSON形式で、challenges(反論リスト)と risk_scenarios(シナリオ別影響試算)が含まれる。ModeratorとPortfolio-Managerはこれを読んだ上で最終判断を出す。

モデルはOpusを使い、thinking: mediumを有効にしている。「反論を書く」という作業は、強気材料を見つけるより認知的コストが高い。Opusの深い推論を使わないと、形だけの反論になりやすい。


Python計算層

エージェント定義(Markdown)だけでなく、Pythonで計算層を持っている。

finance-ai/src/
├── dcf_calculator.py       # DCFモデル計算
├── factor_scorer.py        # マルチファクタースコア算出
├── portfolio_optimizer.py  # ポートフォリオ最適化
└── technical_indicators.py # テクニカル指標計算

dcf_calculator.pyはFundamental-Analystが呼び出す。DCFの計算をLLMに任せると数値が不安定になるので、Pythonで厳密に計算してJSONで返す設計にした。

factor_scorer.pyはValue/Momentum/Quality/Volatilityの4ファクターをスコアリングする。Quant-Analystはこのスコアを解釈してレポートを書く。


3つのUse Case

Use Case A: 個別銘柄分析

「TSLAを分析して」→ フルパイプライン実行。最終的に買い/見送りの判断とポジションサイズが出る。

Use Case B: ポートフォリオレビュー

sample-portfolio.json形式で保有株を入れると、リバランス提案が出る。

Use Case C: マクロ/セクター分析

「半導体セクターは今どこにいるか」→ Macro-Analyst + Quant-Analystのみ実行。市場全体の環境把握に使う。


設計上の決断

Quarter Kellyを使う理由

Portfolio-ManagerはKelly基準でポジションサイズを計算するが、フルKellyは使わない。理論上は最大化できるが、分散が大きすぎて精神的に持たない。1/4にすると極端な集中投資を防げる。競馬AIでも同じ結論に至った。

Haiku for Tracker

11番のTrackerは過去の推奨を記録するだけの役割なので、Haikuを使う。コスト構造を意識した役割分担。分析が必要な箇所にOpus/Sonnet、記録・管理はHaiku、という原則。

完全無料データ縛りの理由

最初は有料APIが必要では、と思っていた。実際に動かしてみたら、個別銘柄の買い/見送り判断に必要な情報はyfinanceとfinvizfinanceで大体揃う。足りない情報はWebSearchで補える。個人投資家のNISA判断に、機関投資家向けの Bloomberg データは不要だった。


動かすために必要なもの

  • Claude Code(Anthropicのサブスクリプション)
  • Python 3.10以上
  • pip install -r requirements.txt(yfinance等の依存関係)

追加費用ゼロで動く。Claude Codeのサブスクリプションに含まれる利用枠で動作する。


システム一式の配布について

このアーキテクチャ記事は無料で公開している。

エージェント定義12本・Python計算層・PLAYBOOK・サンプルデータを含む**実装一式(finance-ai-v0.1.0.zip)**はnoteで販売している。セットアップ手順書付きで、READMEの通りに進めると5分で動き始める。

noteで購入する(¥9,800)

3週間NISAで動かした感想と、Devil's Advocateが実際に止めた購入判断の話は記事の中に書いた。


まとめ

  • 5体の並列分析 + 1体の反論専任という構造が投資判断に効く
  • Devil's Advocateにはのちつよい反論を出させるためOpus + thinkingを使う
  • コンセンサスバイアスを防ぐため並列フェーズは互いの結論を参照しない
  • Quarter Kellyで極端な集中投資を防ぐ
  • 完全無料データで十分な判断材料が揃う

Discussion

ログインするとコメントできます