# TradingAgents 技術仕様書 ## プロジェクト概要 TradingAgentsは、実世界の投資会社の組織構造を模倣したマルチエージェントLLMベースの金融取引フレームワークです。専門化されたAIエージェントが協調して市場分析と取引判断を行います。 ## システムアーキテクチャ ### 1. コア構成 ``` TradingAgents/ ├── tradingagents/ # コアパッケージ │ ├── agents/ # マルチエージェントシステム │ ├── dataflows/ # データ処理・API統合 │ ├── graph/ # グラフベースオーケストレーション │ └── default_config.py # デフォルト設定 ├── cli/ # コマンドラインインターフェース └── main.py # エントリーポイント ``` ### 2. エージェントシステム詳細 #### 2.1 エージェント階層 **Phase I: アナリストチーム** - **Market Analyst**: テクニカル分析(SMA、EMA、MACD、RSI、ボリンジャーバンド等) - **Social Media Analyst**: Reddit、ソーシャルメディアのセンチメント分析 - **News Analyst**: グローバルニュース、マクロ経済指標の分析 - **Fundamentals Analyst**: 財務諸表、インサイダー取引、企業業績分析 **Phase II: リサーチチーム** - **Bull Researcher**: 楽観的視点での投資機会評価 - **Bear Researcher**: 悲観的視点でのリスク評価 - **Research Manager**: ディベートの調整と最終判断 **Phase III: トレーディングチーム** - **Trader**: 全分析を統合し、取引戦略を策定 **Phase IV: リスク管理チーム** - **Aggressive Debator**: 積極的リスク姿勢 - **Conservative Debator**: 保守的リスク姿勢 - **Neutral Debator**: 中立的リスク評価 - **Risk Manager**: リスク評価の統合と最終判断 **Phase V: ポートフォリオ管理** - **Portfolio Manager**: 最終取引承認/拒否 #### 2.2 エージェント間通信 ```python # 状態管理クラス class AgentState(MessagesState): company_of_interest: str trade_date: str market_report: str sentiment_report: str news_report: str fundamentals_report: str investment_plan: str trader_investment_plan: str final_trade_decision: str class InvestDebateState: bull_history: str bear_history: str judge_decision: str count: int class RiskDebateState: risky_history: str safe_history: str neutral_history: str judge_decision: str count: int ``` ### 3. データフロー・API統合 #### 3.1 外部データソース **金融データプロバイダー** - **Yahoo Finance** (yfinance): 株価、出来高、財務データ - **FinnHub**: ニュース、インサイダー取引、センチメント - **StockStats**: テクニカル指標計算 **ソーシャル・ニュースデータ** - **Reddit API** (praw): r/wallstreetbets等のセンチメント - **Google News**: 最新ニュース記事 - **OpenAI API**: リアルタイムニュース要約 #### 3.2 データキャッシング ```python # オンライン/オフラインモード切替 config["online_tools"] = True # リアルタイムデータ config["online_tools"] = False # キャッシュデータ使用 ``` ### 4. LLM統合システム #### 4.1 対応LLMプロバイダー ```python # プロバイダー設定 config["llm_provider"] = "openai" # OpenAI GPT config["llm_provider"] = "anthropic" # Claude config["llm_provider"] = "google" # Gemini config["llm_provider"] = "ollama" # ローカルLLM config["llm_provider"] = "openrouter" # OpenRouter ``` #### 4.2 デュアルLLM戦略 ```python # 深い思考モデル(複雑な分析・判断) config["deep_think_llm"] = "o1-preview" # または gpt-4o # 速い思考モデル(迅速な応答) config["quick_think_llm"] = "gpt-4o-mini" ``` ### 5. メモリ・学習システム #### 5.1 FinancialSituationMemory ```python class FinancialSituationMemory: def __init__(self, name, config): # ChromaDBベクトルデータベース使用 # OpenAI/Nomic埋め込みモデル def add_situations(self, situations_and_advice): # 過去の取引状況と結果を保存 def get_memories(self, current_situation, n_matches=1): # 類似状況から学習を取得 ``` #### 5.2 メモリ種別 - **bull_memory**: 楽観的予測の履歴 - **bear_memory**: 悲観的予測の履歴 - **trader_memory**: 取引決定の履歴 - **invest_judge_memory**: 投資判断の履歴 - **risk_manager_memory**: リスク評価の履歴 ### 6. グラフベース実行フロー #### 6.1 LangGraphフレームワーク ```python # グラフ構築 workflow = StateGraph(AgentState) # ノード追加 workflow.add_node("Market Analyst", market_analyst_node) workflow.add_node("tools_market", tool_node) # 条件付きエッジ workflow.add_conditional_edges( "Market Analyst", should_continue_market, ["tools_market", "Msg Clear Market"] ) ``` #### 6.2 実行フロー 1. **並列分析フェーズ**: 全アナリストが同時にデータ収集 2. **リサーチディベート**: Bull vs Bear、最大N回のディベート 3. **取引決定**: トレーダーが統合レポート作成 4. **リスク評価**: 3つの視点からリスク議論 5. **最終承認**: ポートフォリオマネージャーが決定 ### 7. CLI技術仕様 #### 7.1 リアルタイムUI **Richライブラリによる4パネル表示** ```python Layout( Header: ウェルカムメッセージ Progress: エージェント状態テーブル Messages: メッセージログ(100件バッファ) Analysis: 現在のレポート表示 Footer: 統計情報 ) ``` #### 7.2 ユーザーインタラクション 1. **ティッカー選択**: 銘柄コード入力 2. **日付選択**: 分析日(YYYY-MM-DD) 3. **アナリスト選択**: チェックボックス 4. **研究深度**: Shallow(1) / Medium(3) / Deep(5) 5. **LLMプロバイダー**: 選択メニュー 6. **モデル選択**: 深い/速い思考モデル ### 8. 依存関係 #### 8.1 主要ライブラリ **LLMフレームワーク** - langchain-openai >=0.3.23 - langchain-anthropic >=0.3.15 - langchain-google-genai >=2.1.5 - langgraph >=0.4.8 **金融データ** - yfinance >=0.2.63 - finnhub-python >=2.4.23 - stockstats >=0.6.5 **UI/CLI** - typer (CLIフレームワーク) - rich >=14.0.0 (ターミナルUI) - questionary >=2.1.0 (対話型プロンプト) **データ処理** - pandas >=2.3.0 - chromadb >=1.0.12 - redis >=6.2.0 ### 9. 設定システム #### 9.1 デフォルト設定 ```python DEFAULT_CONFIG = { "llm_provider": "openai", "deep_think_llm": "o4-mini", "quick_think_llm": "gpt-4o-mini", "max_debate_rounds": 1, "max_risk_discuss_rounds": 1, "max_recur_limit": 100, "online_tools": True, "backend_url": "https://api.openai.com/v1" } ``` #### 9.2 カスタマイズ例 ```python config = DEFAULT_CONFIG.copy() config["llm_provider"] = "google" config["deep_think_llm"] = "gemini-2.0-flash" config["max_debate_rounds"] = 3 config["online_tools"] = False # オフラインモード ``` ### 10. 実行要件 #### 10.1 システム要件 - **Python**: >=3.10 - **メモリ**: 推奨8GB以上 - **ストレージ**: データキャッシュ用1GB以上 #### 10.2 API要件 ```bash export FINNHUB_API_KEY=$YOUR_FINNHUB_API_KEY export OPENAI_API_KEY=$YOUR_OPENAI_API_KEY ``` ### 11. セキュリティ考慮事項 - APIキーは環境変数で管理 - キャッシュデータはローカル保存 - ChromaDBによる埋め込みベクトルのローカル管理 - SSL/TLS通信の使用 ### 12. パフォーマンス最適化 - **並列処理**: 複数アナリストの同時実行 - **キャッシング**: 頻繁にアクセスするデータの保存 - **メモリ管理**: dequeによる効率的なバッファリング - **UI更新**: 4FPSの最適化されたリフレッシュレート ## まとめ TradingAgentsは、高度に構造化されたマルチエージェントシステムで、実世界の投資会社の意思決定プロセスを忠実に再現しています。LangGraphによるオーケストレーション、複数のLLMプロバイダー対応、包括的な金融データ統合により、柔軟かつ強力な金融分析プラットフォームを実現しています。