{"owner":"hsliuping","repo":"TradingAgents-CN","hasSkills":true,"totalSkillsCount":5,"totalTokensCount":23263,"categories":["subagent-persona"],"hasMcp":false,"mcpConfig":null,"found":["docs/agents/v0.1.13/researchers.md","docs/agents/v0.1.13/analysts.md","docs/agents/v0.1.13/managers.md","docs/agents/v0.1.13/risk-management.md","docs/agents/v0.1.13/trader.md"],"skills":{"docs/agents/v0.1.13/researchers.md":"# 研究员团队\n\n## 概述\n\n研究员团队是 TradingAgents 框架的核心决策组件，负责基于分析师提供的数据进行深度研究和投资辩论。团队由看涨研究员和看跌研究员组成，通过对立观点的辩论来全面评估投资机会和风险，为最终的投资决策提供平衡的视角。\n\n## 研究员架构\n\n### 基础研究员设计\n\n所有研究员都基于统一的架构设计，使用相同的状态管理和日志系统：\n\n```python\n# 统一的研究员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_researcher_module(\"researcher_type\")\ndef researcher_node(state):\n    # 研究员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n研究员通过 `AgentState` 进行状态管理，包含辩论历史和分析报告：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    debate_state: str            # 辩论状态\n    messages: List              # 消息历史\n    memory: Any                 # 历史记忆\n```\n\n## 研究员团队成员\n\n### 1. 看涨研究员 (Bull Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bull_researcher.py`\n\n**核心职责**:\n- 寻找和强调投资机会的积极因素\n- 提出看涨观点和支持论据\n- 反驳看跌观点中的薄弱环节\n- 推动积极的投资决策\n\n**核心实现**:\n```python\ndef create_bull_researcher(llm, memory=None):\n    @log_researcher_module(\"bull\")\n    def bull_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看涨论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看涨观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **积极解读数据**: 从乐观角度解释市场数据和财务指标\n- **机会识别**: 发现被市场低估的价值和增长潜力\n- **风险最小化**: 论证风险的可控性和临时性\n- **催化剂分析**: 识别可能推动股价上涨的因素\n\n### 2. 看跌研究员 (Bear Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bear_researcher.py`\n\n**核心职责**:\n- 识别和强调投资风险和负面因素\n- 提出看跌观点和警示论据\n- 质疑看涨观点中的乐观假设\n- 推动谨慎的投资决策\n\n**核心实现**:\n```python\ndef create_bear_researcher(llm, memory=None):\n    @log_researcher_module(\"bear\")\n    def bear_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看跌论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看跌观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **风险放大**: 深入分析潜在风险和负面因素\n- **估值质疑**: 质疑当前估值的合理性\n- **趋势反转**: 识别可能的负面趋势转折点\n- **竞争威胁**: 分析行业竞争和市场变化风险\n\n## 辩论机制\n\n### 辩论流程\n\n```mermaid\ngraph TB\n    A[分析师报告] --> B[看涨研究员分析]\n    A --> C[看跌研究员分析]\n    \n    B --> D[看涨观点]\n    C --> E[看跌观点]\n    \n    D --> F[辩论交锋]\n    E --> F\n    \n    F --> G[观点完善]\n    G --> H[最终辩论结果]\n    \n    H --> I[传递给管理层]\n```\n\n### 辩论状态管理\n\n```python\n# 辩论状态类型\nDEBATE_STATES = {\n    \"initial\": \"初始状态\",\n    \"bull_turn\": \"看涨方发言\",\n    \"bear_turn\": \"看跌方发言\",\n    \"rebuttal\": \"反驳阶段\",\n    \"conclusion\": \"总结阶段\"\n}\n\n# 状态转换逻辑\ndef update_debate_state(current_state, participant):\n    if current_state == \"initial\":\n        return \"bull_turn\" if participant == \"bull\" else \"bear_turn\"\n    elif current_state in [\"bull_turn\", \"bear_turn\"]:\n        return \"rebuttal\"\n    elif current_state == \"rebuttal\":\n        return \"conclusion\"\n    return current_state\n```\n\n### 记忆系统集成\n\n研究员支持历史记忆功能，能够：\n\n1. **历史辩论回顾**: 参考之前的辩论结果和观点\n2. **学习改进**: 从历史决策的成败中学习\n3. **一致性维护**: 保持观点的逻辑一致性\n4. **经验积累**: 积累特定股票或行业的分析经验\n\n```python\n# 记忆检索示例\nif memory is not None:\n    historical_debates = memory.get_relevant_debates(company_name)\n    previous_analysis = memory.get_analysis_history(company_name)\nelse:\n    logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n## 股票类型支持\n\n### 多市场分析能力\n\n研究员团队支持全球主要股票市场的分析：\n\n```python\n# 市场信息获取\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 根据市场类型调整分析策略\nif market_info.get(\"is_china\"):\n    # A股特有的分析逻辑\n    analysis_context = \"中国A股市场\"\n    currency = \"人民币\"\nelif market_info.get(\"is_hk\"):\n    # 港股特有的分析逻辑\n    analysis_context = \"香港股市\"\n    currency = \"港币\"\nelif market_info.get(\"is_us\"):\n    # 美股特有的分析逻辑\n    analysis_context = \"美国股市\"\n    currency = \"美元\"\n```\n\n### 本土化分析\n\n1. **A股市场**:\n   - 政策影响分析\n   - 监管环境评估\n   - 国内经济周期考量\n   - 投资者结构特点\n\n2. **港股市场**:\n   - 中港两地联动\n   - 汇率风险评估\n   - 国际资本流动\n   - 估值差异分析\n\n3. **美股市场**:\n   - 美联储政策影响\n   - 全球经济环境\n   - 行业竞争格局\n   - 技术创新趋势\n\n## 分析维度\n\n### 看涨研究员关注点\n\n1. **增长潜力**:\n   - 收入增长趋势\n   - 市场份额扩张\n   - 新产品/服务机会\n   - 国际化进展\n\n2. **估值优势**:\n   - 相对估值吸引力\n   - 历史估值比较\n   - 同行业估值对比\n   - 资产价值重估\n\n3. **催化因素**:\n   - 政策利好\n   - 行业景气度提升\n   - 技术突破\n   - 管理层变化\n\n4. **财务健康**:\n   - 现金流改善\n   - 盈利能力提升\n   - 债务结构优化\n   - 分红政策\n\n### 看跌研究员关注点\n\n1. **风险因素**:\n   - 行业衰退风险\n   - 竞争加剧威胁\n   - 监管政策风险\n   - 技术替代风险\n\n2. **估值风险**:\n   - 估值过高警示\n   - 泡沫风险评估\n   - 盈利预期过于乐观\n   - 市场情绪过热\n\n3. **财务问题**:\n   - 现金流恶化\n   - 债务负担过重\n   - 盈利质量下降\n   - 会计问题质疑\n\n4. **宏观环境**:\n   - 经济周期下行\n   - 利率上升影响\n   - 汇率波动风险\n   - 地缘政治风险\n\n## 辩论质量评估\n\n### 论证强度指标\n\n1. **数据支撑度**:\n   - 引用数据的准确性\n   - 数据来源的可靠性\n   - 数据分析的深度\n   - 数据解读的合理性\n\n2. **逻辑一致性**:\n   - 论证链条的完整性\n   - 推理过程的严密性\n   - 结论与前提的一致性\n   - 反驳的有效性\n\n3. **风险识别**:\n   - 风险因素的全面性\n   - 风险评估的准确性\n   - 风险应对的可行性\n   - 风险权衡的合理性\n\n### 辩论输出质量\n\n```python\n# 辩论结果结构\nclass DebateResult:\n    bull_arguments: List[str]     # 看涨论点\n    bear_arguments: List[str]     # 看跌论点\n    key_disagreements: List[str]  # 主要分歧\n    consensus_points: List[str]   # 共识观点\n    confidence_level: float       # 置信度\n    recommendation_strength: str  # 建议强度\n```\n\n## 配置选项\n\n### 研究员配置\n\n```python\nresearcher_config = {\n    \"enable_memory\": True,        # 是否启用记忆功能\n    \"debate_rounds\": 3,           # 辩论轮数\n    \"argument_depth\": \"deep\",     # 论证深度\n    \"risk_tolerance\": \"moderate\", # 风险容忍度\n    \"analysis_style\": \"balanced\" # 分析风格\n}\n```\n\n### 辩论参数\n\n```python\ndebate_params = {\n    \"max_rounds\": 5,              # 最大辩论轮数\n    \"time_limit\": 300,            # 单轮时间限制(秒)\n    \"evidence_weight\": 0.7,       # 证据权重\n    \"logic_weight\": 0.3,          # 逻辑权重\n    \"consensus_threshold\": 0.8    # 共识阈值\n}\n```\n\n## 性能优化\n\n### 并行处理\n\n```python\n# 并行执行看涨和看跌分析\nimport asyncio\n\nasync def parallel_research(state):\n    bull_task = asyncio.create_task(bull_researcher(state))\n    bear_task = asyncio.create_task(bear_researcher(state))\n    \n    bull_result, bear_result = await asyncio.gather(bull_task, bear_task)\n    return bull_result, bear_result\n```\n\n### 缓存机制\n\n```python\n# 分析结果缓存\nfrom functools import lru_cache\n\n@lru_cache(maxsize=100)\ndef cached_analysis(ticker, date, report_hash):\n    # 缓存分析结果\n    pass\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 研究员活动日志\nlogger.info(f\"🐂 [看涨研究员] 开始分析股票: {company_name}\")\nlogger.info(f\"🐻 [看跌研究员] 开始分析股票: {company_name}\")\nlogger.debug(f\"📊 [辩论状态] 当前状态: {debate_state}\")\nlogger.warning(f\"⚠️ [记忆系统] memory为None，跳过历史记忆检索\")\n```\n\n### 性能指标\n\n- 辩论完成时间\n- 论证质量评分\n- 预测准确率\n- 风险识别率\n- 共识达成率\n\n## 扩展指南\n\n### 添加新的研究员类型\n\n1. **创建研究员文件**\n```python\n# tradingagents/agents/researchers/neutral_researcher.py\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\ndef create_neutral_researcher(llm, memory=None):\n    @log_researcher_module(\"neutral\")\n    def neutral_node(state):\n        # 中性研究员逻辑\n        pass\n    return neutral_node\n```\n\n2. **集成到辩论流程**\n```python\n# 在trading_graph.py中添加\nresearchers = {\n    \"bull\": create_bull_researcher(llm, memory),\n    \"bear\": create_bear_researcher(llm, memory),\n    \"neutral\": create_neutral_researcher(llm, memory)\n}\n```\n\n### 自定义辩论策略\n\n1. **实现策略接口**\n```python\nclass DebateStrategy:\n    def generate_arguments(self, reports, market_info):\n        pass\n    \n    def evaluate_counterarguments(self, opponent_args):\n        pass\n    \n    def synthesize_conclusion(self, all_arguments):\n        pass\n```\n\n2. **注册策略**\n```python\nstrategy_registry = {\n    \"aggressive_bull\": AggressiveBullStrategy(),\n    \"conservative_bear\": ConservativeBearStrategy(),\n    \"data_driven\": DataDrivenStrategy()\n}\n```\n\n## 最佳实践\n\n### 1. 平衡性维护\n- 确保看涨和看跌观点的平衡\n- 避免极端偏见\n- 基于数据而非情绪\n- 保持客观分析态度\n\n### 2. 质量控制\n- 验证数据来源\n- 检查逻辑一致性\n- 评估论证强度\n- 识别认知偏差\n\n### 3. 效率优化\n- 并行执行分析\n- 缓存重复计算\n- 优化内存使用\n- 减少冗余操作\n\n### 4. 可解释性\n- 提供清晰的推理路径\n- 标注关键假设\n- 量化不确定性\n- 记录决策依据\n\n## 故障排除\n\n### 常见问题\n\n1. **辩论陷入僵局**\n   - 引入新的分析维度\n   - 调整权重参数\n   - 增加外部信息\n   - 设置超时机制\n\n2. **观点过于极端**\n   - 调整风险容忍度\n   - 增加平衡机制\n   - 引入中性观点\n   - 强化数据验证\n\n3. **性能问题**\n   - 启用并行处理\n   - 优化缓存策略\n   - 减少分析深度\n   - 限制辩论轮数\n\n### 调试技巧\n\n1. **辩论过程追踪**\n```python\nlogger.debug(f\"辩论轮次: {round_number}\")\nlogger.debug(f\"当前发言方: {current_speaker}\")\nlogger.debug(f\"论点数量: {len(arguments)}\")\n```\n\n2. **状态检查**\n```python\nlogger.debug(f\"状态完整性: {validate_state(state)}\")\nlogger.debug(f\"报告可用性: {check_reports_availability(state)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行分析\nend_time = time.time()\nlogger.debug(f\"分析耗时: {end_time - start_time:.2f}秒\")\n```\n\n研究员团队通过结构化的辩论机制，确保投资决策的全面性和客观性，是TradingAgents框架中连接数据分析和最终决策的关键环节。","docs/agents/v0.1.13/analysts.md":"# 分析师团队\n\n## 概述\n\n分析师团队是 TradingAgents 框架的核心分析组件，负责从不同维度对股票进行专业分析。团队由四类专业分析师组成，每个分析师都专注于特定的分析领域，通过协作为投资决策提供全面的数据支持。\n\n## 分析师架构\n\n### 基础分析师设计\n\n所有分析师都基于统一的架构设计，使用相同的工具接口和日志系统：\n\n```python\n# 统一的分析师模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_analyst_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_analyst_module(\"analyst_type\")\ndef analyst_node(state):\n    # 分析师逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n分析师通过 `AgentState` 进行状态管理：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    messages: List              # 消息历史\n```\n\n## 分析师团队成员\n\n### 1. 基本面分析师 (Fundamentals Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/fundamentals_analyst.py`\n\n**核心职责**:\n- 分析公司财务数据和基本面指标\n- 评估公司估值和财务健康度\n- 提供基于财务数据的投资建议\n\n**技术特性**:\n- 使用统一工具架构自动识别股票类型\n- 支持A股、港股、美股的基本面分析\n- 智能选择合适的数据源（在线/离线模式）\n\n**核心实现**:\n```python\ndef create_fundamentals_analyst(llm, toolkit):\n    @log_analyst_module(\"fundamentals\")\n    def fundamentals_analyst_node(state):\n        ticker = state[\"company_of_interest\"]\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(ticker)\n        \n        # 获取公司名称\n        company_name = _get_company_name_for_fundamentals(ticker, market_info)\n        \n        # 选择合适的工具\n        if toolkit.config[\"online_tools\"]:\n            tools = [toolkit.get_stock_fundamentals_unified]\n        else:\n            # 离线模式工具选择\n            tools = [...]\n```\n\n**支持的数据源**:\n- **A股**: 统一接口获取中国股票信息\n- **港股**: 改进的港股工具\n- **美股**: FinnHub、SimFin等数据源\n\n### 2. 市场分析师 (Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/market_analyst.py`\n\n**核心职责**:\n- 技术指标分析（RSI、MACD、布林带等）\n- 价格趋势和图表模式识别\n- 支撑阻力位分析\n- 交易信号生成\n\n**分析维度**:\n- 短期技术指标\n- 中长期趋势分析\n- 成交量分析\n- 价格动量评估\n\n### 3. 新闻分析师 (News Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/news_analyst.py`\n\n**核心职责**:\n- 新闻事件影响分析\n- 宏观经济数据解读\n- 政策影响评估\n- 行业动态分析\n\n**数据来源**:\n- Google News API\n- FinnHub新闻数据\n- 实时新闻流\n- 经济数据发布\n\n**特殊功能**:\n- 新闻过滤和质量评估\n- 情感分析和影响评级\n- 时效性评估\n\n### 4. 社交媒体分析师 (Social Media Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/social_media_analyst.py`\n\n**核心职责**:\n- 社交媒体情绪分析\n- 投资者情绪监测\n- 舆论趋势识别\n- 热点话题追踪\n\n**数据来源**:\n- Reddit讨论数据\n- Twitter情感数据\n- 金融论坛讨论\n- 社交媒体热度指标\n\n### 5. 中国市场分析师 (China Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/china_market_analyst.py`\n\n**核心职责**:\n- 专门针对中国A股市场的分析\n- 中国特色的市场因素分析\n- 政策环境影响评估\n- 本土化的投资逻辑\n\n## 工具集成\n\n### 统一工具架构\n\n分析师使用统一的工具接口，支持自动股票类型识别：\n\n```python\n# 统一基本面分析工具\ntools = [toolkit.get_stock_fundamentals_unified]\n\n# 工具内部自动识别股票类型并调用相应数据源\n# - A股: 使用中国股票数据接口\n# - 港股: 使用港股专用接口\n# - 美股: 使用FinnHub等国际数据源\n```\n\n### 在线/离线模式\n\n**在线模式** (`online_tools=True`):\n- 使用实时API数据\n- 数据最新但成本较高\n- 适合生产环境\n\n**离线模式** (`online_tools=False`):\n- 使用缓存数据\n- 成本低但数据可能滞后\n- 适合开发和测试\n\n## 股票类型支持\n\n### 市场识别机制\n\n```python\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 返回信息包括：\n# - is_china: 是否为A股\n# - is_hk: 是否为港股\n# - is_us: 是否为美股\n# - market_name: 市场名称\n# - currency_name: 货币名称\n# - currency_symbol: 货币符号\n```\n\n### 支持的市场\n\n1. **中国A股**\n   - 股票代码格式：000001, 600000等\n   - 货币单位：人民币(CNY)\n   - 数据源：统一中国股票接口\n\n2. **香港股市**\n   - 股票代码格式：0700.HK, 00700等\n   - 货币单位：港币(HKD)\n   - 数据源：改进的港股工具\n\n3. **美国股市**\n   - 股票代码格式：AAPL, TSLA等\n   - 货币单位：美元(USD)\n   - 数据源：FinnHub, Yahoo Finance等\n\n## 分析流程\n\n### 1. 数据获取阶段\n```mermaid\ngraph LR\n    A[股票代码] --> B[市场类型识别]\n    B --> C[选择数据源]\n    C --> D[获取原始数据]\n    D --> E[数据预处理]\n```\n\n### 2. 分析执行阶段\n```mermaid\ngraph TB\n    A[原始数据] --> B[基本面分析师]\n    A --> C[市场分析师]\n    A --> D[新闻分析师]\n    A --> E[社交媒体分析师]\n    \n    B --> F[基本面报告]\n    C --> G[市场分析报告]\n    D --> H[新闻分析报告]\n    E --> I[情绪分析报告]\n```\n\n### 3. 报告生成阶段\n```mermaid\ngraph LR\n    A[各分析师报告] --> B[状态更新]\n    B --> C[传递给研究员团队]\n    C --> D[进入辩论阶段]\n```\n\n## 配置选项\n\n### 分析师选择\n```python\n# 可选择的分析师类型\nselected_analysts = [\n    \"market\",        # 市场分析师\n    \"social\",        # 社交媒体分析师\n    \"news\",          # 新闻分析师\n    \"fundamentals\"   # 基本面分析师\n]\n```\n\n### 工具配置\n```python\ntoolkit_config = {\n    \"online_tools\": True,     # 是否使用在线工具\n    \"cache_enabled\": True,    # 是否启用缓存\n    \"timeout\": 30,           # API超时时间\n    \"retry_count\": 3         # 重试次数\n}\n```\n\n## 日志和监控\n\n### 统一日志系统\n```python\n# 每个分析师都使用统一的日志系统\nlogger = get_logger(\"default\")\n\n# 详细的调试日志\nlogger.debug(f\"📊 [DEBUG] 基本面分析师节点开始\")\nlogger.info(f\"📊 [基本面分析师] 正在分析股票: {ticker}\")\nlogger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n### 性能监控\n- 分析耗时统计\n- API调用次数追踪\n- 错误率监控\n- 缓存命中率统计\n\n## 扩展指南\n\n### 添加新的分析师\n\n1. **创建分析师文件**\n```python\n# tradingagents/agents/analysts/custom_analyst.py\nfrom tradingagents.utils.tool_logging import log_analyst_module\nfrom tradingagents.utils.logging_init import get_logger\n\ndef create_custom_analyst(llm, toolkit):\n    @log_analyst_module(\"custom\")\n    def custom_analyst_node(state):\n        # 自定义分析逻辑\n        pass\n    return custom_analyst_node\n```\n\n2. **注册到系统**\n```python\n# 在trading_graph.py中添加\nselected_analysts.append(\"custom\")\n```\n\n### 添加新的数据源\n\n1. **实现数据接口**\n2. **添加到工具集**\n3. **更新配置选项**\n\n## 最佳实践\n\n### 1. 错误处理\n- 使用try-catch包装API调用\n- 提供降级方案\n- 记录详细错误信息\n\n### 2. 性能优化\n- 启用数据缓存\n- 合理设置超时时间\n- 避免重复API调用\n\n### 3. 数据质量\n- 验证数据完整性\n- 处理异常值\n- 提供数据质量评分\n\n### 4. 可维护性\n- 使用统一的代码结构\n- 添加详细的注释\n- 遵循命名规范\n\n## 故障排除\n\n### 常见问题\n\n1. **API调用失败**\n   - 检查网络连接\n   - 验证API密钥\n   - 查看速率限制\n\n2. **数据格式错误**\n   - 检查股票代码格式\n   - 验证市场类型识别\n   - 查看数据源兼容性\n\n3. **性能问题**\n   - 启用缓存机制\n   - 优化并发设置\n   - 减少不必要的API调用\n\n### 调试技巧\n\n1. **启用详细日志**\n```python\nlogger.setLevel(logging.DEBUG)\n```\n\n2. **检查状态传递**\n```python\nlogger.debug(f\"当前状态: {state}\")\n```\n\n3. **验证工具配置**\n```python\nlogger.debug(f\"工具配置: {toolkit.config}\")\n```\n\n分析师团队是整个TradingAgents框架的基础，通过专业化分工和协作，为后续的研究辩论和交易决策提供高质量的数据支持。","docs/agents/v0.1.13/managers.md":"# 管理层团队\n\n## 概述\n\n管理层团队是 TradingAgents 框架的决策核心，负责协调各个智能体的工作流程，评估投资辩论，并做出最终的投资决策。管理层通过综合分析师、研究员、交易员和风险管理团队的输出，形成全面的投资策略和具体的执行计划。\n\n## 管理层架构\n\n### 基础设计\n\n管理层团队基于统一的架构设计，专注于决策协调和策略制定：\n\n```python\n# 统一的管理层模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_manager_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_manager_module(\"manager_type\")\ndef manager_node(state):\n    # 管理层决策逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n管理层团队通过 `AgentState` 获取完整的分析和决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    bull_argument: str           # 看涨论证\n    bear_argument: str           # 看跌论证\n    trader_recommendation: str   # 交易员建议\n    risk_analysis: str           # 风险分析\n    messages: List              # 消息历史\n```\n\n## 管理层团队成员\n\n### 1. 研究经理 (Research Manager)\n\n**文件位置**: `tradingagents/agents/managers/research_manager.py`\n\n**核心职责**:\n- 作为投资组合经理和辩论主持人\n- 评估投资辩论质量和有效性\n- 总结看涨和看跌分析师的关键观点\n- 基于最有说服力的证据做出明确的买入、卖出或持有决策\n- 为交易员制定详细的投资计划\n\n**核心实现**:\n```python\ndef create_research_manager(llm):\n    @log_manager_module(\"research_manager\")\n    def research_manager_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trade_date = state.get(\"trade_date\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        \n        # 获取辩论结果\n        bull_argument = state.get(\"bull_argument\", \"\")\n        bear_argument = state.get(\"bear_argument\", \"\")\n        \n        # 构建研究经理决策提示\n        manager_prompt = f\"\"\"\n        作为投资组合经理和辩论主持人，请基于以下信息做出投资决策：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        交易日期: {trade_date}\n        \n        === 基础分析报告 ===\n        基本面报告: {fundamentals_report}\n        市场分析报告: {market_report}\n        情绪分析报告: {sentiment_report}\n        新闻分析报告: {news_report}\n        \n        === 投资辩论结果 ===\n        看涨论证: {bull_argument}\n        看跌论证: {bear_argument}\n        \n        请作为经验丰富的投资组合经理：\n        1. 评估辩论质量和论证强度\n        2. 总结关键投资观点和风险因素\n        3. 做出明确的投资决策（买入/卖出/持有）\n        4. 制定详细的投资计划和执行策略\n        5. 提供具体的目标价格和时间框架\n        6. 说明决策理由和风险控制措施\n        \n        请确保决策基于客观分析，并提供清晰的执行指导。\n        \"\"\"\n        \n        # 调用LLM生成投资决策\n        response = llm.invoke(manager_prompt)\n        \n        return {\"investment_plan\": response.content}\n```\n\n**决策特点**:\n- **综合评估**: 全面考虑各类分析报告和辩论结果\n- **客观决策**: 基于证据强度而非个人偏好做决策\n- **具体指导**: 提供明确的执行计划和目标价格\n- **风险意识**: 充分考虑风险因素和控制措施\n\n### 2. 投资组合经理 (Portfolio Manager)\n\n**文件位置**: `tradingagents/agents/managers/portfolio_manager.py`\n\n**核心职责**:\n- 管理整体投资组合配置\n- 协调多个股票的投资决策\n- 优化资产配置和风险分散\n- 监控组合绩效和风险指标\n\n**核心功能**:\n```python\ndef create_portfolio_manager(llm):\n    @log_manager_module(\"portfolio_manager\")\n    def portfolio_manager_node(state):\n        # 获取组合信息\n        portfolio_holdings = state.get(\"portfolio_holdings\", {})\n        available_capital = state.get(\"available_capital\", 0)\n        risk_tolerance = state.get(\"risk_tolerance\", \"moderate\")\n        \n        # 获取新的投资建议\n        new_investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建组合管理提示\n        portfolio_prompt = f\"\"\"\n        作为投资组合经理，请评估新的投资建议对整体组合的影响：\n        \n        === 当前组合状况 ===\n        持仓情况: {portfolio_holdings}\n        可用资金: {available_capital}\n        风险偏好: {risk_tolerance}\n        \n        === 新投资建议 ===\n        目标股票: {company_name}\n        投资计划: {new_investment_plan}\n        \n        请分析：\n        1. 新投资对组合风险收益的影响\n        2. 建议的仓位大小和配置比例\n        3. 与现有持仓的相关性分析\n        4. 组合整体风险评估\n        5. 再平衡建议（如需要）\n        \n        请提供具体的组合调整方案。\n        \"\"\"\n        \n        response = llm.invoke(portfolio_prompt)\n        \n        return {\"portfolio_adjustment\": response.content}\n```\n\n**管理特点**:\n- **整体视角**: 从组合层面考虑单个投资决策\n- **风险分散**: 优化资产配置以降低整体风险\n- **动态调整**: 根据市场变化调整组合配置\n- **绩效监控**: 持续跟踪组合表现和风险指标\n\n### 3. 风险经理 (Risk Manager)\n\n**文件位置**: `tradingagents/agents/managers/risk_manager.py`\n\n**核心职责**:\n- 监控整体风险敞口\n- 设定和执行风险限额\n- 协调风险控制措施\n- 提供风险管理指导\n\n**核心功能**:\n```python\ndef create_risk_manager(llm):\n    @log_manager_module(\"risk_manager\")\n    def risk_manager_node(state):\n        # 获取风险分析结果\n        conservative_analysis = state.get(\"conservative_risk_analysis\", \"\")\n        aggressive_analysis = state.get(\"aggressive_risk_analysis\", \"\")\n        neutral_analysis = state.get(\"neutral_risk_analysis\", \"\")\n        \n        # 获取投资计划\n        investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建风险管理提示\n        risk_management_prompt = f\"\"\"\n        作为风险经理，请基于多角度风险分析制定风险管理策略：\n        \n        === 风险分析结果 ===\n        保守风险分析: {conservative_analysis}\n        激进风险分析: {aggressive_analysis}\n        中性风险分析: {neutral_analysis}\n        \n        === 投资计划 ===\n        目标股票: {company_name}\n        投资方案: {investment_plan}\n        \n        请制定：\n        1. 综合风险评估和等级\n        2. 具体的风险控制措施\n        3. 止损止盈策略\n        4. 仓位管理建议\n        5. 风险监控指标\n        6. 应急预案\n        \n        请提供可执行的风险管理方案。\n        \"\"\"\n        \n        response = llm.invoke(risk_management_prompt)\n        \n        return {\"risk_management_plan\": response.content}\n```\n\n**管理特点**:\n- **全面监控**: 监控各类风险因素和指标\n- **主动管理**: 主动识别和控制潜在风险\n- **量化分析**: 使用量化方法评估风险\n- **应急响应**: 制定风险事件应对预案\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```python\nclass InformationGathering:\n    def __init__(self):\n        self.required_reports = [\n            \"fundamentals_report\",\n            \"market_report\", \n            \"sentiment_report\",\n            \"news_report\"\n        ]\n        self.debate_results = [\n            \"bull_argument\",\n            \"bear_argument\"\n        ]\n        self.risk_analyses = [\n            \"conservative_risk_analysis\",\n            \"aggressive_risk_analysis\",\n            \"neutral_risk_analysis\"\n        ]\n    \n    def validate_inputs(self, state):\n        \"\"\"验证输入信息完整性\"\"\"\n        missing_reports = []\n        \n        for report in self.required_reports:\n            if not state.get(report):\n                missing_reports.append(report)\n        \n        if missing_reports:\n            logger.warning(f\"缺少必要报告: {missing_reports}\")\n            return False, missing_reports\n        \n        return True, []\n    \n    def assess_information_quality(self, state):\n        \"\"\"评估信息质量\"\"\"\n        quality_scores = {}\n        \n        for report in self.required_reports:\n            content = state.get(report, \"\")\n            quality_scores[report] = self.calculate_content_quality(content)\n        \n        return quality_scores\n    \n    def calculate_content_quality(self, content):\n        \"\"\"计算内容质量分数\"\"\"\n        if not content:\n            return 0.0\n        \n        # 基于长度、关键词、结构等因素评估质量\n        length_score = min(len(content) / 1000, 1.0)  # 标准化长度分数\n        keyword_score = self.check_keywords(content)\n        structure_score = self.check_structure(content)\n        \n        return (length_score + keyword_score + structure_score) / 3\n```\n\n### 2. 辩论评估阶段\n\n```python\nclass DebateEvaluation:\n    def __init__(self):\n        self.evaluation_criteria = {\n            \"logic_strength\": 0.3,      # 逻辑强度\n            \"evidence_quality\": 0.3,    # 证据质量\n            \"risk_awareness\": 0.2,      # 风险意识\n            \"market_insight\": 0.2       # 市场洞察\n        }\n    \n    def evaluate_arguments(self, bull_argument, bear_argument):\n        \"\"\"评估辩论论证质量\"\"\"\n        bull_score = self.score_argument(bull_argument)\n        bear_score = self.score_argument(bear_argument)\n        \n        return {\n            \"bull_score\": bull_score,\n            \"bear_score\": bear_score,\n            \"winner\": \"bull\" if bull_score > bear_score else \"bear\",\n            \"confidence\": abs(bull_score - bear_score)\n        }\n    \n    def score_argument(self, argument):\n        \"\"\"为单个论证打分\"\"\"\n        scores = {}\n        \n        for criterion, weight in self.evaluation_criteria.items():\n            criterion_score = self.evaluate_criterion(argument, criterion)\n            scores[criterion] = criterion_score * weight\n        \n        return sum(scores.values())\n    \n    def evaluate_criterion(self, argument, criterion):\n        \"\"\"评估特定标准\"\"\"\n        # 使用NLP技术或规则评估论证质量\n        if criterion == \"logic_strength\":\n            return self.assess_logical_structure(argument)\n        elif criterion == \"evidence_quality\":\n            return self.assess_evidence_strength(argument)\n        elif criterion == \"risk_awareness\":\n            return self.assess_risk_consideration(argument)\n        elif criterion == \"market_insight\":\n            return self.assess_market_understanding(argument)\n        \n        return 0.5  # 默认分数\n```\n\n### 3. 决策制定阶段\n\n```python\nclass DecisionMaking:\n    def __init__(self, config):\n        self.decision_thresholds = config.get(\"decision_thresholds\", {\n            \"strong_buy\": 0.8,\n            \"buy\": 0.6,\n            \"hold\": 0.4,\n            \"sell\": 0.2,\n            \"strong_sell\": 0.0\n        })\n        self.confidence_threshold = config.get(\"confidence_threshold\", 0.7)\n    \n    def make_investment_decision(self, analysis_results):\n        \"\"\"制定投资决策\"\"\"\n        # 综合各项分析结果\n        fundamental_score = analysis_results.get(\"fundamental_score\", 0.5)\n        technical_score = analysis_results.get(\"technical_score\", 0.5)\n        sentiment_score = analysis_results.get(\"sentiment_score\", 0.5)\n        debate_score = analysis_results.get(\"debate_score\", 0.5)\n        risk_score = analysis_results.get(\"risk_score\", 0.5)\n        \n        # 加权计算综合分数\n        weights = {\n            \"fundamental\": 0.3,\n            \"technical\": 0.2,\n            \"sentiment\": 0.15,\n            \"debate\": 0.25,\n            \"risk\": 0.1\n        }\n        \n        composite_score = (\n            fundamental_score * weights[\"fundamental\"] +\n            technical_score * weights[\"technical\"] +\n            sentiment_score * weights[\"sentiment\"] +\n            debate_score * weights[\"debate\"] +\n            (1 - risk_score) * weights[\"risk\"]  # 风险分数取反\n        )\n        \n        # 确定投资决策\n        decision = self.score_to_decision(composite_score)\n        confidence = self.calculate_confidence(analysis_results)\n        \n        return {\n            \"decision\": decision,\n            \"composite_score\": composite_score,\n            \"confidence\": confidence,\n            \"reasoning\": self.generate_reasoning(analysis_results, decision)\n        }\n    \n    def score_to_decision(self, score):\n        \"\"\"将分数转换为投资决策\"\"\"\n        if score >= self.decision_thresholds[\"strong_buy\"]:\n            return \"强烈买入\"\n        elif score >= self.decision_thresholds[\"buy\"]:\n            return \"买入\"\n        elif score >= self.decision_thresholds[\"hold\"]:\n            return \"持有\"\n        elif score >= self.decision_thresholds[\"sell\"]:\n            return \"卖出\"\n        else:\n            return \"强烈卖出\"\n    \n    def calculate_confidence(self, analysis_results):\n        \"\"\"计算决策置信度\"\"\"\n        # 基于各项分析的一致性计算置信度\n        scores = [\n            analysis_results.get(\"fundamental_score\", 0.5),\n            analysis_results.get(\"technical_score\", 0.5),\n            analysis_results.get(\"sentiment_score\", 0.5),\n            analysis_results.get(\"debate_score\", 0.5)\n        ]\n        \n        # 计算标准差，标准差越小置信度越高\n        import numpy as np\n        std_dev = np.std(scores)\n        confidence = max(0, 1 - std_dev * 2)  # 标准化到0-1范围\n        \n        return confidence\n```\n\n### 4. 执行计划制定\n\n```python\nclass ExecutionPlanning:\n    def __init__(self, config):\n        self.position_sizing_method = config.get(\"position_sizing\", \"kelly\")\n        self.max_position_size = config.get(\"max_position_size\", 0.05)\n        self.min_position_size = config.get(\"min_position_size\", 0.01)\n    \n    def create_execution_plan(self, decision_result, market_info):\n        \"\"\"创建执行计划\"\"\"\n        decision = decision_result[\"decision\"]\n        confidence = decision_result[\"confidence\"]\n        \n        if decision in [\"买入\", \"强烈买入\"]:\n            return self.create_buy_plan(decision_result, market_info)\n        elif decision in [\"卖出\", \"强烈卖出\"]:\n            return self.create_sell_plan(decision_result, market_info)\n        else:\n            return self.create_hold_plan(decision_result, market_info)\n    \n    def create_buy_plan(self, decision_result, market_info):\n        \"\"\"创建买入计划\"\"\"\n        confidence = decision_result[\"confidence\"]\n        current_price = market_info.get(\"current_price\", 0)\n        \n        # 计算仓位大小\n        position_size = self.calculate_position_size(\n            decision_result, market_info\n        )\n        \n        # 计算目标价格\n        target_price = self.calculate_target_price(\n            current_price, decision_result, \"buy\"\n        )\n        \n        # 计算止损价格\n        stop_loss = self.calculate_stop_loss(\n            current_price, decision_result, \"buy\"\n        )\n        \n        return {\n            \"action\": \"买入\",\n            \"position_size\": position_size,\n            \"entry_price\": current_price,\n            \"target_price\": target_price,\n            \"stop_loss\": stop_loss,\n            \"time_horizon\": self.estimate_time_horizon(decision_result),\n            \"execution_strategy\": self.select_execution_strategy(market_info)\n        }\n    \n    def calculate_position_size(self, decision_result, market_info):\n        \"\"\"计算仓位大小\"\"\"\n        confidence = decision_result[\"confidence\"]\n        volatility = market_info.get(\"volatility\", 0.2)\n        \n        if self.position_sizing_method == \"kelly\":\n            # 凯利公式\n            expected_return = decision_result.get(\"expected_return\", 0.1)\n            win_rate = confidence\n            avg_win = expected_return\n            avg_loss = volatility\n            \n            kelly_fraction = (win_rate * avg_win - (1 - win_rate) * avg_loss) / avg_win\n            position_size = max(self.min_position_size, \n                              min(self.max_position_size, kelly_fraction))\n        \n        elif self.position_sizing_method == \"fixed\":\n            # 固定仓位\n            base_size = 0.02\n            position_size = base_size * confidence\n        \n        else:\n            # 风险平价\n            target_risk = 0.02\n            position_size = target_risk / volatility\n        \n        return min(self.max_position_size, max(self.min_position_size, position_size))\n```\n\n## 决策质量评估\n\n### 决策评估框架\n\n```python\nclass DecisionQualityAssessment:\n    def __init__(self):\n        self.quality_metrics = {\n            \"information_completeness\": 0.2,    # 信息完整性\n            \"analysis_depth\": 0.2,              # 分析深度\n            \"risk_consideration\": 0.2,           # 风险考虑\n            \"logical_consistency\": 0.2,          # 逻辑一致性\n            \"execution_feasibility\": 0.2         # 执行可行性\n        }\n    \n    def assess_decision_quality(self, decision_process):\n        \"\"\"评估决策质量\"\"\"\n        quality_scores = {}\n        \n        for metric, weight in self.quality_metrics.items():\n            score = self.evaluate_metric(decision_process, metric)\n            quality_scores[metric] = score * weight\n        \n        overall_quality = sum(quality_scores.values())\n        \n        return {\n            \"overall_quality\": overall_quality,\n            \"metric_scores\": quality_scores,\n            \"quality_grade\": self.grade_quality(overall_quality),\n            \"improvement_suggestions\": self.suggest_improvements(quality_scores)\n        }\n    \n    def evaluate_metric(self, decision_process, metric):\n        \"\"\"评估特定质量指标\"\"\"\n        if metric == \"information_completeness\":\n            return self.assess_information_completeness(decision_process)\n        elif metric == \"analysis_depth\":\n            return self.assess_analysis_depth(decision_process)\n        elif metric == \"risk_consideration\":\n            return self.assess_risk_consideration(decision_process)\n        elif metric == \"logical_consistency\":\n            return self.assess_logical_consistency(decision_process)\n        elif metric == \"execution_feasibility\":\n            return self.assess_execution_feasibility(decision_process)\n        \n        return 0.5  # 默认分数\n    \n    def grade_quality(self, score):\n        \"\"\"质量等级评定\"\"\"\n        if score >= 0.9:\n            return \"优秀\"\n        elif score >= 0.8:\n            return \"良好\"\n        elif score >= 0.7:\n            return \"中等\"\n        elif score >= 0.6:\n            return \"及格\"\n        else:\n            return \"需要改进\"\n```\n\n## 配置选项\n\n### 管理层配置\n\n```python\nmanager_config = {\n    \"decision_model\": \"consensus\",          # 决策模型\n    \"confidence_threshold\": 0.7,           # 置信度阈值\n    \"risk_tolerance\": \"moderate\",          # 风险容忍度\n    \"position_sizing_method\": \"kelly\",     # 仓位计算方法\n    \"max_position_size\": 0.05,             # 最大仓位\n    \"rebalance_frequency\": \"weekly\",       # 再平衡频率\n    \"performance_review_period\": \"monthly\" # 绩效评估周期\n}\n```\n\n### 决策参数\n\n```python\ndecision_params = {\n    \"analysis_weights\": {                  # 分析权重\n        \"fundamental\": 0.3,\n        \"technical\": 0.2,\n        \"sentiment\": 0.15,\n        \"debate\": 0.25,\n        \"risk\": 0.1\n    },\n    \"decision_thresholds\": {               # 决策阈值\n        \"strong_buy\": 0.8,\n        \"buy\": 0.6,\n        \"hold\": 0.4,\n        \"sell\": 0.2,\n        \"strong_sell\": 0.0\n    },\n    \"time_horizons\": {                     # 投资期限\n        \"short_term\": \"1-3个月\",\n        \"medium_term\": \"3-12个月\",\n        \"long_term\": \"1年以上\"\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 管理层活动日志\nlogger.info(f\"👔 [管理层] 开始决策流程: {company_name}\")\nlogger.info(f\"📋 [信息收集] 收集到 {len(reports)} 份分析报告\")\nlogger.info(f\"⚖️ [辩论评估] 看涨分数: {bull_score:.2f}, 看跌分数: {bear_score:.2f}\")\nlogger.info(f\"🎯 [投资决策] 决策: {decision}, 置信度: {confidence:.2%}\")\nlogger.info(f\"📊 [执行计划] 仓位: {position_size:.2%}, 目标价: {target_price}\")\nlogger.info(f\"✅ [决策完成] 投资计划制定完成\")\n```\n\n### 绩效监控指标\n\n- 决策准确率\n- 风险调整收益\n- 最大回撤控制\n- 决策执行效率\n- 组合多样化程度\n\n## 扩展指南\n\n### 添加新的管理角色\n\n1. **创建新管理角色**\n```python\n# tradingagents/agents/managers/new_manager.py\nfrom tradingagents.utils.tool_logging import log_manager_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_manager(llm):\n    @log_manager_module(\"new_manager\")\n    def new_manager_node(state):\n        # 新管理角色逻辑\n        pass\n    \n    return new_manager_node\n```\n\n2. **集成到决策流程**\n```python\n# 在图配置中添加新管理角色\nfrom tradingagents.agents.managers.new_manager import create_new_manager\n\nnew_manager = create_new_manager(llm)\n```\n\n### 自定义决策模型\n\n1. **实现决策模型接口**\n```python\nclass DecisionModel:\n    def analyze_inputs(self, state):\n        pass\n    \n    def make_decision(self, analysis_results):\n        pass\n    \n    def create_execution_plan(self, decision):\n        pass\n```\n\n2. **注册决策模型**\n```python\ndecision_models = {\n    \"consensus\": ConsensusModel(),\n    \"majority_vote\": MajorityVoteModel(),\n    \"weighted_average\": WeightedAverageModel()\n}\n```\n\n## 最佳实践\n\n### 1. 全面信息整合\n- 确保所有必要信息都已收集\n- 验证信息质量和可靠性\n- 识别信息缺口和不确定性\n- 建立信息更新机制\n\n### 2. 客观决策制定\n- 基于数据和分析而非直觉\n- 考虑多种情景和可能性\n- 量化风险和收益预期\n- 保持决策过程透明\n\n### 3. 动态策略调整\n- 定期评估决策效果\n- 根据市场变化调整策略\n- 学习和改进决策模型\n- 保持策略灵活性\n\n### 4. 有效风险管理\n- 设定明确的风险限额\n- 建立多层风险控制机制\n- 定期进行压力测试\n- 制定应急预案\n\n## 故障排除\n\n### 常见问题\n\n1. **决策冲突**\n   - 检查各分析师输出一致性\n   - 调整决策权重配置\n   - 增加仲裁机制\n   - 提高信息质量\n\n2. **执行计划不可行**\n   - 验证市场流动性\n   - 调整仓位大小\n   - 修改执行时间框架\n   - 考虑市场冲击成本\n\n3. **决策质量下降**\n   - 评估输入信息质量\n   - 检查模型参数设置\n   - 更新决策算法\n   - 增加人工审核\n\n### 调试技巧\n\n1. **决策流程跟踪**\n```python\nlogger.debug(f\"决策输入: {decision_inputs}\")\nlogger.debug(f\"分析结果: {analysis_results}\")\nlogger.debug(f\"决策输出: {decision_output}\")\n```\n\n2. **质量评估**\n```python\nlogger.debug(f\"信息完整性: {information_completeness}\")\nlogger.debug(f\"分析深度: {analysis_depth}\")\nlogger.debug(f\"决策质量: {decision_quality}\")\n```\n\n管理层团队作为TradingAgents框架的决策中枢，通过科学的决策流程和全面的信息整合，确保投资决策的质量和有效性，为投资组合的成功管理提供强有力的领导和指导。","docs/agents/v0.1.13/risk-management.md":"# 风险管理团队\n\n## 概述\n\n风险管理团队是 TradingAgents 框架的风险控制核心，负责从多个角度评估和质疑投资决策，确保投资组合的风险可控性。团队由不同风险偏好的分析师组成，通过多角度的风险评估和反驳机制，为投资决策提供全面的风险视角和保护措施。\n\n## 风险管理架构\n\n### 基础设计\n\n风险管理团队基于统一的架构设计，专注于风险识别、评估和控制：\n\n```python\n# 统一的风险管理模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_risk_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_risk_module(\"risk_type\")\ndef risk_node(state):\n    # 风险管理逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n风险管理团队通过 `AgentState` 获取完整的投资决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    trader_recommendation: str   # 交易员建议\n    messages: List              # 消息历史\n```\n\n## 风险管理团队成员\n\n### 1. 保守风险分析师 (Conservative Risk Analyst)\n\n**文件位置**: `tradingagents/agents/risk_mgmt/conservative_debator.py`\n\n**核心职责**:\n- 作为安全/保守风险分析师\n- 积极反驳激进和中性分析师的论点\n- 指出潜在风险并提出更谨慎的替代方案\n- 保护资产、最小化波动性并确保稳定增长\n\n**核心实现**:\n```python\ndef create_safe_debator(llm):\n    @log_risk_module(\"conservative\")\n    def safe_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trader_recommendation = state.get(\"trader_recommendation\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建保守风险分析提示\n        safe_prompt = f\"\"\"\n        作为安全/保守风险分析师，请对以下投资决策进行风险评估：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        交易员建议: {trader_recommendation}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请从保守角度分析：\n        1. 识别所有潜在风险因素\n        2. 质疑乐观假设的合理性\n        3. 提出更谨慎的替代方案\n        4. 建议风险控制措施\n        5. 评估最坏情况下的损失\n        \"\"\"\n        \n        # 调用LLM生成风险分析\n        response = llm.invoke(safe_prompt)\n        \n        return {\"conservative_risk_analysis\": response.content}\n```\n\n**分析特点**:\n- **风险优先**: 优先识别和强调各类风险因素\n- **保守估值**: 倾向于更保守的估值和预期\n- **防御策略**: 重点关注资本保护和风险控制\n- **质疑乐观**: 对乐观预期和假设保持质疑态度\n\n## 风险评估维度\n\n### 1. 市场风险\n\n**系统性风险**:\n- 宏观经济风险\n- 政策监管风险\n- 利率汇率风险\n- 地缘政治风险\n\n**非系统性风险**:\n- 行业周期风险\n- 公司特定风险\n- 管理层风险\n- 竞争环境风险\n\n### 2. 流动性风险\n\n**市场流动性**:\n- 交易量分析\n- 买卖价差评估\n- 市场深度分析\n- 冲击成本评估\n\n**资金流动性**:\n- 现金流分析\n- 融资能力评估\n- 债务到期分析\n- 营运资金管理\n\n### 3. 信用风险\n\n**财务风险**:\n- 债务负担评估\n- 偿债能力分析\n- 现金流稳定性\n- 盈利质量评估\n\n**运营风险**:\n- 业务模式风险\n- 管理层风险\n- 内控制度风险\n- 合规风险\n\n### 4. 估值风险\n\n**估值方法风险**:\n- 估值模型选择\n- 参数敏感性分析\n- 假设条件评估\n- 比较基准选择\n\n**市场估值风险**:\n- 市场情绪影响\n- 估值泡沫风险\n- 价格发现效率\n- 投资者结构影响\n\n## 配置选项\n\n### 风险管理配置\n\n```python\nrisk_config = {\n    \"risk_tolerance\": \"moderate\",      # 风险容忍度\n    \"max_portfolio_var\": 0.05,         # 最大组合VaR\n    \"max_single_position\": 0.05,       # 最大单一仓位\n    \"max_sector_exposure\": 0.20,       # 最大行业敞口\n    \"correlation_threshold\": 0.70,     # 相关性阈值\n    \"rebalance_trigger\": 0.05,         # 再平衡触发阈值\n    \"stress_test_frequency\": \"weekly\"  # 压力测试频率\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 风险管理活动日志\nlogger.info(f\"🛡️ [风险管理] 开始风险评估: {company_name}\")\nlogger.info(f\"📊 [风险分析] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"⚠️ [风险因素] 识别到 {len(risk_factors)} 个风险因素\")\nlogger.warning(f\"🚨 [风险预警] 发现高风险因素: {high_risk_factors}\")\nlogger.info(f\"✅ [风险评估] 风险分析完成，风险等级: {risk_level}\")\n```\n\n### 风险监控指标\n\n- 风险评估准确性\n- 风险预警及时性\n- 风险控制有效性\n- 损失预测精度\n- 风险调整收益\n\n## 扩展指南\n\n### 添加新的风险分析师\n\n1. **创建新的风险分析师文件**\n```python\n# tradingagents/agents/risk_mgmt/new_risk_analyst.py\nfrom tradingagents.utils.tool_logging import log_risk_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_risk_analyst(llm):\n    @log_risk_module(\"new_risk_type\")\n    def new_risk_node(state):\n        # 新的风险分析逻辑\n        pass\n    \n    return new_risk_node\n```\n\n2. **集成到风险管理系统**\n```python\n# 在相应的图配置中添加新的风险分析师\nfrom tradingagents.agents.risk_mgmt.new_risk_analyst import create_new_risk_analyst\n\nnew_risk_analyst = create_new_risk_analyst(llm)\n```\n\n## 最佳实践\n\n### 1. 全面风险识别\n- 系统性识别各类风险\n- 定期更新风险清单\n- 关注新兴风险因素\n- 建立风险分类体系\n\n### 2. 量化风险管理\n- 使用多种风险指标\n- 定期校准风险模型\n- 进行回测验证\n- 持续优化参数\n\n### 3. 动态风险控制\n- 实时监控风险水平\n- 及时调整风险敞口\n- 灵活应对市场变化\n- 保持风险预算平衡\n\n### 4. 透明风险沟通\n- 清晰传达风险信息\n- 定期发布风险报告\n- 及时发出风险预警\n- 提供风险教育培训\n\n## 故障排除\n\n### 常见问题\n\n1. **风险分析失败**\n   - 检查输入数据完整性\n   - 验证LLM连接状态\n   - 确认股票市场信息获取\n   - 检查日志记录\n\n2. **风险评估不准确**\n   - 更新风险模型参数\n   - 增加历史数据样本\n   - 调整风险因子权重\n   - 优化评估算法\n\n3. **风险控制过度保守**\n   - 调整风险容忍度参数\n   - 平衡风险与收益目标\n   - 优化仓位管理策略\n   - 考虑市场环境变化\n\n### 调试技巧\n\n1. **风险分析调试**\n```python\nlogger.debug(f\"风险分析输入: 公司={company_name}, 类型={stock_type}\")\nlogger.debug(f\"风险因素识别: {risk_factors}\")\nlogger.debug(f\"风险评估结果: {risk_assessment}\")\n```\n\n2. **状态验证**\n```python\nlogger.debug(f\"状态检查: 基本面报告长度={len(fundamentals_report)}\")\nlogger.debug(f\"状态检查: 市场报告长度={len(market_report)}\")\nlogger.debug(f\"状态检查: 交易员建议={trader_recommendation[:100]}...\")\n```\n\n风险管理团队作为TradingAgents框架的安全守护者，通过全面的风险识别、评估和控制，确保投资决策在可控风险范围内进行，为投资组合的长期稳健增长提供重要保障。","docs/agents/v0.1.13/trader.md":"# 交易员\n\n## 概述\n\n交易员是 TradingAgents 框架的执行层核心，负责基于研究员团队的辩论结果和管理层的投资计划，生成具体的投资建议和交易决策。交易员将所有前期分析和决策转化为可执行的投资行动，包括具体的目标价位、置信度评估和风险评分。\n\n## 交易员架构\n\n### 基础设计\n\n交易员基于统一的架构设计，集成了多维度分析能力和决策执行功能：\n\n```python\n# 统一的交易员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_trader_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_trader_module(\"trader\")\ndef trader_node(state):\n    # 交易员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n交易员通过 `AgentState` 获取完整的分析链条信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    investment_plan: str         # 投资计划\n    messages: List              # 消息历史\n```\n\n## 交易员实现\n\n### 核心功能\n\n**文件位置**: `tradingagents/agents/trader/trader.py`\n\n**核心职责**:\n- 综合分析所有输入信息\n- 生成具体的投资建议\n- 提供目标价位和置信度\n- 评估投资风险等级\n- 制定执行策略\n\n### 核心实现逻辑\n\n```python\ndef create_trader(llm):\n    @log_trader_module(\"trader\")\n    def trader_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        investment_plan = state.get(\"investment_plan\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建交易决策提示\n        trader_prompt = f\"\"\"\n        作为专业交易员，请基于以下信息生成投资建议：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        投资计划: {investment_plan}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请提供：\n        1. 明确的投资建议（买入/卖出/持有）\n        2. 具体目标价位（以{currency_unit}计价）\n        3. 置信度评估（0-100%）\n        4. 风险评分（1-10分）\n        5. 详细推理过程\n        \"\"\"\n        \n        # 调用LLM生成交易决策\n        response = llm.invoke(trader_prompt)\n        \n        return {\"trader_recommendation\": response.content}\n```\n\n## 决策输入分析\n\n### 多维度信息整合\n\n交易员需要综合处理来自多个源头的信息：\n\n1. **投资计划** (`investment_plan`)\n   - 来源：研究管理员的综合决策\n   - 内容：基于辩论结果的投资建议\n   - 作用：提供决策框架和方向指导\n\n2. **市场研究报告** (`market_report`)\n   - 来源：市场分析师\n   - 内容：技术指标、价格趋势、交易信号\n   - 作用：提供技术面分析支持\n\n3. **情绪报告** (`sentiment_report`)\n   - 来源：社交媒体分析师\n   - 内容：投资者情绪、舆论趋势\n   - 作用：评估市场情绪影响\n\n4. **新闻报告** (`news_report`)\n   - 来源：新闻分析师\n   - 内容：重要新闻事件、政策影响\n   - 作用：识别催化因素和风险事件\n\n5. **基本面报告** (`fundamentals_report`)\n   - 来源：基本面分析师\n   - 内容：财务数据、估值分析\n   - 作用：提供价值投资依据\n\n### 信息权重分配\n\n```python\n# 信息权重配置示例\ninfo_weights = {\n    \"investment_plan\": 0.35,      # 投资计划权重最高\n    \"fundamentals_report\": 0.25,  # 基本面分析\n    \"market_report\": 0.20,        # 技术分析\n    \"news_report\": 0.15,          # 新闻影响\n    \"sentiment_report\": 0.05       # 情绪分析\n}\n```\n\n## 股票类型支持\n\n### 多市场交易能力\n\n交易员支持全球主要股票市场的交易决策：\n\n```python\n# 市场信息获取和处理\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(company_name)\n\n# 根据市场类型调整交易策略\nif market_info.get(\"is_china\"):\n    # A股交易特点\n    trading_hours = \"09:30-15:00 (北京时间)\"\n    price_limit = \"±10% (ST股票±5%)\"\n    settlement = \"T+1\"\n    currency = \"人民币(CNY)\"\n    \nelif market_info.get(\"is_hk\"):\n    # 港股交易特点\n    trading_hours = \"09:30-16:00 (香港时间)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"港币(HKD)\"\n    \nelif market_info.get(\"is_us\"):\n    # 美股交易特点\n    trading_hours = \"09:30-16:00 (EST)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"美元(USD)\"\n```\n\n### 本土化交易策略\n\n1. **A股市场特色**:\n   - 涨跌停板制度考虑\n   - T+1交易制度影响\n   - 政策敏感性分析\n   - 散户投资者行为特点\n\n2. **港股市场特色**:\n   - 中港资金流动\n   - 汇率风险管理\n   - 国际投资者参与\n   - 估值差异套利\n\n3. **美股市场特色**:\n   - 盘前盘后交易\n   - 期权策略考虑\n   - 机构投资者主导\n   - 全球经济影响\n\n## 决策输出规范\n\n### 标准输出格式\n\n交易员必须提供结构化的投资建议：\n\n```python\nclass TradingRecommendation:\n    action: str              # 投资行动 (买入/卖出/持有)\n    target_price: float      # 目标价位\n    confidence: float        # 置信度 (0-100%)\n    risk_score: int          # 风险评分 (1-10)\n    reasoning: str           # 详细推理\n    time_horizon: str        # 投资时间框架\n    stop_loss: float         # 止损价位\n    take_profit: float       # 止盈价位\n```\n\n### 强制要求\n\n根据代码实现，交易员必须提供：\n\n1. **具体目标价位**\n   - 必须以相应货币单位计价\n   - 基于综合分析的合理估值\n   - 考虑市场流动性和交易成本\n\n2. **置信度评估**\n   - 0-100%的数值范围\n   - 反映决策的确定性程度\n   - 基于信息质量和分析深度\n\n3. **风险评分**\n   - 1-10分的评分体系\n   - 1分为最低风险，10分为最高风险\n   - 综合考虑各类风险因素\n\n4. **详细推理**\n   - 完整的决策逻辑链条\n   - 关键假设和依据说明\n   - 风险因素识别和应对\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```mermaid\ngraph LR\n    A[投资计划] --> E[信息整合]\n    B[基本面报告] --> E\n    C[市场报告] --> E\n    D[新闻&情绪报告] --> E\n    E --> F[综合分析]\n```\n\n### 2. 分析处理阶段\n\n```mermaid\ngraph TB\n    A[综合信息] --> B[市场类型识别]\n    B --> C[交易规则适配]\n    C --> D[风险评估]\n    D --> E[价格目标计算]\n    E --> F[置信度评估]\n```\n\n### 3. 决策生成阶段\n\n```mermaid\ngraph LR\n    A[分析结果] --> B[投资建议]\n    B --> C[目标价位]\n    B --> D[风险评分]\n    B --> E[执行策略]\n    C --> F[最终决策]\n    D --> F\n    E --> F\n```\n\n## 风险管理\n\n### 风险评估维度\n\n1. **市场风险**:\n   - 系统性风险评估\n   - 行业周期风险\n   - 流动性风险\n   - 波动率风险\n\n2. **信用风险**:\n   - 公司财务风险\n   - 债务违约风险\n   - 管理层风险\n   - 治理结构风险\n\n3. **操作风险**:\n   - 交易执行风险\n   - 技术系统风险\n   - 人为操作风险\n   - 合规风险\n\n4. **特殊风险**:\n   - 政策监管风险\n   - 汇率风险\n   - 地缘政治风险\n   - 黑天鹅事件\n\n### 风险控制措施\n\n```python\n# 风险控制参数\nrisk_controls = {\n    \"max_position_size\": 0.05,    # 最大仓位比例\n    \"stop_loss_ratio\": 0.08,      # 止损比例\n    \"take_profit_ratio\": 0.15,    # 止盈比例\n    \"max_drawdown\": 0.10,         # 最大回撤\n    \"correlation_limit\": 0.70     # 相关性限制\n}\n```\n\n## 性能评估\n\n### 关键指标\n\n1. **准确性指标**:\n   - 预测准确率\n   - 目标价位达成率\n   - 方向判断正确率\n   - 时间框架准确性\n\n2. **收益指标**:\n   - 绝对收益率\n   - 相对基准收益\n   - 风险调整收益\n   - 夏普比率\n\n3. **风险指标**:\n   - 最大回撤\n   - 波动率\n   - VaR值\n   - 风险评分准确性\n\n### 性能监控\n\n```python\n# 交易性能追踪\nclass TradingPerformance:\n    def __init__(self):\n        self.trades = []\n        self.accuracy_rate = 0.0\n        self.total_return = 0.0\n        self.max_drawdown = 0.0\n        self.sharpe_ratio = 0.0\n    \n    def update_performance(self, trade_result):\n        # 更新性能指标\n        pass\n    \n    def generate_report(self):\n        # 生成性能报告\n        pass\n```\n\n## 配置选项\n\n### 交易员配置\n\n```python\ntrader_config = {\n    \"risk_tolerance\": \"moderate\",     # 风险容忍度\n    \"investment_style\": \"balanced\",   # 投资风格\n    \"time_horizon\": \"medium\",         # 投资时间框架\n    \"position_sizing\": \"kelly\",       # 仓位管理方法\n    \"rebalance_frequency\": \"weekly\"   # 再平衡频率\n}\n```\n\n### 市场配置\n\n```python\nmarket_config = {\n    \"trading_hours\": {\n        \"china\": \"09:30-15:00\",\n        \"hk\": \"09:30-16:00\",\n        \"us\": \"09:30-16:00\"\n    },\n    \"settlement_days\": {\n        \"china\": 1,\n        \"hk\": 2,\n        \"us\": 2\n    },\n    \"commission_rates\": {\n        \"china\": 0.0003,\n        \"hk\": 0.0025,\n        \"us\": 0.0005\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 交易员活动日志\nlogger.info(f\"💼 [交易员] 开始分析股票: {company_name}\")\nlogger.info(f\"📈 [交易员] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"📊 [交易员] 投资计划: {investment_plan[:100]}...\")\nlogger.info(f\"🎯 [交易员] 生成投资建议完成\")\n```\n\n### 决策追踪\n\n```python\n# 决策过程记录\ndecision_log = {\n    \"timestamp\": datetime.now(),\n    \"ticker\": company_name,\n    \"market_type\": stock_type,\n    \"input_reports\": {\n        \"fundamentals\": len(fundamentals_report),\n        \"market\": len(market_report),\n        \"news\": len(news_report),\n        \"sentiment\": len(sentiment_report)\n    },\n    \"decision\": {\n        \"action\": action,\n        \"target_price\": target_price,\n        \"confidence\": confidence,\n        \"risk_score\": risk_score\n    }\n}\n```\n\n## 扩展指南\n\n### 添加新的交易策略\n\n1. **创建策略类**\n```python\nclass CustomTradingStrategy:\n    def __init__(self, config):\n        self.config = config\n    \n    def generate_recommendation(self, state):\n        # 自定义交易逻辑\n        pass\n    \n    def calculate_position_size(self, confidence, risk_score):\n        # 仓位计算逻辑\n        pass\n```\n\n2. **集成到交易员**\n```python\n# 在trader.py中添加策略选择\nstrategy_map = {\n    \"conservative\": ConservativeStrategy(),\n    \"aggressive\": AggressiveStrategy(),\n    \"custom\": CustomTradingStrategy()\n}\n\nstrategy = strategy_map.get(config.get(\"strategy\", \"balanced\"))\n```\n\n### 添加新的风险模型\n\n1. **实现风险模型接口**\n```python\nclass RiskModel:\n    def calculate_risk_score(self, market_data, fundamentals):\n        pass\n    \n    def estimate_var(self, position, confidence_level):\n        pass\n    \n    def suggest_position_size(self, risk_budget, expected_return):\n        pass\n```\n\n2. **注册风险模型**\n```python\nrisk_models = {\n    \"var\": VaRRiskModel(),\n    \"monte_carlo\": MonteCarloRiskModel(),\n    \"factor\": FactorRiskModel()\n}\n```\n\n## 最佳实践\n\n### 1. 决策一致性\n- 保持决策逻辑的一致性\n- 避免情绪化决策\n- 基于数据和分析\n- 记录决策依据\n\n### 2. 风险控制\n- 严格执行止损策略\n- 分散投资风险\n- 定期评估风险敞口\n- 及时调整仓位\n\n### 3. 性能优化\n- 持续监控交易表现\n- 定期回测策略效果\n- 优化决策模型\n- 学习市场变化\n\n### 4. 合规管理\n- 遵守交易规则\n- 满足监管要求\n- 保持透明度\n- 记录完整审计轨迹\n\n## 故障排除\n\n### 常见问题\n\n1. **决策质量问题**\n   - 检查输入数据质量\n   - 验证分析逻辑\n   - 调整权重配置\n   - 增加验证步骤\n\n2. **风险控制失效**\n   - 检查风险参数设置\n   - 验证止损机制\n   - 评估相关性计算\n   - 更新风险模型\n\n3. **性能问题**\n   - 优化决策算法\n   - 减少计算复杂度\n   - 启用结果缓存\n   - 并行处理分析\n\n### 调试技巧\n\n1. **决策过程追踪**\n```python\nlogger.debug(f\"输入信息完整性: {check_input_completeness(state)}\")\nlogger.debug(f\"市场信息: {market_info}\")\nlogger.debug(f\"决策权重: {info_weights}\")\n```\n\n2. **结果验证**\n```python\nlogger.debug(f\"目标价位合理性: {validate_target_price(target_price)}\")\nlogger.debug(f\"风险评分一致性: {validate_risk_score(risk_score)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行交易决策\nend_time = time.time()\nlogger.debug(f\"决策耗时: {end_time - start_time:.2f}秒\")\n```\n\n交易员作为TradingAgents框架的最终执行层，承担着将所有分析和研究转化为具体投资行动的重要职责，其决策质量直接影响整个系统的投资表现。"},"files":{"docs/agents/v0.1.13/researchers.md":"# 研究员团队\n\n## 概述\n\n研究员团队是 TradingAgents 框架的核心决策组件，负责基于分析师提供的数据进行深度研究和投资辩论。团队由看涨研究员和看跌研究员组成，通过对立观点的辩论来全面评估投资机会和风险，为最终的投资决策提供平衡的视角。\n\n## 研究员架构\n\n### 基础研究员设计\n\n所有研究员都基于统一的架构设计，使用相同的状态管理和日志系统：\n\n```python\n# 统一的研究员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_researcher_module(\"researcher_type\")\ndef researcher_node(state):\n    # 研究员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n研究员通过 `AgentState` 进行状态管理，包含辩论历史和分析报告：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    debate_state: str            # 辩论状态\n    messages: List              # 消息历史\n    memory: Any                 # 历史记忆\n```\n\n## 研究员团队成员\n\n### 1. 看涨研究员 (Bull Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bull_researcher.py`\n\n**核心职责**:\n- 寻找和强调投资机会的积极因素\n- 提出看涨观点和支持论据\n- 反驳看跌观点中的薄弱环节\n- 推动积极的投资决策\n\n**核心实现**:\n```python\ndef create_bull_researcher(llm, memory=None):\n    @log_researcher_module(\"bull\")\n    def bull_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看涨论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看涨观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **积极解读数据**: 从乐观角度解释市场数据和财务指标\n- **机会识别**: 发现被市场低估的价值和增长潜力\n- **风险最小化**: 论证风险的可控性和临时性\n- **催化剂分析**: 识别可能推动股价上涨的因素\n\n### 2. 看跌研究员 (Bear Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bear_researcher.py`\n\n**核心职责**:\n- 识别和强调投资风险和负面因素\n- 提出看跌观点和警示论据\n- 质疑看涨观点中的乐观假设\n- 推动谨慎的投资决策\n\n**核心实现**:\n```python\ndef create_bear_researcher(llm, memory=None):\n    @log_researcher_module(\"bear\")\n    def bear_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看跌论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看跌观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **风险放大**: 深入分析潜在风险和负面因素\n- **估值质疑**: 质疑当前估值的合理性\n- **趋势反转**: 识别可能的负面趋势转折点\n- **竞争威胁**: 分析行业竞争和市场变化风险\n\n## 辩论机制\n\n### 辩论流程\n\n```mermaid\ngraph TB\n    A[分析师报告] --> B[看涨研究员分析]\n    A --> C[看跌研究员分析]\n    \n    B --> D[看涨观点]\n    C --> E[看跌观点]\n    \n    D --> F[辩论交锋]\n    E --> F\n    \n    F --> G[观点完善]\n    G --> H[最终辩论结果]\n    \n    H --> I[传递给管理层]\n```\n\n### 辩论状态管理\n\n```python\n# 辩论状态类型\nDEBATE_STATES = {\n    \"initial\": \"初始状态\",\n    \"bull_turn\": \"看涨方发言\",\n    \"bear_turn\": \"看跌方发言\",\n    \"rebuttal\": \"反驳阶段\",\n    \"conclusion\": \"总结阶段\"\n}\n\n# 状态转换逻辑\ndef update_debate_state(current_state, participant):\n    if current_state == \"initial\":\n        return \"bull_turn\" if participant == \"bull\" else \"bear_turn\"\n    elif current_state in [\"bull_turn\", \"bear_turn\"]:\n        return \"rebuttal\"\n    elif current_state == \"rebuttal\":\n        return \"conclusion\"\n    return current_state\n```\n\n### 记忆系统集成\n\n研究员支持历史记忆功能，能够：\n\n1. **历史辩论回顾**: 参考之前的辩论结果和观点\n2. **学习改进**: 从历史决策的成败中学习\n3. **一致性维护**: 保持观点的逻辑一致性\n4. **经验积累**: 积累特定股票或行业的分析经验\n\n```python\n# 记忆检索示例\nif memory is not None:\n    historical_debates = memory.get_relevant_debates(company_name)\n    previous_analysis = memory.get_analysis_history(company_name)\nelse:\n    logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n## 股票类型支持\n\n### 多市场分析能力\n\n研究员团队支持全球主要股票市场的分析：\n\n```python\n# 市场信息获取\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 根据市场类型调整分析策略\nif market_info.get(\"is_china\"):\n    # A股特有的分析逻辑\n    analysis_context = \"中国A股市场\"\n    currency = \"人民币\"\nelif market_info.get(\"is_hk\"):\n    # 港股特有的分析逻辑\n    analysis_context = \"香港股市\"\n    currency = \"港币\"\nelif market_info.get(\"is_us\"):\n    # 美股特有的分析逻辑\n    analysis_context = \"美国股市\"\n    currency = \"美元\"\n```\n\n### 本土化分析\n\n1. **A股市场**:\n   - 政策影响分析\n   - 监管环境评估\n   - 国内经济周期考量\n   - 投资者结构特点\n\n2. **港股市场**:\n   - 中港两地联动\n   - 汇率风险评估\n   - 国际资本流动\n   - 估值差异分析\n\n3. **美股市场**:\n   - 美联储政策影响\n   - 全球经济环境\n   - 行业竞争格局\n   - 技术创新趋势\n\n## 分析维度\n\n### 看涨研究员关注点\n\n1. **增长潜力**:\n   - 收入增长趋势\n   - 市场份额扩张\n   - 新产品/服务机会\n   - 国际化进展\n\n2. **估值优势**:\n   - 相对估值吸引力\n   - 历史估值比较\n   - 同行业估值对比\n   - 资产价值重估\n\n3. **催化因素**:\n   - 政策利好\n   - 行业景气度提升\n   - 技术突破\n   - 管理层变化\n\n4. **财务健康**:\n   - 现金流改善\n   - 盈利能力提升\n   - 债务结构优化\n   - 分红政策\n\n### 看跌研究员关注点\n\n1. **风险因素**:\n   - 行业衰退风险\n   - 竞争加剧威胁\n   - 监管政策风险\n   - 技术替代风险\n\n2. **估值风险**:\n   - 估值过高警示\n   - 泡沫风险评估\n   - 盈利预期过于乐观\n   - 市场情绪过热\n\n3. **财务问题**:\n   - 现金流恶化\n   - 债务负担过重\n   - 盈利质量下降\n   - 会计问题质疑\n\n4. **宏观环境**:\n   - 经济周期下行\n   - 利率上升影响\n   - 汇率波动风险\n   - 地缘政治风险\n\n## 辩论质量评估\n\n### 论证强度指标\n\n1. **数据支撑度**:\n   - 引用数据的准确性\n   - 数据来源的可靠性\n   - 数据分析的深度\n   - 数据解读的合理性\n\n2. **逻辑一致性**:\n   - 论证链条的完整性\n   - 推理过程的严密性\n   - 结论与前提的一致性\n   - 反驳的有效性\n\n3. **风险识别**:\n   - 风险因素的全面性\n   - 风险评估的准确性\n   - 风险应对的可行性\n   - 风险权衡的合理性\n\n### 辩论输出质量\n\n```python\n# 辩论结果结构\nclass DebateResult:\n    bull_arguments: List[str]     # 看涨论点\n    bear_arguments: List[str]     # 看跌论点\n    key_disagreements: List[str]  # 主要分歧\n    consensus_points: List[str]   # 共识观点\n    confidence_level: float       # 置信度\n    recommendation_strength: str  # 建议强度\n```\n\n## 配置选项\n\n### 研究员配置\n\n```python\nresearcher_config = {\n    \"enable_memory\": True,        # 是否启用记忆功能\n    \"debate_rounds\": 3,           # 辩论轮数\n    \"argument_depth\": \"deep\",     # 论证深度\n    \"risk_tolerance\": \"moderate\", # 风险容忍度\n    \"analysis_style\": \"balanced\" # 分析风格\n}\n```\n\n### 辩论参数\n\n```python\ndebate_params = {\n    \"max_rounds\": 5,              # 最大辩论轮数\n    \"time_limit\": 300,            # 单轮时间限制(秒)\n    \"evidence_weight\": 0.7,       # 证据权重\n    \"logic_weight\": 0.3,          # 逻辑权重\n    \"consensus_threshold\": 0.8    # 共识阈值\n}\n```\n\n## 性能优化\n\n### 并行处理\n\n```python\n# 并行执行看涨和看跌分析\nimport asyncio\n\nasync def parallel_research(state):\n    bull_task = asyncio.create_task(bull_researcher(state))\n    bear_task = asyncio.create_task(bear_researcher(state))\n    \n    bull_result, bear_result = await asyncio.gather(bull_task, bear_task)\n    return bull_result, bear_result\n```\n\n### 缓存机制\n\n```python\n# 分析结果缓存\nfrom functools import lru_cache\n\n@lru_cache(maxsize=100)\ndef cached_analysis(ticker, date, report_hash):\n    # 缓存分析结果\n    pass\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 研究员活动日志\nlogger.info(f\"🐂 [看涨研究员] 开始分析股票: {company_name}\")\nlogger.info(f\"🐻 [看跌研究员] 开始分析股票: {company_name}\")\nlogger.debug(f\"📊 [辩论状态] 当前状态: {debate_state}\")\nlogger.warning(f\"⚠️ [记忆系统] memory为None，跳过历史记忆检索\")\n```\n\n### 性能指标\n\n- 辩论完成时间\n- 论证质量评分\n- 预测准确率\n- 风险识别率\n- 共识达成率\n\n## 扩展指南\n\n### 添加新的研究员类型\n\n1. **创建研究员文件**\n```python\n# tradingagents/agents/researchers/neutral_researcher.py\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\ndef create_neutral_researcher(llm, memory=None):\n    @log_researcher_module(\"neutral\")\n    def neutral_node(state):\n        # 中性研究员逻辑\n        pass\n    return neutral_node\n```\n\n2. **集成到辩论流程**\n```python\n# 在trading_graph.py中添加\nresearchers = {\n    \"bull\": create_bull_researcher(llm, memory),\n    \"bear\": create_bear_researcher(llm, memory),\n    \"neutral\": create_neutral_researcher(llm, memory)\n}\n```\n\n### 自定义辩论策略\n\n1. **实现策略接口**\n```python\nclass DebateStrategy:\n    def generate_arguments(self, reports, market_info):\n        pass\n    \n    def evaluate_counterarguments(self, opponent_args):\n        pass\n    \n    def synthesize_conclusion(self, all_arguments):\n        pass\n```\n\n2. **注册策略**\n```python\nstrategy_registry = {\n    \"aggressive_bull\": AggressiveBullStrategy(),\n    \"conservative_bear\": ConservativeBearStrategy(),\n    \"data_driven\": DataDrivenStrategy()\n}\n```\n\n## 最佳实践\n\n### 1. 平衡性维护\n- 确保看涨和看跌观点的平衡\n- 避免极端偏见\n- 基于数据而非情绪\n- 保持客观分析态度\n\n### 2. 质量控制\n- 验证数据来源\n- 检查逻辑一致性\n- 评估论证强度\n- 识别认知偏差\n\n### 3. 效率优化\n- 并行执行分析\n- 缓存重复计算\n- 优化内存使用\n- 减少冗余操作\n\n### 4. 可解释性\n- 提供清晰的推理路径\n- 标注关键假设\n- 量化不确定性\n- 记录决策依据\n\n## 故障排除\n\n### 常见问题\n\n1. **辩论陷入僵局**\n   - 引入新的分析维度\n   - 调整权重参数\n   - 增加外部信息\n   - 设置超时机制\n\n2. **观点过于极端**\n   - 调整风险容忍度\n   - 增加平衡机制\n   - 引入中性观点\n   - 强化数据验证\n\n3. **性能问题**\n   - 启用并行处理\n   - 优化缓存策略\n   - 减少分析深度\n   - 限制辩论轮数\n\n### 调试技巧\n\n1. **辩论过程追踪**\n```python\nlogger.debug(f\"辩论轮次: {round_number}\")\nlogger.debug(f\"当前发言方: {current_speaker}\")\nlogger.debug(f\"论点数量: {len(arguments)}\")\n```\n\n2. **状态检查**\n```python\nlogger.debug(f\"状态完整性: {validate_state(state)}\")\nlogger.debug(f\"报告可用性: {check_reports_availability(state)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行分析\nend_time = time.time()\nlogger.debug(f\"分析耗时: {end_time - start_time:.2f}秒\")\n```\n\n研究员团队通过结构化的辩论机制，确保投资决策的全面性和客观性，是TradingAgents框架中连接数据分析和最终决策的关键环节。","docs/agents/v0.1.13/analysts.md":"# 分析师团队\n\n## 概述\n\n分析师团队是 TradingAgents 框架的核心分析组件，负责从不同维度对股票进行专业分析。团队由四类专业分析师组成，每个分析师都专注于特定的分析领域，通过协作为投资决策提供全面的数据支持。\n\n## 分析师架构\n\n### 基础分析师设计\n\n所有分析师都基于统一的架构设计，使用相同的工具接口和日志系统：\n\n```python\n# 统一的分析师模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_analyst_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_analyst_module(\"analyst_type\")\ndef analyst_node(state):\n    # 分析师逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n分析师通过 `AgentState` 进行状态管理：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    messages: List              # 消息历史\n```\n\n## 分析师团队成员\n\n### 1. 基本面分析师 (Fundamentals Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/fundamentals_analyst.py`\n\n**核心职责**:\n- 分析公司财务数据和基本面指标\n- 评估公司估值和财务健康度\n- 提供基于财务数据的投资建议\n\n**技术特性**:\n- 使用统一工具架构自动识别股票类型\n- 支持A股、港股、美股的基本面分析\n- 智能选择合适的数据源（在线/离线模式）\n\n**核心实现**:\n```python\ndef create_fundamentals_analyst(llm, toolkit):\n    @log_analyst_module(\"fundamentals\")\n    def fundamentals_analyst_node(state):\n        ticker = state[\"company_of_interest\"]\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(ticker)\n        \n        # 获取公司名称\n        company_name = _get_company_name_for_fundamentals(ticker, market_info)\n        \n        # 选择合适的工具\n        if toolkit.config[\"online_tools\"]:\n            tools = [toolkit.get_stock_fundamentals_unified]\n        else:\n            # 离线模式工具选择\n            tools = [...]\n```\n\n**支持的数据源**:\n- **A股**: 统一接口获取中国股票信息\n- **港股**: 改进的港股工具\n- **美股**: FinnHub、SimFin等数据源\n\n### 2. 市场分析师 (Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/market_analyst.py`\n\n**核心职责**:\n- 技术指标分析（RSI、MACD、布林带等）\n- 价格趋势和图表模式识别\n- 支撑阻力位分析\n- 交易信号生成\n\n**分析维度**:\n- 短期技术指标\n- 中长期趋势分析\n- 成交量分析\n- 价格动量评估\n\n### 3. 新闻分析师 (News Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/news_analyst.py`\n\n**核心职责**:\n- 新闻事件影响分析\n- 宏观经济数据解读\n- 政策影响评估\n- 行业动态分析\n\n**数据来源**:\n- Google News API\n- FinnHub新闻数据\n- 实时新闻流\n- 经济数据发布\n\n**特殊功能**:\n- 新闻过滤和质量评估\n- 情感分析和影响评级\n- 时效性评估\n\n### 4. 社交媒体分析师 (Social Media Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/social_media_analyst.py`\n\n**核心职责**:\n- 社交媒体情绪分析\n- 投资者情绪监测\n- 舆论趋势识别\n- 热点话题追踪\n\n**数据来源**:\n- Reddit讨论数据\n- Twitter情感数据\n- 金融论坛讨论\n- 社交媒体热度指标\n\n### 5. 中国市场分析师 (China Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/china_market_analyst.py`\n\n**核心职责**:\n- 专门针对中国A股市场的分析\n- 中国特色的市场因素分析\n- 政策环境影响评估\n- 本土化的投资逻辑\n\n## 工具集成\n\n### 统一工具架构\n\n分析师使用统一的工具接口，支持自动股票类型识别：\n\n```python\n# 统一基本面分析工具\ntools = [toolkit.get_stock_fundamentals_unified]\n\n# 工具内部自动识别股票类型并调用相应数据源\n# - A股: 使用中国股票数据接口\n# - 港股: 使用港股专用接口\n# - 美股: 使用FinnHub等国际数据源\n```\n\n### 在线/离线模式\n\n**在线模式** (`online_tools=True`):\n- 使用实时API数据\n- 数据最新但成本较高\n- 适合生产环境\n\n**离线模式** (`online_tools=False`):\n- 使用缓存数据\n- 成本低但数据可能滞后\n- 适合开发和测试\n\n## 股票类型支持\n\n### 市场识别机制\n\n```python\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 返回信息包括：\n# - is_china: 是否为A股\n# - is_hk: 是否为港股\n# - is_us: 是否为美股\n# - market_name: 市场名称\n# - currency_name: 货币名称\n# - currency_symbol: 货币符号\n```\n\n### 支持的市场\n\n1. **中国A股**\n   - 股票代码格式：000001, 600000等\n   - 货币单位：人民币(CNY)\n   - 数据源：统一中国股票接口\n\n2. **香港股市**\n   - 股票代码格式：0700.HK, 00700等\n   - 货币单位：港币(HKD)\n   - 数据源：改进的港股工具\n\n3. **美国股市**\n   - 股票代码格式：AAPL, TSLA等\n   - 货币单位：美元(USD)\n   - 数据源：FinnHub, Yahoo Finance等\n\n## 分析流程\n\n### 1. 数据获取阶段\n```mermaid\ngraph LR\n    A[股票代码] --> B[市场类型识别]\n    B --> C[选择数据源]\n    C --> D[获取原始数据]\n    D --> E[数据预处理]\n```\n\n### 2. 分析执行阶段\n```mermaid\ngraph TB\n    A[原始数据] --> B[基本面分析师]\n    A --> C[市场分析师]\n    A --> D[新闻分析师]\n    A --> E[社交媒体分析师]\n    \n    B --> F[基本面报告]\n    C --> G[市场分析报告]\n    D --> H[新闻分析报告]\n    E --> I[情绪分析报告]\n```\n\n### 3. 报告生成阶段\n```mermaid\ngraph LR\n    A[各分析师报告] --> B[状态更新]\n    B --> C[传递给研究员团队]\n    C --> D[进入辩论阶段]\n```\n\n## 配置选项\n\n### 分析师选择\n```python\n# 可选择的分析师类型\nselected_analysts = [\n    \"market\",        # 市场分析师\n    \"social\",        # 社交媒体分析师\n    \"news\",          # 新闻分析师\n    \"fundamentals\"   # 基本面分析师\n]\n```\n\n### 工具配置\n```python\ntoolkit_config = {\n    \"online_tools\": True,     # 是否使用在线工具\n    \"cache_enabled\": True,    # 是否启用缓存\n    \"timeout\": 30,           # API超时时间\n    \"retry_count\": 3         # 重试次数\n}\n```\n\n## 日志和监控\n\n### 统一日志系统\n```python\n# 每个分析师都使用统一的日志系统\nlogger = get_logger(\"default\")\n\n# 详细的调试日志\nlogger.debug(f\"📊 [DEBUG] 基本面分析师节点开始\")\nlogger.info(f\"📊 [基本面分析师] 正在分析股票: {ticker}\")\nlogger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n### 性能监控\n- 分析耗时统计\n- API调用次数追踪\n- 错误率监控\n- 缓存命中率统计\n\n## 扩展指南\n\n### 添加新的分析师\n\n1. **创建分析师文件**\n```python\n# tradingagents/agents/analysts/custom_analyst.py\nfrom tradingagents.utils.tool_logging import log_analyst_module\nfrom tradingagents.utils.logging_init import get_logger\n\ndef create_custom_analyst(llm, toolkit):\n    @log_analyst_module(\"custom\")\n    def custom_analyst_node(state):\n        # 自定义分析逻辑\n        pass\n    return custom_analyst_node\n```\n\n2. **注册到系统**\n```python\n# 在trading_graph.py中添加\nselected_analysts.append(\"custom\")\n```\n\n### 添加新的数据源\n\n1. **实现数据接口**\n2. **添加到工具集**\n3. **更新配置选项**\n\n## 最佳实践\n\n### 1. 错误处理\n- 使用try-catch包装API调用\n- 提供降级方案\n- 记录详细错误信息\n\n### 2. 性能优化\n- 启用数据缓存\n- 合理设置超时时间\n- 避免重复API调用\n\n### 3. 数据质量\n- 验证数据完整性\n- 处理异常值\n- 提供数据质量评分\n\n### 4. 可维护性\n- 使用统一的代码结构\n- 添加详细的注释\n- 遵循命名规范\n\n## 故障排除\n\n### 常见问题\n\n1. **API调用失败**\n   - 检查网络连接\n   - 验证API密钥\n   - 查看速率限制\n\n2. **数据格式错误**\n   - 检查股票代码格式\n   - 验证市场类型识别\n   - 查看数据源兼容性\n\n3. **性能问题**\n   - 启用缓存机制\n   - 优化并发设置\n   - 减少不必要的API调用\n\n### 调试技巧\n\n1. **启用详细日志**\n```python\nlogger.setLevel(logging.DEBUG)\n```\n\n2. **检查状态传递**\n```python\nlogger.debug(f\"当前状态: {state}\")\n```\n\n3. **验证工具配置**\n```python\nlogger.debug(f\"工具配置: {toolkit.config}\")\n```\n\n分析师团队是整个TradingAgents框架的基础，通过专业化分工和协作，为后续的研究辩论和交易决策提供高质量的数据支持。","docs/agents/v0.1.13/managers.md":"# 管理层团队\n\n## 概述\n\n管理层团队是 TradingAgents 框架的决策核心，负责协调各个智能体的工作流程，评估投资辩论，并做出最终的投资决策。管理层通过综合分析师、研究员、交易员和风险管理团队的输出，形成全面的投资策略和具体的执行计划。\n\n## 管理层架构\n\n### 基础设计\n\n管理层团队基于统一的架构设计，专注于决策协调和策略制定：\n\n```python\n# 统一的管理层模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_manager_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_manager_module(\"manager_type\")\ndef manager_node(state):\n    # 管理层决策逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n管理层团队通过 `AgentState` 获取完整的分析和决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    bull_argument: str           # 看涨论证\n    bear_argument: str           # 看跌论证\n    trader_recommendation: str   # 交易员建议\n    risk_analysis: str           # 风险分析\n    messages: List              # 消息历史\n```\n\n## 管理层团队成员\n\n### 1. 研究经理 (Research Manager)\n\n**文件位置**: `tradingagents/agents/managers/research_manager.py`\n\n**核心职责**:\n- 作为投资组合经理和辩论主持人\n- 评估投资辩论质量和有效性\n- 总结看涨和看跌分析师的关键观点\n- 基于最有说服力的证据做出明确的买入、卖出或持有决策\n- 为交易员制定详细的投资计划\n\n**核心实现**:\n```python\ndef create_research_manager(llm):\n    @log_manager_module(\"research_manager\")\n    def research_manager_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trade_date = state.get(\"trade_date\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        \n        # 获取辩论结果\n        bull_argument = state.get(\"bull_argument\", \"\")\n        bear_argument = state.get(\"bear_argument\", \"\")\n        \n        # 构建研究经理决策提示\n        manager_prompt = f\"\"\"\n        作为投资组合经理和辩论主持人，请基于以下信息做出投资决策：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        交易日期: {trade_date}\n        \n        === 基础分析报告 ===\n        基本面报告: {fundamentals_report}\n        市场分析报告: {market_report}\n        情绪分析报告: {sentiment_report}\n        新闻分析报告: {news_report}\n        \n        === 投资辩论结果 ===\n        看涨论证: {bull_argument}\n        看跌论证: {bear_argument}\n        \n        请作为经验丰富的投资组合经理：\n        1. 评估辩论质量和论证强度\n        2. 总结关键投资观点和风险因素\n        3. 做出明确的投资决策（买入/卖出/持有）\n        4. 制定详细的投资计划和执行策略\n        5. 提供具体的目标价格和时间框架\n        6. 说明决策理由和风险控制措施\n        \n        请确保决策基于客观分析，并提供清晰的执行指导。\n        \"\"\"\n        \n        # 调用LLM生成投资决策\n        response = llm.invoke(manager_prompt)\n        \n        return {\"investment_plan\": response.content}\n```\n\n**决策特点**:\n- **综合评估**: 全面考虑各类分析报告和辩论结果\n- **客观决策**: 基于证据强度而非个人偏好做决策\n- **具体指导**: 提供明确的执行计划和目标价格\n- **风险意识**: 充分考虑风险因素和控制措施\n\n### 2. 投资组合经理 (Portfolio Manager)\n\n**文件位置**: `tradingagents/agents/managers/portfolio_manager.py`\n\n**核心职责**:\n- 管理整体投资组合配置\n- 协调多个股票的投资决策\n- 优化资产配置和风险分散\n- 监控组合绩效和风险指标\n\n**核心功能**:\n```python\ndef create_portfolio_manager(llm):\n    @log_manager_module(\"portfolio_manager\")\n    def portfolio_manager_node(state):\n        # 获取组合信息\n        portfolio_holdings = state.get(\"portfolio_holdings\", {})\n        available_capital = state.get(\"available_capital\", 0)\n        risk_tolerance = state.get(\"risk_tolerance\", \"moderate\")\n        \n        # 获取新的投资建议\n        new_investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建组合管理提示\n        portfolio_prompt = f\"\"\"\n        作为投资组合经理，请评估新的投资建议对整体组合的影响：\n        \n        === 当前组合状况 ===\n        持仓情况: {portfolio_holdings}\n        可用资金: {available_capital}\n        风险偏好: {risk_tolerance}\n        \n        === 新投资建议 ===\n        目标股票: {company_name}\n        投资计划: {new_investment_plan}\n        \n        请分析：\n        1. 新投资对组合风险收益的影响\n        2. 建议的仓位大小和配置比例\n        3. 与现有持仓的相关性分析\n        4. 组合整体风险评估\n        5. 再平衡建议（如需要）\n        \n        请提供具体的组合调整方案。\n        \"\"\"\n        \n        response = llm.invoke(portfolio_prompt)\n        \n        return {\"portfolio_adjustment\": response.content}\n```\n\n**管理特点**:\n- **整体视角**: 从组合层面考虑单个投资决策\n- **风险分散**: 优化资产配置以降低整体风险\n- **动态调整**: 根据市场变化调整组合配置\n- **绩效监控**: 持续跟踪组合表现和风险指标\n\n### 3. 风险经理 (Risk Manager)\n\n**文件位置**: `tradingagents/agents/managers/risk_manager.py`\n\n**核心职责**:\n- 监控整体风险敞口\n- 设定和执行风险限额\n- 协调风险控制措施\n- 提供风险管理指导\n\n**核心功能**:\n```python\ndef create_risk_manager(llm):\n    @log_manager_module(\"risk_manager\")\n    def risk_manager_node(state):\n        # 获取风险分析结果\n        conservative_analysis = state.get(\"conservative_risk_analysis\", \"\")\n        aggressive_analysis = state.get(\"aggressive_risk_analysis\", \"\")\n        neutral_analysis = state.get(\"neutral_risk_analysis\", \"\")\n        \n        # 获取投资计划\n        investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建风险管理提示\n        risk_management_prompt = f\"\"\"\n        作为风险经理，请基于多角度风险分析制定风险管理策略：\n        \n        === 风险分析结果 ===\n        保守风险分析: {conservative_analysis}\n        激进风险分析: {aggressive_analysis}\n        中性风险分析: {neutral_analysis}\n        \n        === 投资计划 ===\n        目标股票: {company_name}\n        投资方案: {investment_plan}\n        \n        请制定：\n        1. 综合风险评估和等级\n        2. 具体的风险控制措施\n        3. 止损止盈策略\n        4. 仓位管理建议\n        5. 风险监控指标\n        6. 应急预案\n        \n        请提供可执行的风险管理方案。\n        \"\"\"\n        \n        response = llm.invoke(risk_management_prompt)\n        \n        return {\"risk_management_plan\": response.content}\n```\n\n**管理特点**:\n- **全面监控**: 监控各类风险因素和指标\n- **主动管理**: 主动识别和控制潜在风险\n- **量化分析**: 使用量化方法评估风险\n- **应急响应**: 制定风险事件应对预案\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```python\nclass InformationGathering:\n    def __init__(self):\n        self.required_reports = [\n            \"fundamentals_report\",\n            \"market_report\", \n            \"sentiment_report\",\n            \"news_report\"\n        ]\n        self.debate_results = [\n            \"bull_argument\",\n            \"bear_argument\"\n        ]\n        self.risk_analyses = [\n            \"conservative_risk_analysis\",\n            \"aggressive_risk_analysis\",\n            \"neutral_risk_analysis\"\n        ]\n    \n    def validate_inputs(self, state):\n        \"\"\"验证输入信息完整性\"\"\"\n        missing_reports = []\n        \n        for report in self.required_reports:\n            if not state.get(report):\n                missing_reports.append(report)\n        \n        if missing_reports:\n            logger.warning(f\"缺少必要报告: {missing_reports}\")\n            return False, missing_reports\n        \n        return True, []\n    \n    def assess_information_quality(self, state):\n        \"\"\"评估信息质量\"\"\"\n        quality_scores = {}\n        \n        for report in self.required_reports:\n            content = state.get(report, \"\")\n            quality_scores[report] = self.calculate_content_quality(content)\n        \n        return quality_scores\n    \n    def calculate_content_quality(self, content):\n        \"\"\"计算内容质量分数\"\"\"\n        if not content:\n            return 0.0\n        \n        # 基于长度、关键词、结构等因素评估质量\n        length_score = min(len(content) / 1000, 1.0)  # 标准化长度分数\n        keyword_score = self.check_keywords(content)\n        structure_score = self.check_structure(content)\n        \n        return (length_score + keyword_score + structure_score) / 3\n```\n\n### 2. 辩论评估阶段\n\n```python\nclass DebateEvaluation:\n    def __init__(self):\n        self.evaluation_criteria = {\n            \"logic_strength\": 0.3,      # 逻辑强度\n            \"evidence_quality\": 0.3,    # 证据质量\n            \"risk_awareness\": 0.2,      # 风险意识\n            \"market_insight\": 0.2       # 市场洞察\n        }\n    \n    def evaluate_arguments(self, bull_argument, bear_argument):\n        \"\"\"评估辩论论证质量\"\"\"\n        bull_score = self.score_argument(bull_argument)\n        bear_score = self.score_argument(bear_argument)\n        \n        return {\n            \"bull_score\": bull_score,\n            \"bear_score\": bear_score,\n            \"winner\": \"bull\" if bull_score > bear_score else \"bear\",\n            \"confidence\": abs(bull_score - bear_score)\n        }\n    \n    def score_argument(self, argument):\n        \"\"\"为单个论证打分\"\"\"\n        scores = {}\n        \n        for criterion, weight in self.evaluation_criteria.items():\n            criterion_score = self.evaluate_criterion(argument, criterion)\n            scores[criterion] = criterion_score * weight\n        \n        return sum(scores.values())\n    \n    def evaluate_criterion(self, argument, criterion):\n        \"\"\"评估特定标准\"\"\"\n        # 使用NLP技术或规则评估论证质量\n        if criterion == \"logic_strength\":\n            return self.assess_logical_structure(argument)\n        elif criterion == \"evidence_quality\":\n            return self.assess_evidence_strength(argument)\n        elif criterion == \"risk_awareness\":\n            return self.assess_risk_consideration(argument)\n        elif criterion == \"market_insight\":\n            return self.assess_market_understanding(argument)\n        \n        return 0.5  # 默认分数\n```\n\n### 3. 决策制定阶段\n\n```python\nclass DecisionMaking:\n    def __init__(self, config):\n        self.decision_thresholds = config.get(\"decision_thresholds\", {\n            \"strong_buy\": 0.8,\n            \"buy\": 0.6,\n            \"hold\": 0.4,\n            \"sell\": 0.2,\n            \"strong_sell\": 0.0\n        })\n        self.confidence_threshold = config.get(\"confidence_threshold\", 0.7)\n    \n    def make_investment_decision(self, analysis_results):\n        \"\"\"制定投资决策\"\"\"\n        # 综合各项分析结果\n        fundamental_score = analysis_results.get(\"fundamental_score\", 0.5)\n        technical_score = analysis_results.get(\"technical_score\", 0.5)\n        sentiment_score = analysis_results.get(\"sentiment_score\", 0.5)\n        debate_score = analysis_results.get(\"debate_score\", 0.5)\n        risk_score = analysis_results.get(\"risk_score\", 0.5)\n        \n        # 加权计算综合分数\n        weights = {\n            \"fundamental\": 0.3,\n            \"technical\": 0.2,\n            \"sentiment\": 0.15,\n            \"debate\": 0.25,\n            \"risk\": 0.1\n        }\n        \n        composite_score = (\n            fundamental_score * weights[\"fundamental\"] +\n            technical_score * weights[\"technical\"] +\n            sentiment_score * weights[\"sentiment\"] +\n            debate_score * weights[\"debate\"] +\n            (1 - risk_score) * weights[\"risk\"]  # 风险分数取反\n        )\n        \n        # 确定投资决策\n        decision = self.score_to_decision(composite_score)\n        confidence = self.calculate_confidence(analysis_results)\n        \n        return {\n            \"decision\": decision,\n            \"composite_score\": composite_score,\n            \"confidence\": confidence,\n            \"reasoning\": self.generate_reasoning(analysis_results, decision)\n        }\n    \n    def score_to_decision(self, score):\n        \"\"\"将分数转换为投资决策\"\"\"\n        if score >= self.decision_thresholds[\"strong_buy\"]:\n            return \"强烈买入\"\n        elif score >= self.decision_thresholds[\"buy\"]:\n            return \"买入\"\n        elif score >= self.decision_thresholds[\"hold\"]:\n            return \"持有\"\n        elif score >= self.decision_thresholds[\"sell\"]:\n            return \"卖出\"\n        else:\n            return \"强烈卖出\"\n    \n    def calculate_confidence(self, analysis_results):\n        \"\"\"计算决策置信度\"\"\"\n        # 基于各项分析的一致性计算置信度\n        scores = [\n            analysis_results.get(\"fundamental_score\", 0.5),\n            analysis_results.get(\"technical_score\", 0.5),\n            analysis_results.get(\"sentiment_score\", 0.5),\n            analysis_results.get(\"debate_score\", 0.5)\n        ]\n        \n        # 计算标准差，标准差越小置信度越高\n        import numpy as np\n        std_dev = np.std(scores)\n        confidence = max(0, 1 - std_dev * 2)  # 标准化到0-1范围\n        \n        return confidence\n```\n\n### 4. 执行计划制定\n\n```python\nclass ExecutionPlanning:\n    def __init__(self, config):\n        self.position_sizing_method = config.get(\"position_sizing\", \"kelly\")\n        self.max_position_size = config.get(\"max_position_size\", 0.05)\n        self.min_position_size = config.get(\"min_position_size\", 0.01)\n    \n    def create_execution_plan(self, decision_result, market_info):\n        \"\"\"创建执行计划\"\"\"\n        decision = decision_result[\"decision\"]\n        confidence = decision_result[\"confidence\"]\n        \n        if decision in [\"买入\", \"强烈买入\"]:\n            return self.create_buy_plan(decision_result, market_info)\n        elif decision in [\"卖出\", \"强烈卖出\"]:\n            return self.create_sell_plan(decision_result, market_info)\n        else:\n            return self.create_hold_plan(decision_result, market_info)\n    \n    def create_buy_plan(self, decision_result, market_info):\n        \"\"\"创建买入计划\"\"\"\n        confidence = decision_result[\"confidence\"]\n        current_price = market_info.get(\"current_price\", 0)\n        \n        # 计算仓位大小\n        position_size = self.calculate_position_size(\n            decision_result, market_info\n        )\n        \n        # 计算目标价格\n        target_price = self.calculate_target_price(\n            current_price, decision_result, \"buy\"\n        )\n        \n        # 计算止损价格\n        stop_loss = self.calculate_stop_loss(\n            current_price, decision_result, \"buy\"\n        )\n        \n        return {\n            \"action\": \"买入\",\n            \"position_size\": position_size,\n            \"entry_price\": current_price,\n            \"target_price\": target_price,\n            \"stop_loss\": stop_loss,\n            \"time_horizon\": self.estimate_time_horizon(decision_result),\n            \"execution_strategy\": self.select_execution_strategy(market_info)\n        }\n    \n    def calculate_position_size(self, decision_result, market_info):\n        \"\"\"计算仓位大小\"\"\"\n        confidence = decision_result[\"confidence\"]\n        volatility = market_info.get(\"volatility\", 0.2)\n        \n        if self.position_sizing_method == \"kelly\":\n            # 凯利公式\n            expected_return = decision_result.get(\"expected_return\", 0.1)\n            win_rate = confidence\n            avg_win = expected_return\n            avg_loss = volatility\n            \n            kelly_fraction = (win_rate * avg_win - (1 - win_rate) * avg_loss) / avg_win\n            position_size = max(self.min_position_size, \n                              min(self.max_position_size, kelly_fraction))\n        \n        elif self.position_sizing_method == \"fixed\":\n            # 固定仓位\n            base_size = 0.02\n            position_size = base_size * confidence\n        \n        else:\n            # 风险平价\n            target_risk = 0.02\n            position_size = target_risk / volatility\n        \n        return min(self.max_position_size, max(self.min_position_size, position_size))\n```\n\n## 决策质量评估\n\n### 决策评估框架\n\n```python\nclass DecisionQualityAssessment:\n    def __init__(self):\n        self.quality_metrics = {\n            \"information_completeness\": 0.2,    # 信息完整性\n            \"analysis_depth\": 0.2,              # 分析深度\n            \"risk_consideration\": 0.2,           # 风险考虑\n            \"logical_consistency\": 0.2,          # 逻辑一致性\n            \"execution_feasibility\": 0.2         # 执行可行性\n        }\n    \n    def assess_decision_quality(self, decision_process):\n        \"\"\"评估决策质量\"\"\"\n        quality_scores = {}\n        \n        for metric, weight in self.quality_metrics.items():\n            score = self.evaluate_metric(decision_process, metric)\n            quality_scores[metric] = score * weight\n        \n        overall_quality = sum(quality_scores.values())\n        \n        return {\n            \"overall_quality\": overall_quality,\n            \"metric_scores\": quality_scores,\n            \"quality_grade\": self.grade_quality(overall_quality),\n            \"improvement_suggestions\": self.suggest_improvements(quality_scores)\n        }\n    \n    def evaluate_metric(self, decision_process, metric):\n        \"\"\"评估特定质量指标\"\"\"\n        if metric == \"information_completeness\":\n            return self.assess_information_completeness(decision_process)\n        elif metric == \"analysis_depth\":\n            return self.assess_analysis_depth(decision_process)\n        elif metric == \"risk_consideration\":\n            return self.assess_risk_consideration(decision_process)\n        elif metric == \"logical_consistency\":\n            return self.assess_logical_consistency(decision_process)\n        elif metric == \"execution_feasibility\":\n            return self.assess_execution_feasibility(decision_process)\n        \n        return 0.5  # 默认分数\n    \n    def grade_quality(self, score):\n        \"\"\"质量等级评定\"\"\"\n        if score >= 0.9:\n            return \"优秀\"\n        elif score >= 0.8:\n            return \"良好\"\n        elif score >= 0.7:\n            return \"中等\"\n        elif score >= 0.6:\n            return \"及格\"\n        else:\n            return \"需要改进\"\n```\n\n## 配置选项\n\n### 管理层配置\n\n```python\nmanager_config = {\n    \"decision_model\": \"consensus\",          # 决策模型\n    \"confidence_threshold\": 0.7,           # 置信度阈值\n    \"risk_tolerance\": \"moderate\",          # 风险容忍度\n    \"position_sizing_method\": \"kelly\",     # 仓位计算方法\n    \"max_position_size\": 0.05,             # 最大仓位\n    \"rebalance_frequency\": \"weekly\",       # 再平衡频率\n    \"performance_review_period\": \"monthly\" # 绩效评估周期\n}\n```\n\n### 决策参数\n\n```python\ndecision_params = {\n    \"analysis_weights\": {                  # 分析权重\n        \"fundamental\": 0.3,\n        \"technical\": 0.2,\n        \"sentiment\": 0.15,\n        \"debate\": 0.25,\n        \"risk\": 0.1\n    },\n    \"decision_thresholds\": {               # 决策阈值\n        \"strong_buy\": 0.8,\n        \"buy\": 0.6,\n        \"hold\": 0.4,\n        \"sell\": 0.2,\n        \"strong_sell\": 0.0\n    },\n    \"time_horizons\": {                     # 投资期限\n        \"short_term\": \"1-3个月\",\n        \"medium_term\": \"3-12个月\",\n        \"long_term\": \"1年以上\"\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 管理层活动日志\nlogger.info(f\"👔 [管理层] 开始决策流程: {company_name}\")\nlogger.info(f\"📋 [信息收集] 收集到 {len(reports)} 份分析报告\")\nlogger.info(f\"⚖️ [辩论评估] 看涨分数: {bull_score:.2f}, 看跌分数: {bear_score:.2f}\")\nlogger.info(f\"🎯 [投资决策] 决策: {decision}, 置信度: {confidence:.2%}\")\nlogger.info(f\"📊 [执行计划] 仓位: {position_size:.2%}, 目标价: {target_price}\")\nlogger.info(f\"✅ [决策完成] 投资计划制定完成\")\n```\n\n### 绩效监控指标\n\n- 决策准确率\n- 风险调整收益\n- 最大回撤控制\n- 决策执行效率\n- 组合多样化程度\n\n## 扩展指南\n\n### 添加新的管理角色\n\n1. **创建新管理角色**\n```python\n# tradingagents/agents/managers/new_manager.py\nfrom tradingagents.utils.tool_logging import log_manager_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_manager(llm):\n    @log_manager_module(\"new_manager\")\n    def new_manager_node(state):\n        # 新管理角色逻辑\n        pass\n    \n    return new_manager_node\n```\n\n2. **集成到决策流程**\n```python\n# 在图配置中添加新管理角色\nfrom tradingagents.agents.managers.new_manager import create_new_manager\n\nnew_manager = create_new_manager(llm)\n```\n\n### 自定义决策模型\n\n1. **实现决策模型接口**\n```python\nclass DecisionModel:\n    def analyze_inputs(self, state):\n        pass\n    \n    def make_decision(self, analysis_results):\n        pass\n    \n    def create_execution_plan(self, decision):\n        pass\n```\n\n2. **注册决策模型**\n```python\ndecision_models = {\n    \"consensus\": ConsensusModel(),\n    \"majority_vote\": MajorityVoteModel(),\n    \"weighted_average\": WeightedAverageModel()\n}\n```\n\n## 最佳实践\n\n### 1. 全面信息整合\n- 确保所有必要信息都已收集\n- 验证信息质量和可靠性\n- 识别信息缺口和不确定性\n- 建立信息更新机制\n\n### 2. 客观决策制定\n- 基于数据和分析而非直觉\n- 考虑多种情景和可能性\n- 量化风险和收益预期\n- 保持决策过程透明\n\n### 3. 动态策略调整\n- 定期评估决策效果\n- 根据市场变化调整策略\n- 学习和改进决策模型\n- 保持策略灵活性\n\n### 4. 有效风险管理\n- 设定明确的风险限额\n- 建立多层风险控制机制\n- 定期进行压力测试\n- 制定应急预案\n\n## 故障排除\n\n### 常见问题\n\n1. **决策冲突**\n   - 检查各分析师输出一致性\n   - 调整决策权重配置\n   - 增加仲裁机制\n   - 提高信息质量\n\n2. **执行计划不可行**\n   - 验证市场流动性\n   - 调整仓位大小\n   - 修改执行时间框架\n   - 考虑市场冲击成本\n\n3. **决策质量下降**\n   - 评估输入信息质量\n   - 检查模型参数设置\n   - 更新决策算法\n   - 增加人工审核\n\n### 调试技巧\n\n1. **决策流程跟踪**\n```python\nlogger.debug(f\"决策输入: {decision_inputs}\")\nlogger.debug(f\"分析结果: {analysis_results}\")\nlogger.debug(f\"决策输出: {decision_output}\")\n```\n\n2. **质量评估**\n```python\nlogger.debug(f\"信息完整性: {information_completeness}\")\nlogger.debug(f\"分析深度: {analysis_depth}\")\nlogger.debug(f\"决策质量: {decision_quality}\")\n```\n\n管理层团队作为TradingAgents框架的决策中枢，通过科学的决策流程和全面的信息整合，确保投资决策的质量和有效性，为投资组合的成功管理提供强有力的领导和指导。","docs/agents/v0.1.13/risk-management.md":"# 风险管理团队\n\n## 概述\n\n风险管理团队是 TradingAgents 框架的风险控制核心，负责从多个角度评估和质疑投资决策，确保投资组合的风险可控性。团队由不同风险偏好的分析师组成，通过多角度的风险评估和反驳机制，为投资决策提供全面的风险视角和保护措施。\n\n## 风险管理架构\n\n### 基础设计\n\n风险管理团队基于统一的架构设计，专注于风险识别、评估和控制：\n\n```python\n# 统一的风险管理模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_risk_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_risk_module(\"risk_type\")\ndef risk_node(state):\n    # 风险管理逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n风险管理团队通过 `AgentState` 获取完整的投资决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    trader_recommendation: str   # 交易员建议\n    messages: List              # 消息历史\n```\n\n## 风险管理团队成员\n\n### 1. 保守风险分析师 (Conservative Risk Analyst)\n\n**文件位置**: `tradingagents/agents/risk_mgmt/conservative_debator.py`\n\n**核心职责**:\n- 作为安全/保守风险分析师\n- 积极反驳激进和中性分析师的论点\n- 指出潜在风险并提出更谨慎的替代方案\n- 保护资产、最小化波动性并确保稳定增长\n\n**核心实现**:\n```python\ndef create_safe_debator(llm):\n    @log_risk_module(\"conservative\")\n    def safe_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trader_recommendation = state.get(\"trader_recommendation\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建保守风险分析提示\n        safe_prompt = f\"\"\"\n        作为安全/保守风险分析师，请对以下投资决策进行风险评估：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        交易员建议: {trader_recommendation}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请从保守角度分析：\n        1. 识别所有潜在风险因素\n        2. 质疑乐观假设的合理性\n        3. 提出更谨慎的替代方案\n        4. 建议风险控制措施\n        5. 评估最坏情况下的损失\n        \"\"\"\n        \n        # 调用LLM生成风险分析\n        response = llm.invoke(safe_prompt)\n        \n        return {\"conservative_risk_analysis\": response.content}\n```\n\n**分析特点**:\n- **风险优先**: 优先识别和强调各类风险因素\n- **保守估值**: 倾向于更保守的估值和预期\n- **防御策略**: 重点关注资本保护和风险控制\n- **质疑乐观**: 对乐观预期和假设保持质疑态度\n\n## 风险评估维度\n\n### 1. 市场风险\n\n**系统性风险**:\n- 宏观经济风险\n- 政策监管风险\n- 利率汇率风险\n- 地缘政治风险\n\n**非系统性风险**:\n- 行业周期风险\n- 公司特定风险\n- 管理层风险\n- 竞争环境风险\n\n### 2. 流动性风险\n\n**市场流动性**:\n- 交易量分析\n- 买卖价差评估\n- 市场深度分析\n- 冲击成本评估\n\n**资金流动性**:\n- 现金流分析\n- 融资能力评估\n- 债务到期分析\n- 营运资金管理\n\n### 3. 信用风险\n\n**财务风险**:\n- 债务负担评估\n- 偿债能力分析\n- 现金流稳定性\n- 盈利质量评估\n\n**运营风险**:\n- 业务模式风险\n- 管理层风险\n- 内控制度风险\n- 合规风险\n\n### 4. 估值风险\n\n**估值方法风险**:\n- 估值模型选择\n- 参数敏感性分析\n- 假设条件评估\n- 比较基准选择\n\n**市场估值风险**:\n- 市场情绪影响\n- 估值泡沫风险\n- 价格发现效率\n- 投资者结构影响\n\n## 配置选项\n\n### 风险管理配置\n\n```python\nrisk_config = {\n    \"risk_tolerance\": \"moderate\",      # 风险容忍度\n    \"max_portfolio_var\": 0.05,         # 最大组合VaR\n    \"max_single_position\": 0.05,       # 最大单一仓位\n    \"max_sector_exposure\": 0.20,       # 最大行业敞口\n    \"correlation_threshold\": 0.70,     # 相关性阈值\n    \"rebalance_trigger\": 0.05,         # 再平衡触发阈值\n    \"stress_test_frequency\": \"weekly\"  # 压力测试频率\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 风险管理活动日志\nlogger.info(f\"🛡️ [风险管理] 开始风险评估: {company_name}\")\nlogger.info(f\"📊 [风险分析] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"⚠️ [风险因素] 识别到 {len(risk_factors)} 个风险因素\")\nlogger.warning(f\"🚨 [风险预警] 发现高风险因素: {high_risk_factors}\")\nlogger.info(f\"✅ [风险评估] 风险分析完成，风险等级: {risk_level}\")\n```\n\n### 风险监控指标\n\n- 风险评估准确性\n- 风险预警及时性\n- 风险控制有效性\n- 损失预测精度\n- 风险调整收益\n\n## 扩展指南\n\n### 添加新的风险分析师\n\n1. **创建新的风险分析师文件**\n```python\n# tradingagents/agents/risk_mgmt/new_risk_analyst.py\nfrom tradingagents.utils.tool_logging import log_risk_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_risk_analyst(llm):\n    @log_risk_module(\"new_risk_type\")\n    def new_risk_node(state):\n        # 新的风险分析逻辑\n        pass\n    \n    return new_risk_node\n```\n\n2. **集成到风险管理系统**\n```python\n# 在相应的图配置中添加新的风险分析师\nfrom tradingagents.agents.risk_mgmt.new_risk_analyst import create_new_risk_analyst\n\nnew_risk_analyst = create_new_risk_analyst(llm)\n```\n\n## 最佳实践\n\n### 1. 全面风险识别\n- 系统性识别各类风险\n- 定期更新风险清单\n- 关注新兴风险因素\n- 建立风险分类体系\n\n### 2. 量化风险管理\n- 使用多种风险指标\n- 定期校准风险模型\n- 进行回测验证\n- 持续优化参数\n\n### 3. 动态风险控制\n- 实时监控风险水平\n- 及时调整风险敞口\n- 灵活应对市场变化\n- 保持风险预算平衡\n\n### 4. 透明风险沟通\n- 清晰传达风险信息\n- 定期发布风险报告\n- 及时发出风险预警\n- 提供风险教育培训\n\n## 故障排除\n\n### 常见问题\n\n1. **风险分析失败**\n   - 检查输入数据完整性\n   - 验证LLM连接状态\n   - 确认股票市场信息获取\n   - 检查日志记录\n\n2. **风险评估不准确**\n   - 更新风险模型参数\n   - 增加历史数据样本\n   - 调整风险因子权重\n   - 优化评估算法\n\n3. **风险控制过度保守**\n   - 调整风险容忍度参数\n   - 平衡风险与收益目标\n   - 优化仓位管理策略\n   - 考虑市场环境变化\n\n### 调试技巧\n\n1. **风险分析调试**\n```python\nlogger.debug(f\"风险分析输入: 公司={company_name}, 类型={stock_type}\")\nlogger.debug(f\"风险因素识别: {risk_factors}\")\nlogger.debug(f\"风险评估结果: {risk_assessment}\")\n```\n\n2. **状态验证**\n```python\nlogger.debug(f\"状态检查: 基本面报告长度={len(fundamentals_report)}\")\nlogger.debug(f\"状态检查: 市场报告长度={len(market_report)}\")\nlogger.debug(f\"状态检查: 交易员建议={trader_recommendation[:100]}...\")\n```\n\n风险管理团队作为TradingAgents框架的安全守护者，通过全面的风险识别、评估和控制，确保投资决策在可控风险范围内进行，为投资组合的长期稳健增长提供重要保障。","docs/agents/v0.1.13/trader.md":"# 交易员\n\n## 概述\n\n交易员是 TradingAgents 框架的执行层核心，负责基于研究员团队的辩论结果和管理层的投资计划，生成具体的投资建议和交易决策。交易员将所有前期分析和决策转化为可执行的投资行动，包括具体的目标价位、置信度评估和风险评分。\n\n## 交易员架构\n\n### 基础设计\n\n交易员基于统一的架构设计，集成了多维度分析能力和决策执行功能：\n\n```python\n# 统一的交易员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_trader_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_trader_module(\"trader\")\ndef trader_node(state):\n    # 交易员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n交易员通过 `AgentState` 获取完整的分析链条信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    investment_plan: str         # 投资计划\n    messages: List              # 消息历史\n```\n\n## 交易员实现\n\n### 核心功能\n\n**文件位置**: `tradingagents/agents/trader/trader.py`\n\n**核心职责**:\n- 综合分析所有输入信息\n- 生成具体的投资建议\n- 提供目标价位和置信度\n- 评估投资风险等级\n- 制定执行策略\n\n### 核心实现逻辑\n\n```python\ndef create_trader(llm):\n    @log_trader_module(\"trader\")\n    def trader_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        investment_plan = state.get(\"investment_plan\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建交易决策提示\n        trader_prompt = f\"\"\"\n        作为专业交易员，请基于以下信息生成投资建议：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        投资计划: {investment_plan}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请提供：\n        1. 明确的投资建议（买入/卖出/持有）\n        2. 具体目标价位（以{currency_unit}计价）\n        3. 置信度评估（0-100%）\n        4. 风险评分（1-10分）\n        5. 详细推理过程\n        \"\"\"\n        \n        # 调用LLM生成交易决策\n        response = llm.invoke(trader_prompt)\n        \n        return {\"trader_recommendation\": response.content}\n```\n\n## 决策输入分析\n\n### 多维度信息整合\n\n交易员需要综合处理来自多个源头的信息：\n\n1. **投资计划** (`investment_plan`)\n   - 来源：研究管理员的综合决策\n   - 内容：基于辩论结果的投资建议\n   - 作用：提供决策框架和方向指导\n\n2. **市场研究报告** (`market_report`)\n   - 来源：市场分析师\n   - 内容：技术指标、价格趋势、交易信号\n   - 作用：提供技术面分析支持\n\n3. **情绪报告** (`sentiment_report`)\n   - 来源：社交媒体分析师\n   - 内容：投资者情绪、舆论趋势\n   - 作用：评估市场情绪影响\n\n4. **新闻报告** (`news_report`)\n   - 来源：新闻分析师\n   - 内容：重要新闻事件、政策影响\n   - 作用：识别催化因素和风险事件\n\n5. **基本面报告** (`fundamentals_report`)\n   - 来源：基本面分析师\n   - 内容：财务数据、估值分析\n   - 作用：提供价值投资依据\n\n### 信息权重分配\n\n```python\n# 信息权重配置示例\ninfo_weights = {\n    \"investment_plan\": 0.35,      # 投资计划权重最高\n    \"fundamentals_report\": 0.25,  # 基本面分析\n    \"market_report\": 0.20,        # 技术分析\n    \"news_report\": 0.15,          # 新闻影响\n    \"sentiment_report\": 0.05       # 情绪分析\n}\n```\n\n## 股票类型支持\n\n### 多市场交易能力\n\n交易员支持全球主要股票市场的交易决策：\n\n```python\n# 市场信息获取和处理\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(company_name)\n\n# 根据市场类型调整交易策略\nif market_info.get(\"is_china\"):\n    # A股交易特点\n    trading_hours = \"09:30-15:00 (北京时间)\"\n    price_limit = \"±10% (ST股票±5%)\"\n    settlement = \"T+1\"\n    currency = \"人民币(CNY)\"\n    \nelif market_info.get(\"is_hk\"):\n    # 港股交易特点\n    trading_hours = \"09:30-16:00 (香港时间)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"港币(HKD)\"\n    \nelif market_info.get(\"is_us\"):\n    # 美股交易特点\n    trading_hours = \"09:30-16:00 (EST)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"美元(USD)\"\n```\n\n### 本土化交易策略\n\n1. **A股市场特色**:\n   - 涨跌停板制度考虑\n   - T+1交易制度影响\n   - 政策敏感性分析\n   - 散户投资者行为特点\n\n2. **港股市场特色**:\n   - 中港资金流动\n   - 汇率风险管理\n   - 国际投资者参与\n   - 估值差异套利\n\n3. **美股市场特色**:\n   - 盘前盘后交易\n   - 期权策略考虑\n   - 机构投资者主导\n   - 全球经济影响\n\n## 决策输出规范\n\n### 标准输出格式\n\n交易员必须提供结构化的投资建议：\n\n```python\nclass TradingRecommendation:\n    action: str              # 投资行动 (买入/卖出/持有)\n    target_price: float      # 目标价位\n    confidence: float        # 置信度 (0-100%)\n    risk_score: int          # 风险评分 (1-10)\n    reasoning: str           # 详细推理\n    time_horizon: str        # 投资时间框架\n    stop_loss: float         # 止损价位\n    take_profit: float       # 止盈价位\n```\n\n### 强制要求\n\n根据代码实现，交易员必须提供：\n\n1. **具体目标价位**\n   - 必须以相应货币单位计价\n   - 基于综合分析的合理估值\n   - 考虑市场流动性和交易成本\n\n2. **置信度评估**\n   - 0-100%的数值范围\n   - 反映决策的确定性程度\n   - 基于信息质量和分析深度\n\n3. **风险评分**\n   - 1-10分的评分体系\n   - 1分为最低风险，10分为最高风险\n   - 综合考虑各类风险因素\n\n4. **详细推理**\n   - 完整的决策逻辑链条\n   - 关键假设和依据说明\n   - 风险因素识别和应对\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```mermaid\ngraph LR\n    A[投资计划] --> E[信息整合]\n    B[基本面报告] --> E\n    C[市场报告] --> E\n    D[新闻&情绪报告] --> E\n    E --> F[综合分析]\n```\n\n### 2. 分析处理阶段\n\n```mermaid\ngraph TB\n    A[综合信息] --> B[市场类型识别]\n    B --> C[交易规则适配]\n    C --> D[风险评估]\n    D --> E[价格目标计算]\n    E --> F[置信度评估]\n```\n\n### 3. 决策生成阶段\n\n```mermaid\ngraph LR\n    A[分析结果] --> B[投资建议]\n    B --> C[目标价位]\n    B --> D[风险评分]\n    B --> E[执行策略]\n    C --> F[最终决策]\n    D --> F\n    E --> F\n```\n\n## 风险管理\n\n### 风险评估维度\n\n1. **市场风险**:\n   - 系统性风险评估\n   - 行业周期风险\n   - 流动性风险\n   - 波动率风险\n\n2. **信用风险**:\n   - 公司财务风险\n   - 债务违约风险\n   - 管理层风险\n   - 治理结构风险\n\n3. **操作风险**:\n   - 交易执行风险\n   - 技术系统风险\n   - 人为操作风险\n   - 合规风险\n\n4. **特殊风险**:\n   - 政策监管风险\n   - 汇率风险\n   - 地缘政治风险\n   - 黑天鹅事件\n\n### 风险控制措施\n\n```python\n# 风险控制参数\nrisk_controls = {\n    \"max_position_size\": 0.05,    # 最大仓位比例\n    \"stop_loss_ratio\": 0.08,      # 止损比例\n    \"take_profit_ratio\": 0.15,    # 止盈比例\n    \"max_drawdown\": 0.10,         # 最大回撤\n    \"correlation_limit\": 0.70     # 相关性限制\n}\n```\n\n## 性能评估\n\n### 关键指标\n\n1. **准确性指标**:\n   - 预测准确率\n   - 目标价位达成率\n   - 方向判断正确率\n   - 时间框架准确性\n\n2. **收益指标**:\n   - 绝对收益率\n   - 相对基准收益\n   - 风险调整收益\n   - 夏普比率\n\n3. **风险指标**:\n   - 最大回撤\n   - 波动率\n   - VaR值\n   - 风险评分准确性\n\n### 性能监控\n\n```python\n# 交易性能追踪\nclass TradingPerformance:\n    def __init__(self):\n        self.trades = []\n        self.accuracy_rate = 0.0\n        self.total_return = 0.0\n        self.max_drawdown = 0.0\n        self.sharpe_ratio = 0.0\n    \n    def update_performance(self, trade_result):\n        # 更新性能指标\n        pass\n    \n    def generate_report(self):\n        # 生成性能报告\n        pass\n```\n\n## 配置选项\n\n### 交易员配置\n\n```python\ntrader_config = {\n    \"risk_tolerance\": \"moderate\",     # 风险容忍度\n    \"investment_style\": \"balanced\",   # 投资风格\n    \"time_horizon\": \"medium\",         # 投资时间框架\n    \"position_sizing\": \"kelly\",       # 仓位管理方法\n    \"rebalance_frequency\": \"weekly\"   # 再平衡频率\n}\n```\n\n### 市场配置\n\n```python\nmarket_config = {\n    \"trading_hours\": {\n        \"china\": \"09:30-15:00\",\n        \"hk\": \"09:30-16:00\",\n        \"us\": \"09:30-16:00\"\n    },\n    \"settlement_days\": {\n        \"china\": 1,\n        \"hk\": 2,\n        \"us\": 2\n    },\n    \"commission_rates\": {\n        \"china\": 0.0003,\n        \"hk\": 0.0025,\n        \"us\": 0.0005\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 交易员活动日志\nlogger.info(f\"💼 [交易员] 开始分析股票: {company_name}\")\nlogger.info(f\"📈 [交易员] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"📊 [交易员] 投资计划: {investment_plan[:100]}...\")\nlogger.info(f\"🎯 [交易员] 生成投资建议完成\")\n```\n\n### 决策追踪\n\n```python\n# 决策过程记录\ndecision_log = {\n    \"timestamp\": datetime.now(),\n    \"ticker\": company_name,\n    \"market_type\": stock_type,\n    \"input_reports\": {\n        \"fundamentals\": len(fundamentals_report),\n        \"market\": len(market_report),\n        \"news\": len(news_report),\n        \"sentiment\": len(sentiment_report)\n    },\n    \"decision\": {\n        \"action\": action,\n        \"target_price\": target_price,\n        \"confidence\": confidence,\n        \"risk_score\": risk_score\n    }\n}\n```\n\n## 扩展指南\n\n### 添加新的交易策略\n\n1. **创建策略类**\n```python\nclass CustomTradingStrategy:\n    def __init__(self, config):\n        self.config = config\n    \n    def generate_recommendation(self, state):\n        # 自定义交易逻辑\n        pass\n    \n    def calculate_position_size(self, confidence, risk_score):\n        # 仓位计算逻辑\n        pass\n```\n\n2. **集成到交易员**\n```python\n# 在trader.py中添加策略选择\nstrategy_map = {\n    \"conservative\": ConservativeStrategy(),\n    \"aggressive\": AggressiveStrategy(),\n    \"custom\": CustomTradingStrategy()\n}\n\nstrategy = strategy_map.get(config.get(\"strategy\", \"balanced\"))\n```\n\n### 添加新的风险模型\n\n1. **实现风险模型接口**\n```python\nclass RiskModel:\n    def calculate_risk_score(self, market_data, fundamentals):\n        pass\n    \n    def estimate_var(self, position, confidence_level):\n        pass\n    \n    def suggest_position_size(self, risk_budget, expected_return):\n        pass\n```\n\n2. **注册风险模型**\n```python\nrisk_models = {\n    \"var\": VaRRiskModel(),\n    \"monte_carlo\": MonteCarloRiskModel(),\n    \"factor\": FactorRiskModel()\n}\n```\n\n## 最佳实践\n\n### 1. 决策一致性\n- 保持决策逻辑的一致性\n- 避免情绪化决策\n- 基于数据和分析\n- 记录决策依据\n\n### 2. 风险控制\n- 严格执行止损策略\n- 分散投资风险\n- 定期评估风险敞口\n- 及时调整仓位\n\n### 3. 性能优化\n- 持续监控交易表现\n- 定期回测策略效果\n- 优化决策模型\n- 学习市场变化\n\n### 4. 合规管理\n- 遵守交易规则\n- 满足监管要求\n- 保持透明度\n- 记录完整审计轨迹\n\n## 故障排除\n\n### 常见问题\n\n1. **决策质量问题**\n   - 检查输入数据质量\n   - 验证分析逻辑\n   - 调整权重配置\n   - 增加验证步骤\n\n2. **风险控制失效**\n   - 检查风险参数设置\n   - 验证止损机制\n   - 评估相关性计算\n   - 更新风险模型\n\n3. **性能问题**\n   - 优化决策算法\n   - 减少计算复杂度\n   - 启用结果缓存\n   - 并行处理分析\n\n### 调试技巧\n\n1. **决策过程追踪**\n```python\nlogger.debug(f\"输入信息完整性: {check_input_completeness(state)}\")\nlogger.debug(f\"市场信息: {market_info}\")\nlogger.debug(f\"决策权重: {info_weights}\")\n```\n\n2. **结果验证**\n```python\nlogger.debug(f\"目标价位合理性: {validate_target_price(target_price)}\")\nlogger.debug(f\"风险评分一致性: {validate_risk_score(risk_score)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行交易决策\nend_time = time.time()\nlogger.debug(f\"决策耗时: {end_time - start_time:.2f}秒\")\n```\n\n交易员作为TradingAgents框架的最终执行层，承担着将所有分析和研究转化为具体投资行动的重要职责，其决策质量直接影响整个系统的投资表现。"},"items":[{"name":"analysts.md","path":"docs/agents/v0.1.13/analysts.md","rawUrl":"https://raw.githubusercontent.com/hsliuping/TradingAgents-CN/HEAD/docs/agents/v0.1.13/analysts.md","title":"Subagent: analysts","category":"subagent-persona","format":"markdown","content":"# 分析师团队\n\n## 概述\n\n分析师团队是 TradingAgents 框架的核心分析组件，负责从不同维度对股票进行专业分析。团队由四类专业分析师组成，每个分析师都专注于特定的分析领域，通过协作为投资决策提供全面的数据支持。\n\n## 分析师架构\n\n### 基础分析师设计\n\n所有分析师都基于统一的架构设计，使用相同的工具接口和日志系统：\n\n```python\n# 统一的分析师模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_analyst_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_analyst_module(\"analyst_type\")\ndef analyst_node(state):\n    # 分析师逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n分析师通过 `AgentState` 进行状态管理：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    messages: List              # 消息历史\n```\n\n## 分析师团队成员\n\n### 1. 基本面分析师 (Fundamentals Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/fundamentals_analyst.py`\n\n**核心职责**:\n- 分析公司财务数据和基本面指标\n- 评估公司估值和财务健康度\n- 提供基于财务数据的投资建议\n\n**技术特性**:\n- 使用统一工具架构自动识别股票类型\n- 支持A股、港股、美股的基本面分析\n- 智能选择合适的数据源（在线/离线模式）\n\n**核心实现**:\n```python\ndef create_fundamentals_analyst(llm, toolkit):\n    @log_analyst_module(\"fundamentals\")\n    def fundamentals_analyst_node(state):\n        ticker = state[\"company_of_interest\"]\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(ticker)\n        \n        # 获取公司名称\n        company_name = _get_company_name_for_fundamentals(ticker, market_info)\n        \n        # 选择合适的工具\n        if toolkit.config[\"online_tools\"]:\n            tools = [toolkit.get_stock_fundamentals_unified]\n        else:\n            # 离线模式工具选择\n            tools = [...]\n```\n\n**支持的数据源**:\n- **A股**: 统一接口获取中国股票信息\n- **港股**: 改进的港股工具\n- **美股**: FinnHub、SimFin等数据源\n\n### 2. 市场分析师 (Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/market_analyst.py`\n\n**核心职责**:\n- 技术指标分析（RSI、MACD、布林带等）\n- 价格趋势和图表模式识别\n- 支撑阻力位分析\n- 交易信号生成\n\n**分析维度**:\n- 短期技术指标\n- 中长期趋势分析\n- 成交量分析\n- 价格动量评估\n\n### 3. 新闻分析师 (News Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/news_analyst.py`\n\n**核心职责**:\n- 新闻事件影响分析\n- 宏观经济数据解读\n- 政策影响评估\n- 行业动态分析\n\n**数据来源**:\n- Google News API\n- FinnHub新闻数据\n- 实时新闻流\n- 经济数据发布\n\n**特殊功能**:\n- 新闻过滤和质量评估\n- 情感分析和影响评级\n- 时效性评估\n\n### 4. 社交媒体分析师 (Social Media Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/social_media_analyst.py`\n\n**核心职责**:\n- 社交媒体情绪分析\n- 投资者情绪监测\n- 舆论趋势识别\n- 热点话题追踪\n\n**数据来源**:\n- Reddit讨论数据\n- Twitter情感数据\n- 金融论坛讨论\n- 社交媒体热度指标\n\n### 5. 中国市场分析师 (China Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/china_market_analyst.py`\n\n**核心职责**:\n- 专门针对中国A股市场的分析\n- 中国特色的市场因素分析\n- 政策环境影响评估\n- 本土化的投资逻辑\n\n## 工具集成\n\n### 统一工具架构\n\n分析师使用统一的工具接口，支持自动股票类型识别：\n\n```python\n# 统一基本面分析工具\ntools = [toolkit.get_stock_fundamentals_unified]\n\n# 工具内部自动识别股票类型并调用相应数据源\n# - A股: 使用中国股票数据接口\n# - 港股: 使用港股专用接口\n# - 美股: 使用FinnHub等国际数据源\n```\n\n### 在线/离线模式\n\n**在线模式** (`online_tools=True`):\n- 使用实时API数据\n- 数据最新但成本较高\n- 适合生产环境\n\n**离线模式** (`online_tools=False`):\n- 使用缓存数据\n- 成本低但数据可能滞后\n- 适合开发和测试\n\n## 股票类型支持\n\n### 市场识别机制\n\n```python\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 返回信息包括：\n# - is_china: 是否为A股\n# - is_hk: 是否为港股\n# - is_us: 是否为美股\n# - market_name: 市场名称\n# - currency_name: 货币名称\n# - currency_symbol: 货币符号\n```\n\n### 支持的市场\n\n1. **中国A股**\n   - 股票代码格式：000001, 600000等\n   - 货币单位：人民币(CNY)\n   - 数据源：统一中国股票接口\n\n2. **香港股市**\n   - 股票代码格式：0700.HK, 00700等\n   - 货币单位：港币(HKD)\n   - 数据源：改进的港股工具\n\n3. **美国股市**\n   - 股票代码格式：AAPL, TSLA等\n   - 货币单位：美元(USD)\n   - 数据源：FinnHub, Yahoo Finance等\n\n## 分析流程\n\n### 1. 数据获取阶段\n```mermaid\ngraph LR\n    A[股票代码] --> B[市场类型识别]\n    B --> C[选择数据源]\n    C --> D[获取原始数据]\n    D --> E[数据预处理]\n```\n\n### 2. 分析执行阶段\n```mermaid\ngraph TB\n    A[原始数据] --> B[基本面分析师]\n    A --> C[市场分析师]\n    A --> D[新闻分析师]\n    A --> E[社交媒体分析师]\n    \n    B --> F[基本面报告]\n    C --> G[市场分析报告]\n    D --> H[新闻分析报告]\n    E --> I[情绪分析报告]\n```\n\n### 3. 报告生成阶段\n```mermaid\ngraph LR\n    A[各分析师报告] --> B[状态更新]\n    B --> C[传递给研究员团队]\n    C --> D[进入辩论阶段]\n```\n\n## 配置选项\n\n### 分析师选择\n```python\n# 可选择的分析师类型\nselected_analysts = [\n    \"market\",        # 市场分析师\n    \"social\",        # 社交媒体分析师\n    \"news\",          # 新闻分析师\n    \"fundamentals\"   # 基本面分析师\n]\n```\n\n### 工具配置\n```python\ntoolkit_config = {\n    \"online_tools\": True,     # 是否使用在线工具\n    \"cache_enabled\": True,    # 是否启用缓存\n    \"timeout\": 30,           # API超时时间\n    \"retry_count\": 3         # 重试次数\n}\n```\n\n## 日志和监控\n\n### 统一日志系统\n```python\n# 每个分析师都使用统一的日志系统\nlogger = get_logger(\"default\")\n\n# 详细的调试日志\nlogger.debug(f\"📊 [DEBUG] 基本面分析师节点开始\")\nlogger.info(f\"📊 [基本面分析师] 正在分析股票: {ticker}\")\nlogger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n### 性能监控\n- 分析耗时统计\n- API调用次数追踪\n- 错误率监控\n- 缓存命中率统计\n\n## 扩展指南\n\n### 添加新的分析师\n\n1. **创建分析师文件**\n```python\n# tradingagents/agents/analysts/custom_analyst.py\nfrom tradingagents.utils.tool_logging import log_analyst_module\nfrom tradingagents.utils.logging_init import get_logger\n\ndef create_custom_analyst(llm, toolkit):\n    @log_analyst_module(\"custom\")\n    def custom_analyst_node(state):\n        # 自定义分析逻辑\n        pass\n    return custom_analyst_node\n```\n\n2. **注册到系统**\n```python\n# 在trading_graph.py中添加\nselected_analysts.append(\"custom\")\n```\n\n### 添加新的数据源\n\n1. **实现数据接口**\n2. **添加到工具集**\n3. **更新配置选项**\n\n## 最佳实践\n\n### 1. 错误处理\n- 使用try-catch包装API调用\n- 提供降级方案\n- 记录详细错误信息\n\n### 2. 性能优化\n- 启用数据缓存\n- 合理设置超时时间\n- 避免重复API调用\n\n### 3. 数据质量\n- 验证数据完整性\n- 处理异常值\n- 提供数据质量评分\n\n### 4. 可维护性\n- 使用统一的代码结构\n- 添加详细的注释\n- 遵循命名规范\n\n## 故障排除\n\n### 常见问题\n\n1. **API调用失败**\n   - 检查网络连接\n   - 验证API密钥\n   - 查看速率限制\n\n2. **数据格式错误**\n   - 检查股票代码格式\n   - 验证市场类型识别\n   - 查看数据源兼容性\n\n3. **性能问题**\n   - 启用缓存机制\n   - 优化并发设置\n   - 减少不必要的API调用\n\n### 调试技巧\n\n1. **启用详细日志**\n```python\nlogger.setLevel(logging.DEBUG)\n```\n\n2. **检查状态传递**\n```python\nlogger.debug(f\"当前状态: {state}\")\n```\n\n3. **验证工具配置**\n```python\nlogger.debug(f\"工具配置: {toolkit.config}\")\n```\n\n分析师团队是整个TradingAgents框架的基础，通过专业化分工和协作，为后续的研究辩论和交易决策提供高质量的数据支持。","isInternal":false,"tokens":3151,"sizeBytes":8946},{"name":"managers.md","path":"docs/agents/v0.1.13/managers.md","rawUrl":"https://raw.githubusercontent.com/hsliuping/TradingAgents-CN/HEAD/docs/agents/v0.1.13/managers.md","title":"Subagent: managers","category":"subagent-persona","format":"markdown","content":"# 管理层团队\n\n## 概述\n\n管理层团队是 TradingAgents 框架的决策核心，负责协调各个智能体的工作流程，评估投资辩论，并做出最终的投资决策。管理层通过综合分析师、研究员、交易员和风险管理团队的输出，形成全面的投资策略和具体的执行计划。\n\n## 管理层架构\n\n### 基础设计\n\n管理层团队基于统一的架构设计，专注于决策协调和策略制定：\n\n```python\n# 统一的管理层模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_manager_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_manager_module(\"manager_type\")\ndef manager_node(state):\n    # 管理层决策逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n管理层团队通过 `AgentState` 获取完整的分析和决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    bull_argument: str           # 看涨论证\n    bear_argument: str           # 看跌论证\n    trader_recommendation: str   # 交易员建议\n    risk_analysis: str           # 风险分析\n    messages: List              # 消息历史\n```\n\n## 管理层团队成员\n\n### 1. 研究经理 (Research Manager)\n\n**文件位置**: `tradingagents/agents/managers/research_manager.py`\n\n**核心职责**:\n- 作为投资组合经理和辩论主持人\n- 评估投资辩论质量和有效性\n- 总结看涨和看跌分析师的关键观点\n- 基于最有说服力的证据做出明确的买入、卖出或持有决策\n- 为交易员制定详细的投资计划\n\n**核心实现**:\n```python\ndef create_research_manager(llm):\n    @log_manager_module(\"research_manager\")\n    def research_manager_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trade_date = state.get(\"trade_date\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        \n        # 获取辩论结果\n        bull_argument = state.get(\"bull_argument\", \"\")\n        bear_argument = state.get(\"bear_argument\", \"\")\n        \n        # 构建研究经理决策提示\n        manager_prompt = f\"\"\"\n        作为投资组合经理和辩论主持人，请基于以下信息做出投资决策：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        交易日期: {trade_date}\n        \n        === 基础分析报告 ===\n        基本面报告: {fundamentals_report}\n        市场分析报告: {market_report}\n        情绪分析报告: {sentiment_report}\n        新闻分析报告: {news_report}\n        \n        === 投资辩论结果 ===\n        看涨论证: {bull_argument}\n        看跌论证: {bear_argument}\n        \n        请作为经验丰富的投资组合经理：\n        1. 评估辩论质量和论证强度\n        2. 总结关键投资观点和风险因素\n        3. 做出明确的投资决策（买入/卖出/持有）\n        4. 制定详细的投资计划和执行策略\n        5. 提供具体的目标价格和时间框架\n        6. 说明决策理由和风险控制措施\n        \n        请确保决策基于客观分析，并提供清晰的执行指导。\n        \"\"\"\n        \n        # 调用LLM生成投资决策\n        response = llm.invoke(manager_prompt)\n        \n        return {\"investment_plan\": response.content}\n```\n\n**决策特点**:\n- **综合评估**: 全面考虑各类分析报告和辩论结果\n- **客观决策**: 基于证据强度而非个人偏好做决策\n- **具体指导**: 提供明确的执行计划和目标价格\n- **风险意识**: 充分考虑风险因素和控制措施\n\n### 2. 投资组合经理 (Portfolio Manager)\n\n**文件位置**: `tradingagents/agents/managers/portfolio_manager.py`\n\n**核心职责**:\n- 管理整体投资组合配置\n- 协调多个股票的投资决策\n- 优化资产配置和风险分散\n- 监控组合绩效和风险指标\n\n**核心功能**:\n```python\ndef create_portfolio_manager(llm):\n    @log_manager_module(\"portfolio_manager\")\n    def portfolio_manager_node(state):\n        # 获取组合信息\n        portfolio_holdings = state.get(\"portfolio_holdings\", {})\n        available_capital = state.get(\"available_capital\", 0)\n        risk_tolerance = state.get(\"risk_tolerance\", \"moderate\")\n        \n        # 获取新的投资建议\n        new_investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建组合管理提示\n        portfolio_prompt = f\"\"\"\n        作为投资组合经理，请评估新的投资建议对整体组合的影响：\n        \n        === 当前组合状况 ===\n        持仓情况: {portfolio_holdings}\n        可用资金: {available_capital}\n        风险偏好: {risk_tolerance}\n        \n        === 新投资建议 ===\n        目标股票: {company_name}\n        投资计划: {new_investment_plan}\n        \n        请分析：\n        1. 新投资对组合风险收益的影响\n        2. 建议的仓位大小和配置比例\n        3. 与现有持仓的相关性分析\n        4. 组合整体风险评估\n        5. 再平衡建议（如需要）\n        \n        请提供具体的组合调整方案。\n        \"\"\"\n        \n        response = llm.invoke(portfolio_prompt)\n        \n        return {\"portfolio_adjustment\": response.content}\n```\n\n**管理特点**:\n- **整体视角**: 从组合层面考虑单个投资决策\n- **风险分散**: 优化资产配置以降低整体风险\n- **动态调整**: 根据市场变化调整组合配置\n- **绩效监控**: 持续跟踪组合表现和风险指标\n\n### 3. 风险经理 (Risk Manager)\n\n**文件位置**: `tradingagents/agents/managers/risk_manager.py`\n\n**核心职责**:\n- 监控整体风险敞口\n- 设定和执行风险限额\n- 协调风险控制措施\n- 提供风险管理指导\n\n**核心功能**:\n```python\ndef create_risk_manager(llm):\n    @log_manager_module(\"risk_manager\")\n    def risk_manager_node(state):\n        # 获取风险分析结果\n        conservative_analysis = state.get(\"conservative_risk_analysis\", \"\")\n        aggressive_analysis = state.get(\"aggressive_risk_analysis\", \"\")\n        neutral_analysis = state.get(\"neutral_risk_analysis\", \"\")\n        \n        # 获取投资计划\n        investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建风险管理提示\n        risk_management_prompt = f\"\"\"\n        作为风险经理，请基于多角度风险分析制定风险管理策略：\n        \n        === 风险分析结果 ===\n        保守风险分析: {conservative_analysis}\n        激进风险分析: {aggressive_analysis}\n        中性风险分析: {neutral_analysis}\n        \n        === 投资计划 ===\n        目标股票: {company_name}\n        投资方案: {investment_plan}\n        \n        请制定：\n        1. 综合风险评估和等级\n        2. 具体的风险控制措施\n        3. 止损止盈策略\n        4. 仓位管理建议\n        5. 风险监控指标\n        6. 应急预案\n        \n        请提供可执行的风险管理方案。\n        \"\"\"\n        \n        response = llm.invoke(risk_management_prompt)\n        \n        return {\"risk_management_plan\": response.content}\n```\n\n**管理特点**:\n- **全面监控**: 监控各类风险因素和指标\n- **主动管理**: 主动识别和控制潜在风险\n- **量化分析**: 使用量化方法评估风险\n- **应急响应**: 制定风险事件应对预案\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```python\nclass InformationGathering:\n    def __init__(self):\n        self.required_reports = [\n            \"fundamentals_report\",\n            \"market_report\", \n            \"sentiment_report\",\n            \"news_report\"\n        ]\n        self.debate_results = [\n            \"bull_argument\",\n            \"bear_argument\"\n        ]\n        self.risk_analyses = [\n            \"conservative_risk_analysis\",\n            \"aggressive_risk_analysis\",\n            \"neutral_risk_analysis\"\n        ]\n    \n    def validate_inputs(self, state):\n        \"\"\"验证输入信息完整性\"\"\"\n        missing_reports = []\n        \n        for report in self.required_reports:\n            if not state.get(report):\n                missing_reports.append(report)\n        \n        if missing_reports:\n            logger.warning(f\"缺少必要报告: {missing_reports}\")\n            return False, missing_reports\n        \n        return True, []\n    \n    def assess_information_quality(self, state):\n        \"\"\"评估信息质量\"\"\"\n        quality_scores = {}\n        \n        for report in self.required_reports:\n            content = state.get(report, \"\")\n            quality_scores[report] = self.calculate_content_quality(content)\n        \n        return quality_scores\n    \n    def calculate_content_quality(self, content):\n        \"\"\"计算内容质量分数\"\"\"\n        if not content:\n            return 0.0\n        \n        # 基于长度、关键词、结构等因素评估质量\n        length_score = min(len(content) / 1000, 1.0)  # 标准化长度分数\n        keyword_score = self.check_keywords(content)\n        structure_score = self.check_structure(content)\n        \n        return (length_score + keyword_score + structure_score) / 3\n```\n\n### 2. 辩论评估阶段\n\n```python\nclass DebateEvaluation:\n    def __init__(self):\n        self.evaluation_criteria = {\n            \"logic_strength\": 0.3,      # 逻辑强度\n            \"evidence_quality\": 0.3,    # 证据质量\n            \"risk_awareness\": 0.2,      # 风险意识\n            \"market_insight\": 0.2       # 市场洞察\n        }\n    \n    def evaluate_arguments(self, bull_argument, bear_argument):\n        \"\"\"评估辩论论证质量\"\"\"\n        bull_score = self.score_argument(bull_argument)\n        bear_score = self.score_argument(bear_argument)\n        \n        return {\n            \"bull_score\": bull_score,\n            \"bear_score\": bear_score,\n            \"winner\": \"bull\" if bull_score > bear_score else \"bear\",\n            \"confidence\": abs(bull_score - bear_score)\n        }\n    \n    def score_argument(self, argument):\n        \"\"\"为单个论证打分\"\"\"\n        scores = {}\n        \n        for criterion, weight in self.evaluation_criteria.items():\n            criterion_score = self.evaluate_criterion(argument, criterion)\n            scores[criterion] = criterion_score * weight\n        \n        return sum(scores.values())\n    \n    def evaluate_criterion(self, argument, criterion):\n        \"\"\"评估特定标准\"\"\"\n        # 使用NLP技术或规则评估论证质量\n        if criterion == \"logic_strength\":\n            return self.assess_logical_structure(argument)\n        elif criterion == \"evidence_quality\":\n            return self.assess_evidence_strength(argument)\n        elif criterion == \"risk_awareness\":\n            return self.assess_risk_consideration(argument)\n        elif criterion == \"market_insight\":\n            return self.assess_market_understanding(argument)\n        \n        return 0.5  # 默认分数\n```\n\n### 3. 决策制定阶段\n\n```python\nclass DecisionMaking:\n    def __init__(self, config):\n        self.decision_thresholds = config.get(\"decision_thresholds\", {\n            \"strong_buy\": 0.8,\n            \"buy\": 0.6,\n            \"hold\": 0.4,\n            \"sell\": 0.2,\n            \"strong_sell\": 0.0\n        })\n        self.confidence_threshold = config.get(\"confidence_threshold\", 0.7)\n    \n    def make_investment_decision(self, analysis_results):\n        \"\"\"制定投资决策\"\"\"\n        # 综合各项分析结果\n        fundamental_score = analysis_results.get(\"fundamental_score\", 0.5)\n        technical_score = analysis_results.get(\"technical_score\", 0.5)\n        sentiment_score = analysis_results.get(\"sentiment_score\", 0.5)\n        debate_score = analysis_results.get(\"debate_score\", 0.5)\n        risk_score = analysis_results.get(\"risk_score\", 0.5)\n        \n        # 加权计算综合分数\n        weights = {\n            \"fundamental\": 0.3,\n            \"technical\": 0.2,\n            \"sentiment\": 0.15,\n            \"debate\": 0.25,\n            \"risk\": 0.1\n        }\n        \n        composite_score = (\n            fundamental_score * weights[\"fundamental\"] +\n            technical_score * weights[\"technical\"] +\n            sentiment_score * weights[\"sentiment\"] +\n            debate_score * weights[\"debate\"] +\n            (1 - risk_score) * weights[\"risk\"]  # 风险分数取反\n        )\n        \n        # 确定投资决策\n        decision = self.score_to_decision(composite_score)\n        confidence = self.calculate_confidence(analysis_results)\n        \n        return {\n            \"decision\": decision,\n            \"composite_score\": composite_score,\n            \"confidence\": confidence,\n            \"reasoning\": self.generate_reasoning(analysis_results, decision)\n        }\n    \n    def score_to_decision(self, score):\n        \"\"\"将分数转换为投资决策\"\"\"\n        if score >= self.decision_thresholds[\"strong_buy\"]:\n            return \"强烈买入\"\n        elif score >= self.decision_thresholds[\"buy\"]:\n            return \"买入\"\n        elif score >= self.decision_thresholds[\"hold\"]:\n            return \"持有\"\n        elif score >= self.decision_thresholds[\"sell\"]:\n            return \"卖出\"\n        else:\n            return \"强烈卖出\"\n    \n    def calculate_confidence(self, analysis_results):\n        \"\"\"计算决策置信度\"\"\"\n        # 基于各项分析的一致性计算置信度\n        scores = [\n            analysis_results.get(\"fundamental_score\", 0.5),\n            analysis_results.get(\"technical_score\", 0.5),\n            analysis_results.get(\"sentiment_score\", 0.5),\n            analysis_results.get(\"debate_score\", 0.5)\n        ]\n        \n        # 计算标准差，标准差越小置信度越高\n        import numpy as np\n        std_dev = np.std(scores)\n        confidence = max(0, 1 - std_dev * 2)  # 标准化到0-1范围\n        \n        return confidence\n```\n\n### 4. 执行计划制定\n\n```python\nclass ExecutionPlanning:\n    def __init__(self, config):\n        self.position_sizing_method = config.get(\"position_sizing\", \"kelly\")\n        self.max_position_size = config.get(\"max_position_size\", 0.05)\n        self.min_position_size = config.get(\"min_position_size\", 0.01)\n    \n    def create_execution_plan(self, decision_result, market_info):\n        \"\"\"创建执行计划\"\"\"\n        decision = decision_result[\"decision\"]\n        confidence = decision_result[\"confidence\"]\n        \n        if decision in [\"买入\", \"强烈买入\"]:\n            return self.create_buy_plan(decision_result, market_info)\n        elif decision in [\"卖出\", \"强烈卖出\"]:\n            return self.create_sell_plan(decision_result, market_info)\n        else:\n            return self.create_hold_plan(decision_result, market_info)\n    \n    def create_buy_plan(self, decision_result, market_info):\n        \"\"\"创建买入计划\"\"\"\n        confidence = decision_result[\"confidence\"]\n        current_price = market_info.get(\"current_price\", 0)\n        \n        # 计算仓位大小\n        position_size = self.calculate_position_size(\n            decision_result, market_info\n        )\n        \n        # 计算目标价格\n        target_price = self.calculate_target_price(\n            current_price, decision_result, \"buy\"\n        )\n        \n        # 计算止损价格\n        stop_loss = self.calculate_stop_loss(\n            current_price, decision_result, \"buy\"\n        )\n        \n        return {\n            \"action\": \"买入\",\n            \"position_size\": position_size,\n            \"entry_price\": current_price,\n            \"target_price\": target_price,\n            \"stop_loss\": stop_loss,\n            \"time_horizon\": self.estimate_time_horizon(decision_result),\n            \"execution_strategy\": self.select_execution_strategy(market_info)\n        }\n    \n    def calculate_position_size(self, decision_result, market_info):\n        \"\"\"计算仓位大小\"\"\"\n        confidence = decision_result[\"confidence\"]\n        volatility = market_info.get(\"volatility\", 0.2)\n        \n        if self.position_sizing_method == \"kelly\":\n            # 凯利公式\n            expected_return = decision_result.get(\"expected_return\", 0.1)\n            win_rate = confidence\n            avg_win = expected_return\n            avg_loss = volatility\n            \n            kelly_fraction = (win_rate * avg_win - (1 - win_rate) * avg_loss) / avg_win\n            position_size = max(self.min_position_size, \n                              min(self.max_position_size, kelly_fraction))\n        \n        elif self.position_sizing_method == \"fixed\":\n            # 固定仓位\n            base_size = 0.02\n            position_size = base_size * confidence\n        \n        else:\n            # 风险平价\n            target_risk = 0.02\n            position_size = target_risk / volatility\n        \n        return min(self.max_position_size, max(self.min_position_size, position_size))\n```\n\n## 决策质量评估\n\n### 决策评估框架\n\n```python\nclass DecisionQualityAssessment:\n    def __init__(self):\n        self.quality_metrics = {\n            \"information_completeness\": 0.2,    # 信息完整性\n            \"analysis_depth\": 0.2,              # 分析深度\n            \"risk_consideration\": 0.2,           # 风险考虑\n            \"logical_consistency\": 0.2,          # 逻辑一致性\n            \"execution_feasibility\": 0.2         # 执行可行性\n        }\n    \n    def assess_decision_quality(self, decision_process):\n        \"\"\"评估决策质量\"\"\"\n        quality_scores = {}\n        \n        for metric, weight in self.quality_metrics.items():\n            score = self.evaluate_metric(decision_process, metric)\n            quality_scores[metric] = score * weight\n        \n        overall_quality = sum(quality_scores.values())\n        \n        return {\n            \"overall_quality\": overall_quality,\n            \"metric_scores\": quality_scores,\n            \"quality_grade\": self.grade_quality(overall_quality),\n            \"improvement_suggestions\": self.suggest_improvements(quality_scores)\n        }\n    \n    def evaluate_metric(self, decision_process, metric):\n        \"\"\"评估特定质量指标\"\"\"\n        if metric == \"information_completeness\":\n            return self.assess_information_completeness(decision_process)\n        elif metric == \"analysis_depth\":\n            return self.assess_analysis_depth(decision_process)\n        elif metric == \"risk_consideration\":\n            return self.assess_risk_consideration(decision_process)\n        elif metric == \"logical_consistency\":\n            return self.assess_logical_consistency(decision_process)\n        elif metric == \"execution_feasibility\":\n            return self.assess_execution_feasibility(decision_process)\n        \n        return 0.5  # 默认分数\n    \n    def grade_quality(self, score):\n        \"\"\"质量等级评定\"\"\"\n        if score >= 0.9:\n            return \"优秀\"\n        elif score >= 0.8:\n            return \"良好\"\n        elif score >= 0.7:\n            return \"中等\"\n        elif score >= 0.6:\n            return \"及格\"\n        else:\n            return \"需要改进\"\n```\n\n## 配置选项\n\n### 管理层配置\n\n```python\nmanager_config = {\n    \"decision_model\": \"consensus\",          # 决策模型\n    \"confidence_threshold\": 0.7,           # 置信度阈值\n    \"risk_tolerance\": \"moderate\",          # 风险容忍度\n    \"position_sizing_method\": \"kelly\",     # 仓位计算方法\n    \"max_position_size\": 0.05,             # 最大仓位\n    \"rebalance_frequency\": \"weekly\",       # 再平衡频率\n    \"performance_review_period\": \"monthly\" # 绩效评估周期\n}\n```\n\n### 决策参数\n\n```python\ndecision_params = {\n    \"analysis_weights\": {                  # 分析权重\n        \"fundamental\": 0.3,\n        \"technical\": 0.2,\n        \"sentiment\": 0.15,\n        \"debate\": 0.25,\n        \"risk\": 0.1\n    },\n    \"decision_thresholds\": {               # 决策阈值\n        \"strong_buy\": 0.8,\n        \"buy\": 0.6,\n        \"hold\": 0.4,\n        \"sell\": 0.2,\n        \"strong_sell\": 0.0\n    },\n    \"time_horizons\": {                     # 投资期限\n        \"short_term\": \"1-3个月\",\n        \"medium_term\": \"3-12个月\",\n        \"long_term\": \"1年以上\"\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 管理层活动日志\nlogger.info(f\"👔 [管理层] 开始决策流程: {company_name}\")\nlogger.info(f\"📋 [信息收集] 收集到 {len(reports)} 份分析报告\")\nlogger.info(f\"⚖️ [辩论评估] 看涨分数: {bull_score:.2f}, 看跌分数: {bear_score:.2f}\")\nlogger.info(f\"🎯 [投资决策] 决策: {decision}, 置信度: {confidence:.2%}\")\nlogger.info(f\"📊 [执行计划] 仓位: {position_size:.2%}, 目标价: {target_price}\")\nlogger.info(f\"✅ [决策完成] 投资计划制定完成\")\n```\n\n### 绩效监控指标\n\n- 决策准确率\n- 风险调整收益\n- 最大回撤控制\n- 决策执行效率\n- 组合多样化程度\n\n## 扩展指南\n\n### 添加新的管理角色\n\n1. **创建新管理角色**\n```python\n# tradingagents/agents/managers/new_manager.py\nfrom tradingagents.utils.tool_logging import log_manager_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_manager(llm):\n    @log_manager_module(\"new_manager\")\n    def new_manager_node(state):\n        # 新管理角色逻辑\n        pass\n    \n    return new_manager_node\n```\n\n2. **集成到决策流程**\n```python\n# 在图配置中添加新管理角色\nfrom tradingagents.agents.managers.new_manager import create_new_manager\n\nnew_manager = create_new_manager(llm)\n```\n\n### 自定义决策模型\n\n1. **实现决策模型接口**\n```python\nclass DecisionModel:\n    def analyze_inputs(self, state):\n        pass\n    \n    def make_decision(self, analysis_results):\n        pass\n    \n    def create_execution_plan(self, decision):\n        pass\n```\n\n2. **注册决策模型**\n```python\ndecision_models = {\n    \"consensus\": ConsensusModel(),\n    \"majority_vote\": MajorityVoteModel(),\n    \"weighted_average\": WeightedAverageModel()\n}\n```\n\n## 最佳实践\n\n### 1. 全面信息整合\n- 确保所有必要信息都已收集\n- 验证信息质量和可靠性\n- 识别信息缺口和不确定性\n- 建立信息更新机制\n\n### 2. 客观决策制定\n- 基于数据和分析而非直觉\n- 考虑多种情景和可能性\n- 量化风险和收益预期\n- 保持决策过程透明\n\n### 3. 动态策略调整\n- 定期评估决策效果\n- 根据市场变化调整策略\n- 学习和改进决策模型\n- 保持策略灵活性\n\n### 4. 有效风险管理\n- 设定明确的风险限额\n- 建立多层风险控制机制\n- 定期进行压力测试\n- 制定应急预案\n\n## 故障排除\n\n### 常见问题\n\n1. **决策冲突**\n   - 检查各分析师输出一致性\n   - 调整决策权重配置\n   - 增加仲裁机制\n   - 提高信息质量\n\n2. **执行计划不可行**\n   - 验证市场流动性\n   - 调整仓位大小\n   - 修改执行时间框架\n   - 考虑市场冲击成本\n\n3. **决策质量下降**\n   - 评估输入信息质量\n   - 检查模型参数设置\n   - 更新决策算法\n   - 增加人工审核\n\n### 调试技巧\n\n1. **决策流程跟踪**\n```python\nlogger.debug(f\"决策输入: {decision_inputs}\")\nlogger.debug(f\"分析结果: {analysis_results}\")\nlogger.debug(f\"决策输出: {decision_output}\")\n```\n\n2. **质量评估**\n```python\nlogger.debug(f\"信息完整性: {information_completeness}\")\nlogger.debug(f\"分析深度: {analysis_depth}\")\nlogger.debug(f\"决策质量: {decision_quality}\")\n```\n\n管理层团队作为TradingAgents框架的决策中枢，通过科学的决策流程和全面的信息整合，确保投资决策的质量和有效性，为投资组合的成功管理提供强有力的领导和指导。","isInternal":false,"tokens":7062,"sizeBytes":24976},{"name":"researchers.md","path":"docs/agents/v0.1.13/researchers.md","rawUrl":"https://raw.githubusercontent.com/hsliuping/TradingAgents-CN/HEAD/docs/agents/v0.1.13/researchers.md","title":"Subagent: researchers","category":"subagent-persona","format":"markdown","content":"# 研究员团队\n\n## 概述\n\n研究员团队是 TradingAgents 框架的核心决策组件，负责基于分析师提供的数据进行深度研究和投资辩论。团队由看涨研究员和看跌研究员组成，通过对立观点的辩论来全面评估投资机会和风险，为最终的投资决策提供平衡的视角。\n\n## 研究员架构\n\n### 基础研究员设计\n\n所有研究员都基于统一的架构设计，使用相同的状态管理和日志系统：\n\n```python\n# 统一的研究员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_researcher_module(\"researcher_type\")\ndef researcher_node(state):\n    # 研究员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n研究员通过 `AgentState` 进行状态管理，包含辩论历史和分析报告：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    debate_state: str            # 辩论状态\n    messages: List              # 消息历史\n    memory: Any                 # 历史记忆\n```\n\n## 研究员团队成员\n\n### 1. 看涨研究员 (Bull Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bull_researcher.py`\n\n**核心职责**:\n- 寻找和强调投资机会的积极因素\n- 提出看涨观点和支持论据\n- 反驳看跌观点中的薄弱环节\n- 推动积极的投资决策\n\n**核心实现**:\n```python\ndef create_bull_researcher(llm, memory=None):\n    @log_researcher_module(\"bull\")\n    def bull_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看涨论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看涨观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **积极解读数据**: 从乐观角度解释市场数据和财务指标\n- **机会识别**: 发现被市场低估的价值和增长潜力\n- **风险最小化**: 论证风险的可控性和临时性\n- **催化剂分析**: 识别可能推动股价上涨的因素\n\n### 2. 看跌研究员 (Bear Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bear_researcher.py`\n\n**核心职责**:\n- 识别和强调投资风险和负面因素\n- 提出看跌观点和警示论据\n- 质疑看涨观点中的乐观假设\n- 推动谨慎的投资决策\n\n**核心实现**:\n```python\ndef create_bear_researcher(llm, memory=None):\n    @log_researcher_module(\"bear\")\n    def bear_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看跌论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看跌观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **风险放大**: 深入分析潜在风险和负面因素\n- **估值质疑**: 质疑当前估值的合理性\n- **趋势反转**: 识别可能的负面趋势转折点\n- **竞争威胁**: 分析行业竞争和市场变化风险\n\n## 辩论机制\n\n### 辩论流程\n\n```mermaid\ngraph TB\n    A[分析师报告] --> B[看涨研究员分析]\n    A --> C[看跌研究员分析]\n    \n    B --> D[看涨观点]\n    C --> E[看跌观点]\n    \n    D --> F[辩论交锋]\n    E --> F\n    \n    F --> G[观点完善]\n    G --> H[最终辩论结果]\n    \n    H --> I[传递给管理层]\n```\n\n### 辩论状态管理\n\n```python\n# 辩论状态类型\nDEBATE_STATES = {\n    \"initial\": \"初始状态\",\n    \"bull_turn\": \"看涨方发言\",\n    \"bear_turn\": \"看跌方发言\",\n    \"rebuttal\": \"反驳阶段\",\n    \"conclusion\": \"总结阶段\"\n}\n\n# 状态转换逻辑\ndef update_debate_state(current_state, participant):\n    if current_state == \"initial\":\n        return \"bull_turn\" if participant == \"bull\" else \"bear_turn\"\n    elif current_state in [\"bull_turn\", \"bear_turn\"]:\n        return \"rebuttal\"\n    elif current_state == \"rebuttal\":\n        return \"conclusion\"\n    return current_state\n```\n\n### 记忆系统集成\n\n研究员支持历史记忆功能，能够：\n\n1. **历史辩论回顾**: 参考之前的辩论结果和观点\n2. **学习改进**: 从历史决策的成败中学习\n3. **一致性维护**: 保持观点的逻辑一致性\n4. **经验积累**: 积累特定股票或行业的分析经验\n\n```python\n# 记忆检索示例\nif memory is not None:\n    historical_debates = memory.get_relevant_debates(company_name)\n    previous_analysis = memory.get_analysis_history(company_name)\nelse:\n    logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n## 股票类型支持\n\n### 多市场分析能力\n\n研究员团队支持全球主要股票市场的分析：\n\n```python\n# 市场信息获取\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 根据市场类型调整分析策略\nif market_info.get(\"is_china\"):\n    # A股特有的分析逻辑\n    analysis_context = \"中国A股市场\"\n    currency = \"人民币\"\nelif market_info.get(\"is_hk\"):\n    # 港股特有的分析逻辑\n    analysis_context = \"香港股市\"\n    currency = \"港币\"\nelif market_info.get(\"is_us\"):\n    # 美股特有的分析逻辑\n    analysis_context = \"美国股市\"\n    currency = \"美元\"\n```\n\n### 本土化分析\n\n1. **A股市场**:\n   - 政策影响分析\n   - 监管环境评估\n   - 国内经济周期考量\n   - 投资者结构特点\n\n2. **港股市场**:\n   - 中港两地联动\n   - 汇率风险评估\n   - 国际资本流动\n   - 估值差异分析\n\n3. **美股市场**:\n   - 美联储政策影响\n   - 全球经济环境\n   - 行业竞争格局\n   - 技术创新趋势\n\n## 分析维度\n\n### 看涨研究员关注点\n\n1. **增长潜力**:\n   - 收入增长趋势\n   - 市场份额扩张\n   - 新产品/服务机会\n   - 国际化进展\n\n2. **估值优势**:\n   - 相对估值吸引力\n   - 历史估值比较\n   - 同行业估值对比\n   - 资产价值重估\n\n3. **催化因素**:\n   - 政策利好\n   - 行业景气度提升\n   - 技术突破\n   - 管理层变化\n\n4. **财务健康**:\n   - 现金流改善\n   - 盈利能力提升\n   - 债务结构优化\n   - 分红政策\n\n### 看跌研究员关注点\n\n1. **风险因素**:\n   - 行业衰退风险\n   - 竞争加剧威胁\n   - 监管政策风险\n   - 技术替代风险\n\n2. **估值风险**:\n   - 估值过高警示\n   - 泡沫风险评估\n   - 盈利预期过于乐观\n   - 市场情绪过热\n\n3. **财务问题**:\n   - 现金流恶化\n   - 债务负担过重\n   - 盈利质量下降\n   - 会计问题质疑\n\n4. **宏观环境**:\n   - 经济周期下行\n   - 利率上升影响\n   - 汇率波动风险\n   - 地缘政治风险\n\n## 辩论质量评估\n\n### 论证强度指标\n\n1. **数据支撑度**:\n   - 引用数据的准确性\n   - 数据来源的可靠性\n   - 数据分析的深度\n   - 数据解读的合理性\n\n2. **逻辑一致性**:\n   - 论证链条的完整性\n   - 推理过程的严密性\n   - 结论与前提的一致性\n   - 反驳的有效性\n\n3. **风险识别**:\n   - 风险因素的全面性\n   - 风险评估的准确性\n   - 风险应对的可行性\n   - 风险权衡的合理性\n\n### 辩论输出质量\n\n```python\n# 辩论结果结构\nclass DebateResult:\n    bull_arguments: List[str]     # 看涨论点\n    bear_arguments: List[str]     # 看跌论点\n    key_disagreements: List[str]  # 主要分歧\n    consensus_points: List[str]   # 共识观点\n    confidence_level: float       # 置信度\n    recommendation_strength: str  # 建议强度\n```\n\n## 配置选项\n\n### 研究员配置\n\n```python\nresearcher_config = {\n    \"enable_memory\": True,        # 是否启用记忆功能\n    \"debate_rounds\": 3,           # 辩论轮数\n    \"argument_depth\": \"deep\",     # 论证深度\n    \"risk_tolerance\": \"moderate\", # 风险容忍度\n    \"analysis_style\": \"balanced\" # 分析风格\n}\n```\n\n### 辩论参数\n\n```python\ndebate_params = {\n    \"max_rounds\": 5,              # 最大辩论轮数\n    \"time_limit\": 300,            # 单轮时间限制(秒)\n    \"evidence_weight\": 0.7,       # 证据权重\n    \"logic_weight\": 0.3,          # 逻辑权重\n    \"consensus_threshold\": 0.8    # 共识阈值\n}\n```\n\n## 性能优化\n\n### 并行处理\n\n```python\n# 并行执行看涨和看跌分析\nimport asyncio\n\nasync def parallel_research(state):\n    bull_task = asyncio.create_task(bull_researcher(state))\n    bear_task = asyncio.create_task(bear_researcher(state))\n    \n    bull_result, bear_result = await asyncio.gather(bull_task, bear_task)\n    return bull_result, bear_result\n```\n\n### 缓存机制\n\n```python\n# 分析结果缓存\nfrom functools import lru_cache\n\n@lru_cache(maxsize=100)\ndef cached_analysis(ticker, date, report_hash):\n    # 缓存分析结果\n    pass\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 研究员活动日志\nlogger.info(f\"🐂 [看涨研究员] 开始分析股票: {company_name}\")\nlogger.info(f\"🐻 [看跌研究员] 开始分析股票: {company_name}\")\nlogger.debug(f\"📊 [辩论状态] 当前状态: {debate_state}\")\nlogger.warning(f\"⚠️ [记忆系统] memory为None，跳过历史记忆检索\")\n```\n\n### 性能指标\n\n- 辩论完成时间\n- 论证质量评分\n- 预测准确率\n- 风险识别率\n- 共识达成率\n\n## 扩展指南\n\n### 添加新的研究员类型\n\n1. **创建研究员文件**\n```python\n# tradingagents/agents/researchers/neutral_researcher.py\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\ndef create_neutral_researcher(llm, memory=None):\n    @log_researcher_module(\"neutral\")\n    def neutral_node(state):\n        # 中性研究员逻辑\n        pass\n    return neutral_node\n```\n\n2. **集成到辩论流程**\n```python\n# 在trading_graph.py中添加\nresearchers = {\n    \"bull\": create_bull_researcher(llm, memory),\n    \"bear\": create_bear_researcher(llm, memory),\n    \"neutral\": create_neutral_researcher(llm, memory)\n}\n```\n\n### 自定义辩论策略\n\n1. **实现策略接口**\n```python\nclass DebateStrategy:\n    def generate_arguments(self, reports, market_info):\n        pass\n    \n    def evaluate_counterarguments(self, opponent_args):\n        pass\n    \n    def synthesize_conclusion(self, all_arguments):\n        pass\n```\n\n2. **注册策略**\n```python\nstrategy_registry = {\n    \"aggressive_bull\": AggressiveBullStrategy(),\n    \"conservative_bear\": ConservativeBearStrategy(),\n    \"data_driven\": DataDrivenStrategy()\n}\n```\n\n## 最佳实践\n\n### 1. 平衡性维护\n- 确保看涨和看跌观点的平衡\n- 避免极端偏见\n- 基于数据而非情绪\n- 保持客观分析态度\n\n### 2. 质量控制\n- 验证数据来源\n- 检查逻辑一致性\n- 评估论证强度\n- 识别认知偏差\n\n### 3. 效率优化\n- 并行执行分析\n- 缓存重复计算\n- 优化内存使用\n- 减少冗余操作\n\n### 4. 可解释性\n- 提供清晰的推理路径\n- 标注关键假设\n- 量化不确定性\n- 记录决策依据\n\n## 故障排除\n\n### 常见问题\n\n1. **辩论陷入僵局**\n   - 引入新的分析维度\n   - 调整权重参数\n   - 增加外部信息\n   - 设置超时机制\n\n2. **观点过于极端**\n   - 调整风险容忍度\n   - 增加平衡机制\n   - 引入中性观点\n   - 强化数据验证\n\n3. **性能问题**\n   - 启用并行处理\n   - 优化缓存策略\n   - 减少分析深度\n   - 限制辩论轮数\n\n### 调试技巧\n\n1. **辩论过程追踪**\n```python\nlogger.debug(f\"辩论轮次: {round_number}\")\nlogger.debug(f\"当前发言方: {current_speaker}\")\nlogger.debug(f\"论点数量: {len(arguments)}\")\n```\n\n2. **状态检查**\n```python\nlogger.debug(f\"状态完整性: {validate_state(state)}\")\nlogger.debug(f\"报告可用性: {check_reports_availability(state)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行分析\nend_time = time.time()\nlogger.debug(f\"分析耗时: {end_time - start_time:.2f}秒\")\n```\n\n研究员团队通过结构化的辩论机制，确保投资决策的全面性和客观性，是TradingAgents框架中连接数据分析和最终决策的关键环节。","isInternal":false,"tokens":4785,"sizeBytes":13380},{"name":"risk-management.md","path":"docs/agents/v0.1.13/risk-management.md","rawUrl":"https://raw.githubusercontent.com/hsliuping/TradingAgents-CN/HEAD/docs/agents/v0.1.13/risk-management.md","title":"Subagent: risk-management","category":"subagent-persona","format":"markdown","content":"# 风险管理团队\n\n## 概述\n\n风险管理团队是 TradingAgents 框架的风险控制核心，负责从多个角度评估和质疑投资决策，确保投资组合的风险可控性。团队由不同风险偏好的分析师组成，通过多角度的风险评估和反驳机制，为投资决策提供全面的风险视角和保护措施。\n\n## 风险管理架构\n\n### 基础设计\n\n风险管理团队基于统一的架构设计，专注于风险识别、评估和控制：\n\n```python\n# 统一的风险管理模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_risk_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_risk_module(\"risk_type\")\ndef risk_node(state):\n    # 风险管理逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n风险管理团队通过 `AgentState` 获取完整的投资决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    trader_recommendation: str   # 交易员建议\n    messages: List              # 消息历史\n```\n\n## 风险管理团队成员\n\n### 1. 保守风险分析师 (Conservative Risk Analyst)\n\n**文件位置**: `tradingagents/agents/risk_mgmt/conservative_debator.py`\n\n**核心职责**:\n- 作为安全/保守风险分析师\n- 积极反驳激进和中性分析师的论点\n- 指出潜在风险并提出更谨慎的替代方案\n- 保护资产、最小化波动性并确保稳定增长\n\n**核心实现**:\n```python\ndef create_safe_debator(llm):\n    @log_risk_module(\"conservative\")\n    def safe_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trader_recommendation = state.get(\"trader_recommendation\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建保守风险分析提示\n        safe_prompt = f\"\"\"\n        作为安全/保守风险分析师，请对以下投资决策进行风险评估：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        交易员建议: {trader_recommendation}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请从保守角度分析：\n        1. 识别所有潜在风险因素\n        2. 质疑乐观假设的合理性\n        3. 提出更谨慎的替代方案\n        4. 建议风险控制措施\n        5. 评估最坏情况下的损失\n        \"\"\"\n        \n        # 调用LLM生成风险分析\n        response = llm.invoke(safe_prompt)\n        \n        return {\"conservative_risk_analysis\": response.content}\n```\n\n**分析特点**:\n- **风险优先**: 优先识别和强调各类风险因素\n- **保守估值**: 倾向于更保守的估值和预期\n- **防御策略**: 重点关注资本保护和风险控制\n- **质疑乐观**: 对乐观预期和假设保持质疑态度\n\n## 风险评估维度\n\n### 1. 市场风险\n\n**系统性风险**:\n- 宏观经济风险\n- 政策监管风险\n- 利率汇率风险\n- 地缘政治风险\n\n**非系统性风险**:\n- 行业周期风险\n- 公司特定风险\n- 管理层风险\n- 竞争环境风险\n\n### 2. 流动性风险\n\n**市场流动性**:\n- 交易量分析\n- 买卖价差评估\n- 市场深度分析\n- 冲击成本评估\n\n**资金流动性**:\n- 现金流分析\n- 融资能力评估\n- 债务到期分析\n- 营运资金管理\n\n### 3. 信用风险\n\n**财务风险**:\n- 债务负担评估\n- 偿债能力分析\n- 现金流稳定性\n- 盈利质量评估\n\n**运营风险**:\n- 业务模式风险\n- 管理层风险\n- 内控制度风险\n- 合规风险\n\n### 4. 估值风险\n\n**估值方法风险**:\n- 估值模型选择\n- 参数敏感性分析\n- 假设条件评估\n- 比较基准选择\n\n**市场估值风险**:\n- 市场情绪影响\n- 估值泡沫风险\n- 价格发现效率\n- 投资者结构影响\n\n## 配置选项\n\n### 风险管理配置\n\n```python\nrisk_config = {\n    \"risk_tolerance\": \"moderate\",      # 风险容忍度\n    \"max_portfolio_var\": 0.05,         # 最大组合VaR\n    \"max_single_position\": 0.05,       # 最大单一仓位\n    \"max_sector_exposure\": 0.20,       # 最大行业敞口\n    \"correlation_threshold\": 0.70,     # 相关性阈值\n    \"rebalance_trigger\": 0.05,         # 再平衡触发阈值\n    \"stress_test_frequency\": \"weekly\"  # 压力测试频率\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 风险管理活动日志\nlogger.info(f\"🛡️ [风险管理] 开始风险评估: {company_name}\")\nlogger.info(f\"📊 [风险分析] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"⚠️ [风险因素] 识别到 {len(risk_factors)} 个风险因素\")\nlogger.warning(f\"🚨 [风险预警] 发现高风险因素: {high_risk_factors}\")\nlogger.info(f\"✅ [风险评估] 风险分析完成，风险等级: {risk_level}\")\n```\n\n### 风险监控指标\n\n- 风险评估准确性\n- 风险预警及时性\n- 风险控制有效性\n- 损失预测精度\n- 风险调整收益\n\n## 扩展指南\n\n### 添加新的风险分析师\n\n1. **创建新的风险分析师文件**\n```python\n# tradingagents/agents/risk_mgmt/new_risk_analyst.py\nfrom tradingagents.utils.tool_logging import log_risk_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_risk_analyst(llm):\n    @log_risk_module(\"new_risk_type\")\n    def new_risk_node(state):\n        # 新的风险分析逻辑\n        pass\n    \n    return new_risk_node\n```\n\n2. **集成到风险管理系统**\n```python\n# 在相应的图配置中添加新的风险分析师\nfrom tradingagents.agents.risk_mgmt.new_risk_analyst import create_new_risk_analyst\n\nnew_risk_analyst = create_new_risk_analyst(llm)\n```\n\n## 最佳实践\n\n### 1. 全面风险识别\n- 系统性识别各类风险\n- 定期更新风险清单\n- 关注新兴风险因素\n- 建立风险分类体系\n\n### 2. 量化风险管理\n- 使用多种风险指标\n- 定期校准风险模型\n- 进行回测验证\n- 持续优化参数\n\n### 3. 动态风险控制\n- 实时监控风险水平\n- 及时调整风险敞口\n- 灵活应对市场变化\n- 保持风险预算平衡\n\n### 4. 透明风险沟通\n- 清晰传达风险信息\n- 定期发布风险报告\n- 及时发出风险预警\n- 提供风险教育培训\n\n## 故障排除\n\n### 常见问题\n\n1. **风险分析失败**\n   - 检查输入数据完整性\n   - 验证LLM连接状态\n   - 确认股票市场信息获取\n   - 检查日志记录\n\n2. **风险评估不准确**\n   - 更新风险模型参数\n   - 增加历史数据样本\n   - 调整风险因子权重\n   - 优化评估算法\n\n3. **风险控制过度保守**\n   - 调整风险容忍度参数\n   - 平衡风险与收益目标\n   - 优化仓位管理策略\n   - 考虑市场环境变化\n\n### 调试技巧\n\n1. **风险分析调试**\n```python\nlogger.debug(f\"风险分析输入: 公司={company_name}, 类型={stock_type}\")\nlogger.debug(f\"风险因素识别: {risk_factors}\")\nlogger.debug(f\"风险评估结果: {risk_assessment}\")\n```\n\n2. **状态验证**\n```python\nlogger.debug(f\"状态检查: 基本面报告长度={len(fundamentals_report)}\")\nlogger.debug(f\"状态检查: 市场报告长度={len(market_report)}\")\nlogger.debug(f\"状态检查: 交易员建议={trader_recommendation[:100]}...\")\n```\n\n风险管理团队作为TradingAgents框架的安全守护者，通过全面的风险识别、评估和控制，确保投资决策在可控风险范围内进行，为投资组合的长期稳健增长提供重要保障。","isInternal":false,"tokens":3261,"sizeBytes":8703},{"name":"trader.md","path":"docs/agents/v0.1.13/trader.md","rawUrl":"https://raw.githubusercontent.com/hsliuping/TradingAgents-CN/HEAD/docs/agents/v0.1.13/trader.md","title":"Subagent: trader","category":"subagent-persona","format":"markdown","content":"# 交易员\n\n## 概述\n\n交易员是 TradingAgents 框架的执行层核心，负责基于研究员团队的辩论结果和管理层的投资计划，生成具体的投资建议和交易决策。交易员将所有前期分析和决策转化为可执行的投资行动，包括具体的目标价位、置信度评估和风险评分。\n\n## 交易员架构\n\n### 基础设计\n\n交易员基于统一的架构设计，集成了多维度分析能力和决策执行功能：\n\n```python\n# 统一的交易员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_trader_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_trader_module(\"trader\")\ndef trader_node(state):\n    # 交易员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n交易员通过 `AgentState` 获取完整的分析链条信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    investment_plan: str         # 投资计划\n    messages: List              # 消息历史\n```\n\n## 交易员实现\n\n### 核心功能\n\n**文件位置**: `tradingagents/agents/trader/trader.py`\n\n**核心职责**:\n- 综合分析所有输入信息\n- 生成具体的投资建议\n- 提供目标价位和置信度\n- 评估投资风险等级\n- 制定执行策略\n\n### 核心实现逻辑\n\n```python\ndef create_trader(llm):\n    @log_trader_module(\"trader\")\n    def trader_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        investment_plan = state.get(\"investment_plan\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建交易决策提示\n        trader_prompt = f\"\"\"\n        作为专业交易员，请基于以下信息生成投资建议：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        投资计划: {investment_plan}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请提供：\n        1. 明确的投资建议（买入/卖出/持有）\n        2. 具体目标价位（以{currency_unit}计价）\n        3. 置信度评估（0-100%）\n        4. 风险评分（1-10分）\n        5. 详细推理过程\n        \"\"\"\n        \n        # 调用LLM生成交易决策\n        response = llm.invoke(trader_prompt)\n        \n        return {\"trader_recommendation\": response.content}\n```\n\n## 决策输入分析\n\n### 多维度信息整合\n\n交易员需要综合处理来自多个源头的信息：\n\n1. **投资计划** (`investment_plan`)\n   - 来源：研究管理员的综合决策\n   - 内容：基于辩论结果的投资建议\n   - 作用：提供决策框架和方向指导\n\n2. **市场研究报告** (`market_report`)\n   - 来源：市场分析师\n   - 内容：技术指标、价格趋势、交易信号\n   - 作用：提供技术面分析支持\n\n3. **情绪报告** (`sentiment_report`)\n   - 来源：社交媒体分析师\n   - 内容：投资者情绪、舆论趋势\n   - 作用：评估市场情绪影响\n\n4. **新闻报告** (`news_report`)\n   - 来源：新闻分析师\n   - 内容：重要新闻事件、政策影响\n   - 作用：识别催化因素和风险事件\n\n5. **基本面报告** (`fundamentals_report`)\n   - 来源：基本面分析师\n   - 内容：财务数据、估值分析\n   - 作用：提供价值投资依据\n\n### 信息权重分配\n\n```python\n# 信息权重配置示例\ninfo_weights = {\n    \"investment_plan\": 0.35,      # 投资计划权重最高\n    \"fundamentals_report\": 0.25,  # 基本面分析\n    \"market_report\": 0.20,        # 技术分析\n    \"news_report\": 0.15,          # 新闻影响\n    \"sentiment_report\": 0.05       # 情绪分析\n}\n```\n\n## 股票类型支持\n\n### 多市场交易能力\n\n交易员支持全球主要股票市场的交易决策：\n\n```python\n# 市场信息获取和处理\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(company_name)\n\n# 根据市场类型调整交易策略\nif market_info.get(\"is_china\"):\n    # A股交易特点\n    trading_hours = \"09:30-15:00 (北京时间)\"\n    price_limit = \"±10% (ST股票±5%)\"\n    settlement = \"T+1\"\n    currency = \"人民币(CNY)\"\n    \nelif market_info.get(\"is_hk\"):\n    # 港股交易特点\n    trading_hours = \"09:30-16:00 (香港时间)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"港币(HKD)\"\n    \nelif market_info.get(\"is_us\"):\n    # 美股交易特点\n    trading_hours = \"09:30-16:00 (EST)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"美元(USD)\"\n```\n\n### 本土化交易策略\n\n1. **A股市场特色**:\n   - 涨跌停板制度考虑\n   - T+1交易制度影响\n   - 政策敏感性分析\n   - 散户投资者行为特点\n\n2. **港股市场特色**:\n   - 中港资金流动\n   - 汇率风险管理\n   - 国际投资者参与\n   - 估值差异套利\n\n3. **美股市场特色**:\n   - 盘前盘后交易\n   - 期权策略考虑\n   - 机构投资者主导\n   - 全球经济影响\n\n## 决策输出规范\n\n### 标准输出格式\n\n交易员必须提供结构化的投资建议：\n\n```python\nclass TradingRecommendation:\n    action: str              # 投资行动 (买入/卖出/持有)\n    target_price: float      # 目标价位\n    confidence: float        # 置信度 (0-100%)\n    risk_score: int          # 风险评分 (1-10)\n    reasoning: str           # 详细推理\n    time_horizon: str        # 投资时间框架\n    stop_loss: float         # 止损价位\n    take_profit: float       # 止盈价位\n```\n\n### 强制要求\n\n根据代码实现，交易员必须提供：\n\n1. **具体目标价位**\n   - 必须以相应货币单位计价\n   - 基于综合分析的合理估值\n   - 考虑市场流动性和交易成本\n\n2. **置信度评估**\n   - 0-100%的数值范围\n   - 反映决策的确定性程度\n   - 基于信息质量和分析深度\n\n3. **风险评分**\n   - 1-10分的评分体系\n   - 1分为最低风险，10分为最高风险\n   - 综合考虑各类风险因素\n\n4. **详细推理**\n   - 完整的决策逻辑链条\n   - 关键假设和依据说明\n   - 风险因素识别和应对\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```mermaid\ngraph LR\n    A[投资计划] --> E[信息整合]\n    B[基本面报告] --> E\n    C[市场报告] --> E\n    D[新闻&情绪报告] --> E\n    E --> F[综合分析]\n```\n\n### 2. 分析处理阶段\n\n```mermaid\ngraph TB\n    A[综合信息] --> B[市场类型识别]\n    B --> C[交易规则适配]\n    C --> D[风险评估]\n    D --> E[价格目标计算]\n    E --> F[置信度评估]\n```\n\n### 3. 决策生成阶段\n\n```mermaid\ngraph LR\n    A[分析结果] --> B[投资建议]\n    B --> C[目标价位]\n    B --> D[风险评分]\n    B --> E[执行策略]\n    C --> F[最终决策]\n    D --> F\n    E --> F\n```\n\n## 风险管理\n\n### 风险评估维度\n\n1. **市场风险**:\n   - 系统性风险评估\n   - 行业周期风险\n   - 流动性风险\n   - 波动率风险\n\n2. **信用风险**:\n   - 公司财务风险\n   - 债务违约风险\n   - 管理层风险\n   - 治理结构风险\n\n3. **操作风险**:\n   - 交易执行风险\n   - 技术系统风险\n   - 人为操作风险\n   - 合规风险\n\n4. **特殊风险**:\n   - 政策监管风险\n   - 汇率风险\n   - 地缘政治风险\n   - 黑天鹅事件\n\n### 风险控制措施\n\n```python\n# 风险控制参数\nrisk_controls = {\n    \"max_position_size\": 0.05,    # 最大仓位比例\n    \"stop_loss_ratio\": 0.08,      # 止损比例\n    \"take_profit_ratio\": 0.15,    # 止盈比例\n    \"max_drawdown\": 0.10,         # 最大回撤\n    \"correlation_limit\": 0.70     # 相关性限制\n}\n```\n\n## 性能评估\n\n### 关键指标\n\n1. **准确性指标**:\n   - 预测准确率\n   - 目标价位达成率\n   - 方向判断正确率\n   - 时间框架准确性\n\n2. **收益指标**:\n   - 绝对收益率\n   - 相对基准收益\n   - 风险调整收益\n   - 夏普比率\n\n3. **风险指标**:\n   - 最大回撤\n   - 波动率\n   - VaR值\n   - 风险评分准确性\n\n### 性能监控\n\n```python\n# 交易性能追踪\nclass TradingPerformance:\n    def __init__(self):\n        self.trades = []\n        self.accuracy_rate = 0.0\n        self.total_return = 0.0\n        self.max_drawdown = 0.0\n        self.sharpe_ratio = 0.0\n    \n    def update_performance(self, trade_result):\n        # 更新性能指标\n        pass\n    \n    def generate_report(self):\n        # 生成性能报告\n        pass\n```\n\n## 配置选项\n\n### 交易员配置\n\n```python\ntrader_config = {\n    \"risk_tolerance\": \"moderate\",     # 风险容忍度\n    \"investment_style\": \"balanced\",   # 投资风格\n    \"time_horizon\": \"medium\",         # 投资时间框架\n    \"position_sizing\": \"kelly\",       # 仓位管理方法\n    \"rebalance_frequency\": \"weekly\"   # 再平衡频率\n}\n```\n\n### 市场配置\n\n```python\nmarket_config = {\n    \"trading_hours\": {\n        \"china\": \"09:30-15:00\",\n        \"hk\": \"09:30-16:00\",\n        \"us\": \"09:30-16:00\"\n    },\n    \"settlement_days\": {\n        \"china\": 1,\n        \"hk\": 2,\n        \"us\": 2\n    },\n    \"commission_rates\": {\n        \"china\": 0.0003,\n        \"hk\": 0.0025,\n        \"us\": 0.0005\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 交易员活动日志\nlogger.info(f\"💼 [交易员] 开始分析股票: {company_name}\")\nlogger.info(f\"📈 [交易员] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"📊 [交易员] 投资计划: {investment_plan[:100]}...\")\nlogger.info(f\"🎯 [交易员] 生成投资建议完成\")\n```\n\n### 决策追踪\n\n```python\n# 决策过程记录\ndecision_log = {\n    \"timestamp\": datetime.now(),\n    \"ticker\": company_name,\n    \"market_type\": stock_type,\n    \"input_reports\": {\n        \"fundamentals\": len(fundamentals_report),\n        \"market\": len(market_report),\n        \"news\": len(news_report),\n        \"sentiment\": len(sentiment_report)\n    },\n    \"decision\": {\n        \"action\": action,\n        \"target_price\": target_price,\n        \"confidence\": confidence,\n        \"risk_score\": risk_score\n    }\n}\n```\n\n## 扩展指南\n\n### 添加新的交易策略\n\n1. **创建策略类**\n```python\nclass CustomTradingStrategy:\n    def __init__(self, config):\n        self.config = config\n    \n    def generate_recommendation(self, state):\n        # 自定义交易逻辑\n        pass\n    \n    def calculate_position_size(self, confidence, risk_score):\n        # 仓位计算逻辑\n        pass\n```\n\n2. **集成到交易员**\n```python\n# 在trader.py中添加策略选择\nstrategy_map = {\n    \"conservative\": ConservativeStrategy(),\n    \"aggressive\": AggressiveStrategy(),\n    \"custom\": CustomTradingStrategy()\n}\n\nstrategy = strategy_map.get(config.get(\"strategy\", \"balanced\"))\n```\n\n### 添加新的风险模型\n\n1. **实现风险模型接口**\n```python\nclass RiskModel:\n    def calculate_risk_score(self, market_data, fundamentals):\n        pass\n    \n    def estimate_var(self, position, confidence_level):\n        pass\n    \n    def suggest_position_size(self, risk_budget, expected_return):\n        pass\n```\n\n2. **注册风险模型**\n```python\nrisk_models = {\n    \"var\": VaRRiskModel(),\n    \"monte_carlo\": MonteCarloRiskModel(),\n    \"factor\": FactorRiskModel()\n}\n```\n\n## 最佳实践\n\n### 1. 决策一致性\n- 保持决策逻辑的一致性\n- 避免情绪化决策\n- 基于数据和分析\n- 记录决策依据\n\n### 2. 风险控制\n- 严格执行止损策略\n- 分散投资风险\n- 定期评估风险敞口\n- 及时调整仓位\n\n### 3. 性能优化\n- 持续监控交易表现\n- 定期回测策略效果\n- 优化决策模型\n- 学习市场变化\n\n### 4. 合规管理\n- 遵守交易规则\n- 满足监管要求\n- 保持透明度\n- 记录完整审计轨迹\n\n## 故障排除\n\n### 常见问题\n\n1. **决策质量问题**\n   - 检查输入数据质量\n   - 验证分析逻辑\n   - 调整权重配置\n   - 增加验证步骤\n\n2. **风险控制失效**\n   - 检查风险参数设置\n   - 验证止损机制\n   - 评估相关性计算\n   - 更新风险模型\n\n3. **性能问题**\n   - 优化决策算法\n   - 减少计算复杂度\n   - 启用结果缓存\n   - 并行处理分析\n\n### 调试技巧\n\n1. **决策过程追踪**\n```python\nlogger.debug(f\"输入信息完整性: {check_input_completeness(state)}\")\nlogger.debug(f\"市场信息: {market_info}\")\nlogger.debug(f\"决策权重: {info_weights}\")\n```\n\n2. **结果验证**\n```python\nlogger.debug(f\"目标价位合理性: {validate_target_price(target_price)}\")\nlogger.debug(f\"风险评分一致性: {validate_risk_score(risk_score)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行交易决策\nend_time = time.time()\nlogger.debug(f\"决策耗时: {end_time - start_time:.2f}秒\")\n```\n\n交易员作为TradingAgents框架的最终执行层，承担着将所有分析和研究转化为具体投资行动的重要职责，其决策质量直接影响整个系统的投资表现。","isInternal":false,"tokens":5004,"sizeBytes":14151}],"systemPromptSnippet":"<yakaai_skills repo=\"hsliuping/TradingAgents-CN\">\n<!-- File: docs/agents/v0.1.13/analysts.md (Tokens: ~3151 | Category: subagent-persona) -->\n# 分析师团队\n\n## 概述\n\n分析师团队是 TradingAgents 框架的核心分析组件，负责从不同维度对股票进行专业分析。团队由四类专业分析师组成，每个分析师都专注于特定的分析领域，通过协作为投资决策提供全面的数据支持。\n\n## 分析师架构\n\n### 基础分析师设计\n\n所有分析师都基于统一的架构设计，使用相同的工具接口和日志系统：\n\n```python\n# 统一的分析师模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_analyst_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_analyst_module(\"analyst_type\")\ndef analyst_node(state):\n    # 分析师逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n分析师通过 `AgentState` 进行状态管理：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    messages: List              # 消息历史\n```\n\n## 分析师团队成员\n\n### 1. 基本面分析师 (Fundamentals Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/fundamentals_analyst.py`\n\n**核心职责**:\n- 分析公司财务数据和基本面指标\n- 评估公司估值和财务健康度\n- 提供基于财务数据的投资建议\n\n**技术特性**:\n- 使用统一工具架构自动识别股票类型\n- 支持A股、港股、美股的基本面分析\n- 智能选择合适的数据源（在线/离线模式）\n\n**核心实现**:\n```python\ndef create_fundamentals_analyst(llm, toolkit):\n    @log_analyst_module(\"fundamentals\")\n    def fundamentals_analyst_node(state):\n        ticker = state[\"company_of_interest\"]\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(ticker)\n        \n        # 获取公司名称\n        company_name = _get_company_name_for_fundamentals(ticker, market_info)\n        \n        # 选择合适的工具\n        if toolkit.config[\"online_tools\"]:\n            tools = [toolkit.get_stock_fundamentals_unified]\n        else:\n            # 离线模式工具选择\n            tools = [...]\n```\n\n**支持的数据源**:\n- **A股**: 统一接口获取中国股票信息\n- **港股**: 改进的港股工具\n- **美股**: FinnHub、SimFin等数据源\n\n### 2. 市场分析师 (Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/market_analyst.py`\n\n**核心职责**:\n- 技术指标分析（RSI、MACD、布林带等）\n- 价格趋势和图表模式识别\n- 支撑阻力位分析\n- 交易信号生成\n\n**分析维度**:\n- 短期技术指标\n- 中长期趋势分析\n- 成交量分析\n- 价格动量评估\n\n### 3. 新闻分析师 (News Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/news_analyst.py`\n\n**核心职责**:\n- 新闻事件影响分析\n- 宏观经济数据解读\n- 政策影响评估\n- 行业动态分析\n\n**数据来源**:\n- Google News API\n- FinnHub新闻数据\n- 实时新闻流\n- 经济数据发布\n\n**特殊功能**:\n- 新闻过滤和质量评估\n- 情感分析和影响评级\n- 时效性评估\n\n### 4. 社交媒体分析师 (Social Media Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/social_media_analyst.py`\n\n**核心职责**:\n- 社交媒体情绪分析\n- 投资者情绪监测\n- 舆论趋势识别\n- 热点话题追踪\n\n**数据来源**:\n- Reddit讨论数据\n- Twitter情感数据\n- 金融论坛讨论\n- 社交媒体热度指标\n\n### 5. 中国市场分析师 (China Market Analyst)\n\n**文件位置**: `tradingagents/agents/analysts/china_market_analyst.py`\n\n**核心职责**:\n- 专门针对中国A股市场的分析\n- 中国特色的市场因素分析\n- 政策环境影响评估\n- 本土化的投资逻辑\n\n## 工具集成\n\n### 统一工具架构\n\n分析师使用统一的工具接口，支持自动股票类型识别：\n\n```python\n# 统一基本面分析工具\ntools = [toolkit.get_stock_fundamentals_unified]\n\n# 工具内部自动识别股票类型并调用相应数据源\n# - A股: 使用中国股票数据接口\n# - 港股: 使用港股专用接口\n# - 美股: 使用FinnHub等国际数据源\n```\n\n### 在线/离线模式\n\n**在线模式** (`online_tools=True`):\n- 使用实时API数据\n- 数据最新但成本较高\n- 适合生产环境\n\n**离线模式** (`online_tools=False`):\n- 使用缓存数据\n- 成本低但数据可能滞后\n- 适合开发和测试\n\n## 股票类型支持\n\n### 市场识别机制\n\n```python\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 返回信息包括：\n# - is_china: 是否为A股\n# - is_hk: 是否为港股\n# - is_us: 是否为美股\n# - market_name: 市场名称\n# - currency_name: 货币名称\n# - currency_symbol: 货币符号\n```\n\n### 支持的市场\n\n1. **中国A股**\n   - 股票代码格式：000001, 600000等\n   - 货币单位：人民币(CNY)\n   - 数据源：统一中国股票接口\n\n2. **香港股市**\n   - 股票代码格式：0700.HK, 00700等\n   - 货币单位：港币(HKD)\n   - 数据源：改进的港股工具\n\n3. **美国股市**\n   - 股票代码格式：AAPL, TSLA等\n   - 货币单位：美元(USD)\n   - 数据源：FinnHub, Yahoo Finance等\n\n## 分析流程\n\n### 1. 数据获取阶段\n```mermaid\ngraph LR\n    A[股票代码] --> B[市场类型识别]\n    B --> C[选择数据源]\n    C --> D[获取原始数据]\n    D --> E[数据预处理]\n```\n\n### 2. 分析执行阶段\n```mermaid\ngraph TB\n    A[原始数据] --> B[基本面分析师]\n    A --> C[市场分析师]\n    A --> D[新闻分析师]\n    A --> E[社交媒体分析师]\n    \n    B --> F[基本面报告]\n    C --> G[市场分析报告]\n    D --> H[新闻分析报告]\n    E --> I[情绪分析报告]\n```\n\n### 3. 报告生成阶段\n```mermaid\ngraph LR\n    A[各分析师报告] --> B[状态更新]\n    B --> C[传递给研究员团队]\n    C --> D[进入辩论阶段]\n```\n\n## 配置选项\n\n### 分析师选择\n```python\n# 可选择的分析师类型\nselected_analysts = [\n    \"market\",        # 市场分析师\n    \"social\",        # 社交媒体分析师\n    \"news\",          # 新闻分析师\n    \"fundamentals\"   # 基本面分析师\n]\n```\n\n### 工具配置\n```python\ntoolkit_config = {\n    \"online_tools\": True,     # 是否使用在线工具\n    \"cache_enabled\": True,    # 是否启用缓存\n    \"timeout\": 30,           # API超时时间\n    \"retry_count\": 3         # 重试次数\n}\n```\n\n## 日志和监控\n\n### 统一日志系统\n```python\n# 每个分析师都使用统一的日志系统\nlogger = get_logger(\"default\")\n\n# 详细的调试日志\nlogger.debug(f\"📊 [DEBUG] 基本面分析师节点开始\")\nlogger.info(f\"📊 [基本面分析师] 正在分析股票: {ticker}\")\nlogger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n### 性能监控\n- 分析耗时统计\n- API调用次数追踪\n- 错误率监控\n- 缓存命中率统计\n\n## 扩展指南\n\n### 添加新的分析师\n\n1. **创建分析师文件**\n```python\n# tradingagents/agents/analysts/custom_analyst.py\nfrom tradingagents.utils.tool_logging import log_analyst_module\nfrom tradingagents.utils.logging_init import get_logger\n\ndef create_custom_analyst(llm, toolkit):\n    @log_analyst_module(\"custom\")\n    def custom_analyst_node(state):\n        # 自定义分析逻辑\n        pass\n    return custom_analyst_node\n```\n\n2. **注册到系统**\n```python\n# 在trading_graph.py中添加\nselected_analysts.append(\"custom\")\n```\n\n### 添加新的数据源\n\n1. **实现数据接口**\n2. **添加到工具集**\n3. **更新配置选项**\n\n## 最佳实践\n\n### 1. 错误处理\n- 使用try-catch包装API调用\n- 提供降级方案\n- 记录详细错误信息\n\n### 2. 性能优化\n- 启用数据缓存\n- 合理设置超时时间\n- 避免重复API调用\n\n### 3. 数据质量\n- 验证数据完整性\n- 处理异常值\n- 提供数据质量评分\n\n### 4. 可维护性\n- 使用统一的代码结构\n- 添加详细的注释\n- 遵循命名规范\n\n## 故障排除\n\n### 常见问题\n\n1. **API调用失败**\n   - 检查网络连接\n   - 验证API密钥\n   - 查看速率限制\n\n2. **数据格式错误**\n   - 检查股票代码格式\n   - 验证市场类型识别\n   - 查看数据源兼容性\n\n3. **性能问题**\n   - 启用缓存机制\n   - 优化并发设置\n   - 减少不必要的API调用\n\n### 调试技巧\n\n1. **启用详细日志**\n```python\nlogger.setLevel(logging.DEBUG)\n```\n\n2. **检查状态传递**\n```python\nlogger.debug(f\"当前状态: {state}\")\n```\n\n3. **验证工具配置**\n```python\nlogger.debug(f\"工具配置: {toolkit.config}\")\n```\n\n分析师团队是整个TradingAgents框架的基础，通过专业化分工和协作，为后续的研究辩论和交易决策提供高质量的数据支持。\n\n<!-- File: docs/agents/v0.1.13/managers.md (Tokens: ~7062 | Category: subagent-persona) -->\n# 管理层团队\n\n## 概述\n\n管理层团队是 TradingAgents 框架的决策核心，负责协调各个智能体的工作流程，评估投资辩论，并做出最终的投资决策。管理层通过综合分析师、研究员、交易员和风险管理团队的输出，形成全面的投资策略和具体的执行计划。\n\n## 管理层架构\n\n### 基础设计\n\n管理层团队基于统一的架构设计，专注于决策协调和策略制定：\n\n```python\n# 统一的管理层模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_manager_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_manager_module(\"manager_type\")\ndef manager_node(state):\n    # 管理层决策逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n管理层团队通过 `AgentState` 获取完整的分析和决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    bull_argument: str           # 看涨论证\n    bear_argument: str           # 看跌论证\n    trader_recommendation: str   # 交易员建议\n    risk_analysis: str           # 风险分析\n    messages: List              # 消息历史\n```\n\n## 管理层团队成员\n\n### 1. 研究经理 (Research Manager)\n\n**文件位置**: `tradingagents/agents/managers/research_manager.py`\n\n**核心职责**:\n- 作为投资组合经理和辩论主持人\n- 评估投资辩论质量和有效性\n- 总结看涨和看跌分析师的关键观点\n- 基于最有说服力的证据做出明确的买入、卖出或持有决策\n- 为交易员制定详细的投资计划\n\n**核心实现**:\n```python\ndef create_research_manager(llm):\n    @log_manager_module(\"research_manager\")\n    def research_manager_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trade_date = state.get(\"trade_date\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        \n        # 获取辩论结果\n        bull_argument = state.get(\"bull_argument\", \"\")\n        bear_argument = state.get(\"bear_argument\", \"\")\n        \n        # 构建研究经理决策提示\n        manager_prompt = f\"\"\"\n        作为投资组合经理和辩论主持人，请基于以下信息做出投资决策：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        交易日期: {trade_date}\n        \n        === 基础分析报告 ===\n        基本面报告: {fundamentals_report}\n        市场分析报告: {market_report}\n        情绪分析报告: {sentiment_report}\n        新闻分析报告: {news_report}\n        \n        === 投资辩论结果 ===\n        看涨论证: {bull_argument}\n        看跌论证: {bear_argument}\n        \n        请作为经验丰富的投资组合经理：\n        1. 评估辩论质量和论证强度\n        2. 总结关键投资观点和风险因素\n        3. 做出明确的投资决策（买入/卖出/持有）\n        4. 制定详细的投资计划和执行策略\n        5. 提供具体的目标价格和时间框架\n        6. 说明决策理由和风险控制措施\n        \n        请确保决策基于客观分析，并提供清晰的执行指导。\n        \"\"\"\n        \n        # 调用LLM生成投资决策\n        response = llm.invoke(manager_prompt)\n        \n        return {\"investment_plan\": response.content}\n```\n\n**决策特点**:\n- **综合评估**: 全面考虑各类分析报告和辩论结果\n- **客观决策**: 基于证据强度而非个人偏好做决策\n- **具体指导**: 提供明确的执行计划和目标价格\n- **风险意识**: 充分考虑风险因素和控制措施\n\n### 2. 投资组合经理 (Portfolio Manager)\n\n**文件位置**: `tradingagents/agents/managers/portfolio_manager.py`\n\n**核心职责**:\n- 管理整体投资组合配置\n- 协调多个股票的投资决策\n- 优化资产配置和风险分散\n- 监控组合绩效和风险指标\n\n**核心功能**:\n```python\ndef create_portfolio_manager(llm):\n    @log_manager_module(\"portfolio_manager\")\n    def portfolio_manager_node(state):\n        # 获取组合信息\n        portfolio_holdings = state.get(\"portfolio_holdings\", {})\n        available_capital = state.get(\"available_capital\", 0)\n        risk_tolerance = state.get(\"risk_tolerance\", \"moderate\")\n        \n        # 获取新的投资建议\n        new_investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建组合管理提示\n        portfolio_prompt = f\"\"\"\n        作为投资组合经理，请评估新的投资建议对整体组合的影响：\n        \n        === 当前组合状况 ===\n        持仓情况: {portfolio_holdings}\n        可用资金: {available_capital}\n        风险偏好: {risk_tolerance}\n        \n        === 新投资建议 ===\n        目标股票: {company_name}\n        投资计划: {new_investment_plan}\n        \n        请分析：\n        1. 新投资对组合风险收益的影响\n        2. 建议的仓位大小和配置比例\n        3. 与现有持仓的相关性分析\n        4. 组合整体风险评估\n        5. 再平衡建议（如需要）\n        \n        请提供具体的组合调整方案。\n        \"\"\"\n        \n        response = llm.invoke(portfolio_prompt)\n        \n        return {\"portfolio_adjustment\": response.content}\n```\n\n**管理特点**:\n- **整体视角**: 从组合层面考虑单个投资决策\n- **风险分散**: 优化资产配置以降低整体风险\n- **动态调整**: 根据市场变化调整组合配置\n- **绩效监控**: 持续跟踪组合表现和风险指标\n\n### 3. 风险经理 (Risk Manager)\n\n**文件位置**: `tradingagents/agents/managers/risk_manager.py`\n\n**核心职责**:\n- 监控整体风险敞口\n- 设定和执行风险限额\n- 协调风险控制措施\n- 提供风险管理指导\n\n**核心功能**:\n```python\ndef create_risk_manager(llm):\n    @log_manager_module(\"risk_manager\")\n    def risk_manager_node(state):\n        # 获取风险分析结果\n        conservative_analysis = state.get(\"conservative_risk_analysis\", \"\")\n        aggressive_analysis = state.get(\"aggressive_risk_analysis\", \"\")\n        neutral_analysis = state.get(\"neutral_risk_analysis\", \"\")\n        \n        # 获取投资计划\n        investment_plan = state.get(\"investment_plan\", \"\")\n        company_name = state[\"company_of_interest\"]\n        \n        # 构建风险管理提示\n        risk_management_prompt = f\"\"\"\n        作为风险经理，请基于多角度风险分析制定风险管理策略：\n        \n        === 风险分析结果 ===\n        保守风险分析: {conservative_analysis}\n        激进风险分析: {aggressive_analysis}\n        中性风险分析: {neutral_analysis}\n        \n        === 投资计划 ===\n        目标股票: {company_name}\n        投资方案: {investment_plan}\n        \n        请制定：\n        1. 综合风险评估和等级\n        2. 具体的风险控制措施\n        3. 止损止盈策略\n        4. 仓位管理建议\n        5. 风险监控指标\n        6. 应急预案\n        \n        请提供可执行的风险管理方案。\n        \"\"\"\n        \n        response = llm.invoke(risk_management_prompt)\n        \n        return {\"risk_management_plan\": response.content}\n```\n\n**管理特点**:\n- **全面监控**: 监控各类风险因素和指标\n- **主动管理**: 主动识别和控制潜在风险\n- **量化分析**: 使用量化方法评估风险\n- **应急响应**: 制定风险事件应对预案\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```python\nclass InformationGathering:\n    def __init__(self):\n        self.required_reports = [\n            \"fundamentals_report\",\n            \"market_report\", \n            \"sentiment_report\",\n            \"news_report\"\n        ]\n        self.debate_results = [\n            \"bull_argument\",\n            \"bear_argument\"\n        ]\n        self.risk_analyses = [\n            \"conservative_risk_analysis\",\n            \"aggressive_risk_analysis\",\n            \"neutral_risk_analysis\"\n        ]\n    \n    def validate_inputs(self, state):\n        \"\"\"验证输入信息完整性\"\"\"\n        missing_reports = []\n        \n        for report in self.required_reports:\n            if not state.get(report):\n                missing_reports.append(report)\n        \n        if missing_reports:\n            logger.warning(f\"缺少必要报告: {missing_reports}\")\n            return False, missing_reports\n        \n        return True, []\n    \n    def assess_information_quality(self, state):\n        \"\"\"评估信息质量\"\"\"\n        quality_scores = {}\n        \n        for report in self.required_reports:\n            content = state.get(report, \"\")\n            quality_scores[report] = self.calculate_content_quality(content)\n        \n        return quality_scores\n    \n    def calculate_content_quality(self, content):\n        \"\"\"计算内容质量分数\"\"\"\n        if not content:\n            return 0.0\n        \n        # 基于长度、关键词、结构等因素评估质量\n        length_score = min(len(content) / 1000, 1.0)  # 标准化长度分数\n        keyword_score = self.check_keywords(content)\n        structure_score = self.check_structure(content)\n        \n        return (length_score + keyword_score + structure_score) / 3\n```\n\n### 2. 辩论评估阶段\n\n```python\nclass DebateEvaluation:\n    def __init__(self):\n        self.evaluation_criteria = {\n            \"logic_strength\": 0.3,      # 逻辑强度\n            \"evidence_quality\": 0.3,    # 证据质量\n            \"risk_awareness\": 0.2,      # 风险意识\n            \"market_insight\": 0.2       # 市场洞察\n        }\n    \n    def evaluate_arguments(self, bull_argument, bear_argument):\n        \"\"\"评估辩论论证质量\"\"\"\n        bull_score = self.score_argument(bull_argument)\n        bear_score = self.score_argument(bear_argument)\n        \n        return {\n            \"bull_score\": bull_score,\n            \"bear_score\": bear_score,\n            \"winner\": \"bull\" if bull_score > bear_score else \"bear\",\n            \"confidence\": abs(bull_score - bear_score)\n        }\n    \n    def score_argument(self, argument):\n        \"\"\"为单个论证打分\"\"\"\n        scores = {}\n        \n        for criterion, weight in self.evaluation_criteria.items():\n            criterion_score = self.evaluate_criterion(argument, criterion)\n            scores[criterion] = criterion_score * weight\n        \n        return sum(scores.values())\n    \n    def evaluate_criterion(self, argument, criterion):\n        \"\"\"评估特定标准\"\"\"\n        # 使用NLP技术或规则评估论证质量\n        if criterion == \"logic_strength\":\n            return self.assess_logical_structure(argument)\n        elif criterion == \"evidence_quality\":\n            return self.assess_evidence_strength(argument)\n        elif criterion == \"risk_awareness\":\n            return self.assess_risk_consideration(argument)\n        elif criterion == \"market_insight\":\n            return self.assess_market_understanding(argument)\n        \n        return 0.5  # 默认分数\n```\n\n### 3. 决策制定阶段\n\n```python\nclass DecisionMaking:\n    def __init__(self, config):\n        self.decision_thresholds = config.get(\"decision_thresholds\", {\n            \"strong_buy\": 0.8,\n            \"buy\": 0.6,\n            \"hold\": 0.4,\n            \"sell\": 0.2,\n            \"strong_sell\": 0.0\n        })\n        self.confidence_threshold = config.get(\"confidence_threshold\", 0.7)\n    \n    def make_investment_decision(self, analysis_results):\n        \"\"\"制定投资决策\"\"\"\n        # 综合各项分析结果\n        fundamental_score = analysis_results.get(\"fundamental_score\", 0.5)\n        technical_score = analysis_results.get(\"technical_score\", 0.5)\n        sentiment_score = analysis_results.get(\"sentiment_score\", 0.5)\n        debate_score = analysis_results.get(\"debate_score\", 0.5)\n        risk_score = analysis_results.get(\"risk_score\", 0.5)\n        \n        # 加权计算综合分数\n        weights = {\n            \"fundamental\": 0.3,\n            \"technical\": 0.2,\n            \"sentiment\": 0.15,\n            \"debate\": 0.25,\n            \"risk\": 0.1\n        }\n        \n        composite_score = (\n            fundamental_score * weights[\"fundamental\"] +\n            technical_score * weights[\"technical\"] +\n            sentiment_score * weights[\"sentiment\"] +\n            debate_score * weights[\"debate\"] +\n            (1 - risk_score) * weights[\"risk\"]  # 风险分数取反\n        )\n        \n        # 确定投资决策\n        decision = self.score_to_decision(composite_score)\n        confidence = self.calculate_confidence(analysis_results)\n        \n        return {\n            \"decision\": decision,\n            \"composite_score\": composite_score,\n            \"confidence\": confidence,\n            \"reasoning\": self.generate_reasoning(analysis_results, decision)\n        }\n    \n    def score_to_decision(self, score):\n        \"\"\"将分数转换为投资决策\"\"\"\n        if score >= self.decision_thresholds[\"strong_buy\"]:\n            return \"强烈买入\"\n        elif score >= self.decision_thresholds[\"buy\"]:\n            return \"买入\"\n        elif score >= self.decision_thresholds[\"hold\"]:\n            return \"持有\"\n        elif score >= self.decision_thresholds[\"sell\"]:\n            return \"卖出\"\n        else:\n            return \"强烈卖出\"\n    \n    def calculate_confidence(self, analysis_results):\n        \"\"\"计算决策置信度\"\"\"\n        # 基于各项分析的一致性计算置信度\n        scores = [\n            analysis_results.get(\"fundamental_score\", 0.5),\n            analysis_results.get(\"technical_score\", 0.5),\n            analysis_results.get(\"sentiment_score\", 0.5),\n            analysis_results.get(\"debate_score\", 0.5)\n        ]\n        \n        # 计算标准差，标准差越小置信度越高\n        import numpy as np\n        std_dev = np.std(scores)\n        confidence = max(0, 1 - std_dev * 2)  # 标准化到0-1范围\n        \n        return confidence\n```\n\n### 4. 执行计划制定\n\n```python\nclass ExecutionPlanning:\n    def __init__(self, config):\n        self.position_sizing_method = config.get(\"position_sizing\", \"kelly\")\n        self.max_position_size = config.get(\"max_position_size\", 0.05)\n        self.min_position_size = config.get(\"min_position_size\", 0.01)\n    \n    def create_execution_plan(self, decision_result, market_info):\n        \"\"\"创建执行计划\"\"\"\n        decision = decision_result[\"decision\"]\n        confidence = decision_result[\"confidence\"]\n        \n        if decision in [\"买入\", \"强烈买入\"]:\n            return self.create_buy_plan(decision_result, market_info)\n        elif decision in [\"卖出\", \"强烈卖出\"]:\n            return self.create_sell_plan(decision_result, market_info)\n        else:\n            return self.create_hold_plan(decision_result, market_info)\n    \n    def create_buy_plan(self, decision_result, market_info):\n        \"\"\"创建买入计划\"\"\"\n        confidence = decision_result[\"confidence\"]\n        current_price = market_info.get(\"current_price\", 0)\n        \n        # 计算仓位大小\n        position_size = self.calculate_position_size(\n            decision_result, market_info\n        )\n        \n        # 计算目标价格\n        target_price = self.calculate_target_price(\n            current_price, decision_result, \"buy\"\n        )\n        \n        # 计算止损价格\n        stop_loss = self.calculate_stop_loss(\n            current_price, decision_result, \"buy\"\n        )\n        \n        return {\n            \"action\": \"买入\",\n            \"position_size\": position_size,\n            \"entry_price\": current_price,\n            \"target_price\": target_price,\n            \"stop_loss\": stop_loss,\n            \"time_horizon\": self.estimate_time_horizon(decision_result),\n            \"execution_strategy\": self.select_execution_strategy(market_info)\n        }\n    \n    def calculate_position_size(self, decision_result, market_info):\n        \"\"\"计算仓位大小\"\"\"\n        confidence = decision_result[\"confidence\"]\n        volatility = market_info.get(\"volatility\", 0.2)\n        \n        if self.position_sizing_method == \"kelly\":\n            # 凯利公式\n            expected_return = decision_result.get(\"expected_return\", 0.1)\n            win_rate = confidence\n            avg_win = expected_return\n            avg_loss = volatility\n            \n            kelly_fraction = (win_rate * avg_win - (1 - win_rate) * avg_loss) / avg_win\n            position_size = max(self.min_position_size, \n                              min(self.max_position_size, kelly_fraction))\n        \n        elif self.position_sizing_method == \"fixed\":\n            # 固定仓位\n            base_size = 0.02\n            position_size = base_size * confidence\n        \n        else:\n            # 风险平价\n            target_risk = 0.02\n            position_size = target_risk / volatility\n        \n        return min(self.max_position_size, max(self.min_position_size, position_size))\n```\n\n## 决策质量评估\n\n### 决策评估框架\n\n```python\nclass DecisionQualityAssessment:\n    def __init__(self):\n        self.quality_metrics = {\n            \"information_completeness\": 0.2,    # 信息完整性\n            \"analysis_depth\": 0.2,              # 分析深度\n            \"risk_consideration\": 0.2,           # 风险考虑\n            \"logical_consistency\": 0.2,          # 逻辑一致性\n            \"execution_feasibility\": 0.2         # 执行可行性\n        }\n    \n    def assess_decision_quality(self, decision_process):\n        \"\"\"评估决策质量\"\"\"\n        quality_scores = {}\n        \n        for metric, weight in self.quality_metrics.items():\n            score = self.evaluate_metric(decision_process, metric)\n            quality_scores[metric] = score * weight\n        \n        overall_quality = sum(quality_scores.values())\n        \n        return {\n            \"overall_quality\": overall_quality,\n            \"metric_scores\": quality_scores,\n            \"quality_grade\": self.grade_quality(overall_quality),\n            \"improvement_suggestions\": self.suggest_improvements(quality_scores)\n        }\n    \n    def evaluate_metric(self, decision_process, metric):\n        \"\"\"评估特定质量指标\"\"\"\n        if metric == \"information_completeness\":\n            return self.assess_information_completeness(decision_process)\n        elif metric == \"analysis_depth\":\n            return self.assess_analysis_depth(decision_process)\n        elif metric == \"risk_consideration\":\n            return self.assess_risk_consideration(decision_process)\n        elif metric == \"logical_consistency\":\n            return self.assess_logical_consistency(decision_process)\n        elif metric == \"execution_feasibility\":\n            return self.assess_execution_feasibility(decision_process)\n        \n        return 0.5  # 默认分数\n    \n    def grade_quality(self, score):\n        \"\"\"质量等级评定\"\"\"\n        if score >= 0.9:\n            return \"优秀\"\n        elif score >= 0.8:\n            return \"良好\"\n        elif score >= 0.7:\n            return \"中等\"\n        elif score >= 0.6:\n            return \"及格\"\n        else:\n            return \"需要改进\"\n```\n\n## 配置选项\n\n### 管理层配置\n\n```python\nmanager_config = {\n    \"decision_model\": \"consensus\",          # 决策模型\n    \"confidence_threshold\": 0.7,           # 置信度阈值\n    \"risk_tolerance\": \"moderate\",          # 风险容忍度\n    \"position_sizing_method\": \"kelly\",     # 仓位计算方法\n    \"max_position_size\": 0.05,             # 最大仓位\n    \"rebalance_frequency\": \"weekly\",       # 再平衡频率\n    \"performance_review_period\": \"monthly\" # 绩效评估周期\n}\n```\n\n### 决策参数\n\n```python\ndecision_params = {\n    \"analysis_weights\": {                  # 分析权重\n        \"fundamental\": 0.3,\n        \"technical\": 0.2,\n        \"sentiment\": 0.15,\n        \"debate\": 0.25,\n        \"risk\": 0.1\n    },\n    \"decision_thresholds\": {               # 决策阈值\n        \"strong_buy\": 0.8,\n        \"buy\": 0.6,\n        \"hold\": 0.4,\n        \"sell\": 0.2,\n        \"strong_sell\": 0.0\n    },\n    \"time_horizons\": {                     # 投资期限\n        \"short_term\": \"1-3个月\",\n        \"medium_term\": \"3-12个月\",\n        \"long_term\": \"1年以上\"\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 管理层活动日志\nlogger.info(f\"👔 [管理层] 开始决策流程: {company_name}\")\nlogger.info(f\"📋 [信息收集] 收集到 {len(reports)} 份分析报告\")\nlogger.info(f\"⚖️ [辩论评估] 看涨分数: {bull_score:.2f}, 看跌分数: {bear_score:.2f}\")\nlogger.info(f\"🎯 [投资决策] 决策: {decision}, 置信度: {confidence:.2%}\")\nlogger.info(f\"📊 [执行计划] 仓位: {position_size:.2%}, 目标价: {target_price}\")\nlogger.info(f\"✅ [决策完成] 投资计划制定完成\")\n```\n\n### 绩效监控指标\n\n- 决策准确率\n- 风险调整收益\n- 最大回撤控制\n- 决策执行效率\n- 组合多样化程度\n\n## 扩展指南\n\n### 添加新的管理角色\n\n1. **创建新管理角色**\n```python\n# tradingagents/agents/managers/new_manager.py\nfrom tradingagents.utils.tool_logging import log_manager_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_manager(llm):\n    @log_manager_module(\"new_manager\")\n    def new_manager_node(state):\n        # 新管理角色逻辑\n        pass\n    \n    return new_manager_node\n```\n\n2. **集成到决策流程**\n```python\n# 在图配置中添加新管理角色\nfrom tradingagents.agents.managers.new_manager import create_new_manager\n\nnew_manager = create_new_manager(llm)\n```\n\n### 自定义决策模型\n\n1. **实现决策模型接口**\n```python\nclass DecisionModel:\n    def analyze_inputs(self, state):\n        pass\n    \n    def make_decision(self, analysis_results):\n        pass\n    \n    def create_execution_plan(self, decision):\n        pass\n```\n\n2. **注册决策模型**\n```python\ndecision_models = {\n    \"consensus\": ConsensusModel(),\n    \"majority_vote\": MajorityVoteModel(),\n    \"weighted_average\": WeightedAverageModel()\n}\n```\n\n## 最佳实践\n\n### 1. 全面信息整合\n- 确保所有必要信息都已收集\n- 验证信息质量和可靠性\n- 识别信息缺口和不确定性\n- 建立信息更新机制\n\n### 2. 客观决策制定\n- 基于数据和分析而非直觉\n- 考虑多种情景和可能性\n- 量化风险和收益预期\n- 保持决策过程透明\n\n### 3. 动态策略调整\n- 定期评估决策效果\n- 根据市场变化调整策略\n- 学习和改进决策模型\n- 保持策略灵活性\n\n### 4. 有效风险管理\n- 设定明确的风险限额\n- 建立多层风险控制机制\n- 定期进行压力测试\n- 制定应急预案\n\n## 故障排除\n\n### 常见问题\n\n1. **决策冲突**\n   - 检查各分析师输出一致性\n   - 调整决策权重配置\n   - 增加仲裁机制\n   - 提高信息质量\n\n2. **执行计划不可行**\n   - 验证市场流动性\n   - 调整仓位大小\n   - 修改执行时间框架\n   - 考虑市场冲击成本\n\n3. **决策质量下降**\n   - 评估输入信息质量\n   - 检查模型参数设置\n   - 更新决策算法\n   - 增加人工审核\n\n### 调试技巧\n\n1. **决策流程跟踪**\n```python\nlogger.debug(f\"决策输入: {decision_inputs}\")\nlogger.debug(f\"分析结果: {analysis_results}\")\nlogger.debug(f\"决策输出: {decision_output}\")\n```\n\n2. **质量评估**\n```python\nlogger.debug(f\"信息完整性: {information_completeness}\")\nlogger.debug(f\"分析深度: {analysis_depth}\")\nlogger.debug(f\"决策质量: {decision_quality}\")\n```\n\n管理层团队作为TradingAgents框架的决策中枢，通过科学的决策流程和全面的信息整合，确保投资决策的质量和有效性，为投资组合的成功管理提供强有力的领导和指导。\n\n<!-- File: docs/agents/v0.1.13/researchers.md (Tokens: ~4785 | Category: subagent-persona) -->\n# 研究员团队\n\n## 概述\n\n研究员团队是 TradingAgents 框架的核心决策组件，负责基于分析师提供的数据进行深度研究和投资辩论。团队由看涨研究员和看跌研究员组成，通过对立观点的辩论来全面评估投资机会和风险，为最终的投资决策提供平衡的视角。\n\n## 研究员架构\n\n### 基础研究员设计\n\n所有研究员都基于统一的架构设计，使用相同的状态管理和日志系统：\n\n```python\n# 统一的研究员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_researcher_module(\"researcher_type\")\ndef researcher_node(state):\n    # 研究员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n研究员通过 `AgentState` 进行状态管理，包含辩论历史和分析报告：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    debate_state: str            # 辩论状态\n    messages: List              # 消息历史\n    memory: Any                 # 历史记忆\n```\n\n## 研究员团队成员\n\n### 1. 看涨研究员 (Bull Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bull_researcher.py`\n\n**核心职责**:\n- 寻找和强调投资机会的积极因素\n- 提出看涨观点和支持论据\n- 反驳看跌观点中的薄弱环节\n- 推动积极的投资决策\n\n**核心实现**:\n```python\ndef create_bull_researcher(llm, memory=None):\n    @log_researcher_module(\"bull\")\n    def bull_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看涨论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看涨观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **积极解读数据**: 从乐观角度解释市场数据和财务指标\n- **机会识别**: 发现被市场低估的价值和增长潜力\n- **风险最小化**: 论证风险的可控性和临时性\n- **催化剂分析**: 识别可能推动股价上涨的因素\n\n### 2. 看跌研究员 (Bear Researcher)\n\n**文件位置**: `tradingagents/agents/researchers/bear_researcher.py`\n\n**核心职责**:\n- 识别和强调投资风险和负面因素\n- 提出看跌观点和警示论据\n- 质疑看涨观点中的乐观假设\n- 推动谨慎的投资决策\n\n**核心实现**:\n```python\ndef create_bear_researcher(llm, memory=None):\n    @log_researcher_module(\"bear\")\n    def bear_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        debate_state = state.get(\"debate_state\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 安全检查\n        if memory is None:\n            logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n        \n        # 构建看跌论证\n        messages = state.get(\"messages\", [])\n        \n        # 分析各类报告并提出看跌观点\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n```\n\n**分析策略**:\n- **风险放大**: 深入分析潜在风险和负面因素\n- **估值质疑**: 质疑当前估值的合理性\n- **趋势反转**: 识别可能的负面趋势转折点\n- **竞争威胁**: 分析行业竞争和市场变化风险\n\n## 辩论机制\n\n### 辩论流程\n\n```mermaid\ngraph TB\n    A[分析师报告] --> B[看涨研究员分析]\n    A --> C[看跌研究员分析]\n    \n    B --> D[看涨观点]\n    C --> E[看跌观点]\n    \n    D --> F[辩论交锋]\n    E --> F\n    \n    F --> G[观点完善]\n    G --> H[最终辩论结果]\n    \n    H --> I[传递给管理层]\n```\n\n### 辩论状态管理\n\n```python\n# 辩论状态类型\nDEBATE_STATES = {\n    \"initial\": \"初始状态\",\n    \"bull_turn\": \"看涨方发言\",\n    \"bear_turn\": \"看跌方发言\",\n    \"rebuttal\": \"反驳阶段\",\n    \"conclusion\": \"总结阶段\"\n}\n\n# 状态转换逻辑\ndef update_debate_state(current_state, participant):\n    if current_state == \"initial\":\n        return \"bull_turn\" if participant == \"bull\" else \"bear_turn\"\n    elif current_state in [\"bull_turn\", \"bear_turn\"]:\n        return \"rebuttal\"\n    elif current_state == \"rebuttal\":\n        return \"conclusion\"\n    return current_state\n```\n\n### 记忆系统集成\n\n研究员支持历史记忆功能，能够：\n\n1. **历史辩论回顾**: 参考之前的辩论结果和观点\n2. **学习改进**: 从历史决策的成败中学习\n3. **一致性维护**: 保持观点的逻辑一致性\n4. **经验积累**: 积累特定股票或行业的分析经验\n\n```python\n# 记忆检索示例\nif memory is not None:\n    historical_debates = memory.get_relevant_debates(company_name)\n    previous_analysis = memory.get_analysis_history(company_name)\nelse:\n    logger.warning(f\"⚠️ [DEBUG] memory为None，跳过历史记忆检索\")\n```\n\n## 股票类型支持\n\n### 多市场分析能力\n\n研究员团队支持全球主要股票市场的分析：\n\n```python\n# 市场信息获取\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(ticker)\n\n# 根据市场类型调整分析策略\nif market_info.get(\"is_china\"):\n    # A股特有的分析逻辑\n    analysis_context = \"中国A股市场\"\n    currency = \"人民币\"\nelif market_info.get(\"is_hk\"):\n    # 港股特有的分析逻辑\n    analysis_context = \"香港股市\"\n    currency = \"港币\"\nelif market_info.get(\"is_us\"):\n    # 美股特有的分析逻辑\n    analysis_context = \"美国股市\"\n    currency = \"美元\"\n```\n\n### 本土化分析\n\n1. **A股市场**:\n   - 政策影响分析\n   - 监管环境评估\n   - 国内经济周期考量\n   - 投资者结构特点\n\n2. **港股市场**:\n   - 中港两地联动\n   - 汇率风险评估\n   - 国际资本流动\n   - 估值差异分析\n\n3. **美股市场**:\n   - 美联储政策影响\n   - 全球经济环境\n   - 行业竞争格局\n   - 技术创新趋势\n\n## 分析维度\n\n### 看涨研究员关注点\n\n1. **增长潜力**:\n   - 收入增长趋势\n   - 市场份额扩张\n   - 新产品/服务机会\n   - 国际化进展\n\n2. **估值优势**:\n   - 相对估值吸引力\n   - 历史估值比较\n   - 同行业估值对比\n   - 资产价值重估\n\n3. **催化因素**:\n   - 政策利好\n   - 行业景气度提升\n   - 技术突破\n   - 管理层变化\n\n4. **财务健康**:\n   - 现金流改善\n   - 盈利能力提升\n   - 债务结构优化\n   - 分红政策\n\n### 看跌研究员关注点\n\n1. **风险因素**:\n   - 行业衰退风险\n   - 竞争加剧威胁\n   - 监管政策风险\n   - 技术替代风险\n\n2. **估值风险**:\n   - 估值过高警示\n   - 泡沫风险评估\n   - 盈利预期过于乐观\n   - 市场情绪过热\n\n3. **财务问题**:\n   - 现金流恶化\n   - 债务负担过重\n   - 盈利质量下降\n   - 会计问题质疑\n\n4. **宏观环境**:\n   - 经济周期下行\n   - 利率上升影响\n   - 汇率波动风险\n   - 地缘政治风险\n\n## 辩论质量评估\n\n### 论证强度指标\n\n1. **数据支撑度**:\n   - 引用数据的准确性\n   - 数据来源的可靠性\n   - 数据分析的深度\n   - 数据解读的合理性\n\n2. **逻辑一致性**:\n   - 论证链条的完整性\n   - 推理过程的严密性\n   - 结论与前提的一致性\n   - 反驳的有效性\n\n3. **风险识别**:\n   - 风险因素的全面性\n   - 风险评估的准确性\n   - 风险应对的可行性\n   - 风险权衡的合理性\n\n### 辩论输出质量\n\n```python\n# 辩论结果结构\nclass DebateResult:\n    bull_arguments: List[str]     # 看涨论点\n    bear_arguments: List[str]     # 看跌论点\n    key_disagreements: List[str]  # 主要分歧\n    consensus_points: List[str]   # 共识观点\n    confidence_level: float       # 置信度\n    recommendation_strength: str  # 建议强度\n```\n\n## 配置选项\n\n### 研究员配置\n\n```python\nresearcher_config = {\n    \"enable_memory\": True,        # 是否启用记忆功能\n    \"debate_rounds\": 3,           # 辩论轮数\n    \"argument_depth\": \"deep\",     # 论证深度\n    \"risk_tolerance\": \"moderate\", # 风险容忍度\n    \"analysis_style\": \"balanced\" # 分析风格\n}\n```\n\n### 辩论参数\n\n```python\ndebate_params = {\n    \"max_rounds\": 5,              # 最大辩论轮数\n    \"time_limit\": 300,            # 单轮时间限制(秒)\n    \"evidence_weight\": 0.7,       # 证据权重\n    \"logic_weight\": 0.3,          # 逻辑权重\n    \"consensus_threshold\": 0.8    # 共识阈值\n}\n```\n\n## 性能优化\n\n### 并行处理\n\n```python\n# 并行执行看涨和看跌分析\nimport asyncio\n\nasync def parallel_research(state):\n    bull_task = asyncio.create_task(bull_researcher(state))\n    bear_task = asyncio.create_task(bear_researcher(state))\n    \n    bull_result, bear_result = await asyncio.gather(bull_task, bear_task)\n    return bull_result, bear_result\n```\n\n### 缓存机制\n\n```python\n# 分析结果缓存\nfrom functools import lru_cache\n\n@lru_cache(maxsize=100)\ndef cached_analysis(ticker, date, report_hash):\n    # 缓存分析结果\n    pass\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 研究员活动日志\nlogger.info(f\"🐂 [看涨研究员] 开始分析股票: {company_name}\")\nlogger.info(f\"🐻 [看跌研究员] 开始分析股票: {company_name}\")\nlogger.debug(f\"📊 [辩论状态] 当前状态: {debate_state}\")\nlogger.warning(f\"⚠️ [记忆系统] memory为None，跳过历史记忆检索\")\n```\n\n### 性能指标\n\n- 辩论完成时间\n- 论证质量评分\n- 预测准确率\n- 风险识别率\n- 共识达成率\n\n## 扩展指南\n\n### 添加新的研究员类型\n\n1. **创建研究员文件**\n```python\n# tradingagents/agents/researchers/neutral_researcher.py\nfrom tradingagents.utils.tool_logging import log_researcher_module\n\ndef create_neutral_researcher(llm, memory=None):\n    @log_researcher_module(\"neutral\")\n    def neutral_node(state):\n        # 中性研究员逻辑\n        pass\n    return neutral_node\n```\n\n2. **集成到辩论流程**\n```python\n# 在trading_graph.py中添加\nresearchers = {\n    \"bull\": create_bull_researcher(llm, memory),\n    \"bear\": create_bear_researcher(llm, memory),\n    \"neutral\": create_neutral_researcher(llm, memory)\n}\n```\n\n### 自定义辩论策略\n\n1. **实现策略接口**\n```python\nclass DebateStrategy:\n    def generate_arguments(self, reports, market_info):\n        pass\n    \n    def evaluate_counterarguments(self, opponent_args):\n        pass\n    \n    def synthesize_conclusion(self, all_arguments):\n        pass\n```\n\n2. **注册策略**\n```python\nstrategy_registry = {\n    \"aggressive_bull\": AggressiveBullStrategy(),\n    \"conservative_bear\": ConservativeBearStrategy(),\n    \"data_driven\": DataDrivenStrategy()\n}\n```\n\n## 最佳实践\n\n### 1. 平衡性维护\n- 确保看涨和看跌观点的平衡\n- 避免极端偏见\n- 基于数据而非情绪\n- 保持客观分析态度\n\n### 2. 质量控制\n- 验证数据来源\n- 检查逻辑一致性\n- 评估论证强度\n- 识别认知偏差\n\n### 3. 效率优化\n- 并行执行分析\n- 缓存重复计算\n- 优化内存使用\n- 减少冗余操作\n\n### 4. 可解释性\n- 提供清晰的推理路径\n- 标注关键假设\n- 量化不确定性\n- 记录决策依据\n\n## 故障排除\n\n### 常见问题\n\n1. **辩论陷入僵局**\n   - 引入新的分析维度\n   - 调整权重参数\n   - 增加外部信息\n   - 设置超时机制\n\n2. **观点过于极端**\n   - 调整风险容忍度\n   - 增加平衡机制\n   - 引入中性观点\n   - 强化数据验证\n\n3. **性能问题**\n   - 启用并行处理\n   - 优化缓存策略\n   - 减少分析深度\n   - 限制辩论轮数\n\n### 调试技巧\n\n1. **辩论过程追踪**\n```python\nlogger.debug(f\"辩论轮次: {round_number}\")\nlogger.debug(f\"当前发言方: {current_speaker}\")\nlogger.debug(f\"论点数量: {len(arguments)}\")\n```\n\n2. **状态检查**\n```python\nlogger.debug(f\"状态完整性: {validate_state(state)}\")\nlogger.debug(f\"报告可用性: {check_reports_availability(state)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行分析\nend_time = time.time()\nlogger.debug(f\"分析耗时: {end_time - start_time:.2f}秒\")\n```\n\n研究员团队通过结构化的辩论机制，确保投资决策的全面性和客观性，是TradingAgents框架中连接数据分析和最终决策的关键环节。\n\n<!-- File: docs/agents/v0.1.13/risk-management.md (Tokens: ~3261 | Category: subagent-persona) -->\n# 风险管理团队\n\n## 概述\n\n风险管理团队是 TradingAgents 框架的风险控制核心，负责从多个角度评估和质疑投资决策，确保投资组合的风险可控性。团队由不同风险偏好的分析师组成，通过多角度的风险评估和反驳机制，为投资决策提供全面的风险视角和保护措施。\n\n## 风险管理架构\n\n### 基础设计\n\n风险管理团队基于统一的架构设计，专注于风险识别、评估和控制：\n\n```python\n# 统一的风险管理模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_risk_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_risk_module(\"risk_type\")\ndef risk_node(state):\n    # 风险管理逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n风险管理团队通过 `AgentState` 获取完整的投资决策信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    trader_recommendation: str   # 交易员建议\n    messages: List              # 消息历史\n```\n\n## 风险管理团队成员\n\n### 1. 保守风险分析师 (Conservative Risk Analyst)\n\n**文件位置**: `tradingagents/agents/risk_mgmt/conservative_debator.py`\n\n**核心职责**:\n- 作为安全/保守风险分析师\n- 积极反驳激进和中性分析师的论点\n- 指出潜在风险并提出更谨慎的替代方案\n- 保护资产、最小化波动性并确保稳定增长\n\n**核心实现**:\n```python\ndef create_safe_debator(llm):\n    @log_risk_module(\"conservative\")\n    def safe_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        trader_recommendation = state.get(\"trader_recommendation\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建保守风险分析提示\n        safe_prompt = f\"\"\"\n        作为安全/保守风险分析师，请对以下投资决策进行风险评估：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        交易员建议: {trader_recommendation}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请从保守角度分析：\n        1. 识别所有潜在风险因素\n        2. 质疑乐观假设的合理性\n        3. 提出更谨慎的替代方案\n        4. 建议风险控制措施\n        5. 评估最坏情况下的损失\n        \"\"\"\n        \n        # 调用LLM生成风险分析\n        response = llm.invoke(safe_prompt)\n        \n        return {\"conservative_risk_analysis\": response.content}\n```\n\n**分析特点**:\n- **风险优先**: 优先识别和强调各类风险因素\n- **保守估值**: 倾向于更保守的估值和预期\n- **防御策略**: 重点关注资本保护和风险控制\n- **质疑乐观**: 对乐观预期和假设保持质疑态度\n\n## 风险评估维度\n\n### 1. 市场风险\n\n**系统性风险**:\n- 宏观经济风险\n- 政策监管风险\n- 利率汇率风险\n- 地缘政治风险\n\n**非系统性风险**:\n- 行业周期风险\n- 公司特定风险\n- 管理层风险\n- 竞争环境风险\n\n### 2. 流动性风险\n\n**市场流动性**:\n- 交易量分析\n- 买卖价差评估\n- 市场深度分析\n- 冲击成本评估\n\n**资金流动性**:\n- 现金流分析\n- 融资能力评估\n- 债务到期分析\n- 营运资金管理\n\n### 3. 信用风险\n\n**财务风险**:\n- 债务负担评估\n- 偿债能力分析\n- 现金流稳定性\n- 盈利质量评估\n\n**运营风险**:\n- 业务模式风险\n- 管理层风险\n- 内控制度风险\n- 合规风险\n\n### 4. 估值风险\n\n**估值方法风险**:\n- 估值模型选择\n- 参数敏感性分析\n- 假设条件评估\n- 比较基准选择\n\n**市场估值风险**:\n- 市场情绪影响\n- 估值泡沫风险\n- 价格发现效率\n- 投资者结构影响\n\n## 配置选项\n\n### 风险管理配置\n\n```python\nrisk_config = {\n    \"risk_tolerance\": \"moderate\",      # 风险容忍度\n    \"max_portfolio_var\": 0.05,         # 最大组合VaR\n    \"max_single_position\": 0.05,       # 最大单一仓位\n    \"max_sector_exposure\": 0.20,       # 最大行业敞口\n    \"correlation_threshold\": 0.70,     # 相关性阈值\n    \"rebalance_trigger\": 0.05,         # 再平衡触发阈值\n    \"stress_test_frequency\": \"weekly\"  # 压力测试频率\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 风险管理活动日志\nlogger.info(f\"🛡️ [风险管理] 开始风险评估: {company_name}\")\nlogger.info(f\"📊 [风险分析] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"⚠️ [风险因素] 识别到 {len(risk_factors)} 个风险因素\")\nlogger.warning(f\"🚨 [风险预警] 发现高风险因素: {high_risk_factors}\")\nlogger.info(f\"✅ [风险评估] 风险分析完成，风险等级: {risk_level}\")\n```\n\n### 风险监控指标\n\n- 风险评估准确性\n- 风险预警及时性\n- 风险控制有效性\n- 损失预测精度\n- 风险调整收益\n\n## 扩展指南\n\n### 添加新的风险分析师\n\n1. **创建新的风险分析师文件**\n```python\n# tradingagents/agents/risk_mgmt/new_risk_analyst.py\nfrom tradingagents.utils.tool_logging import log_risk_module\nfrom tradingagents.utils.logging_init import get_logger\n\nlogger = get_logger(\"default\")\n\ndef create_new_risk_analyst(llm):\n    @log_risk_module(\"new_risk_type\")\n    def new_risk_node(state):\n        # 新的风险分析逻辑\n        pass\n    \n    return new_risk_node\n```\n\n2. **集成到风险管理系统**\n```python\n# 在相应的图配置中添加新的风险分析师\nfrom tradingagents.agents.risk_mgmt.new_risk_analyst import create_new_risk_analyst\n\nnew_risk_analyst = create_new_risk_analyst(llm)\n```\n\n## 最佳实践\n\n### 1. 全面风险识别\n- 系统性识别各类风险\n- 定期更新风险清单\n- 关注新兴风险因素\n- 建立风险分类体系\n\n### 2. 量化风险管理\n- 使用多种风险指标\n- 定期校准风险模型\n- 进行回测验证\n- 持续优化参数\n\n### 3. 动态风险控制\n- 实时监控风险水平\n- 及时调整风险敞口\n- 灵活应对市场变化\n- 保持风险预算平衡\n\n### 4. 透明风险沟通\n- 清晰传达风险信息\n- 定期发布风险报告\n- 及时发出风险预警\n- 提供风险教育培训\n\n## 故障排除\n\n### 常见问题\n\n1. **风险分析失败**\n   - 检查输入数据完整性\n   - 验证LLM连接状态\n   - 确认股票市场信息获取\n   - 检查日志记录\n\n2. **风险评估不准确**\n   - 更新风险模型参数\n   - 增加历史数据样本\n   - 调整风险因子权重\n   - 优化评估算法\n\n3. **风险控制过度保守**\n   - 调整风险容忍度参数\n   - 平衡风险与收益目标\n   - 优化仓位管理策略\n   - 考虑市场环境变化\n\n### 调试技巧\n\n1. **风险分析调试**\n```python\nlogger.debug(f\"风险分析输入: 公司={company_name}, 类型={stock_type}\")\nlogger.debug(f\"风险因素识别: {risk_factors}\")\nlogger.debug(f\"风险评估结果: {risk_assessment}\")\n```\n\n2. **状态验证**\n```python\nlogger.debug(f\"状态检查: 基本面报告长度={len(fundamentals_report)}\")\nlogger.debug(f\"状态检查: 市场报告长度={len(market_report)}\")\nlogger.debug(f\"状态检查: 交易员建议={trader_recommendation[:100]}...\")\n```\n\n风险管理团队作为TradingAgents框架的安全守护者，通过全面的风险识别、评估和控制，确保投资决策在可控风险范围内进行，为投资组合的长期稳健增长提供重要保障。\n\n<!-- File: docs/agents/v0.1.13/trader.md (Tokens: ~5004 | Category: subagent-persona) -->\n# 交易员\n\n## 概述\n\n交易员是 TradingAgents 框架的执行层核心，负责基于研究员团队的辩论结果和管理层的投资计划，生成具体的投资建议和交易决策。交易员将所有前期分析和决策转化为可执行的投资行动，包括具体的目标价位、置信度评估和风险评分。\n\n## 交易员架构\n\n### 基础设计\n\n交易员基于统一的架构设计，集成了多维度分析能力和决策执行功能：\n\n```python\n# 统一的交易员模块日志装饰器\nfrom tradingagents.utils.tool_logging import log_trader_module\n\n# 统一日志系统\nfrom tradingagents.utils.logging_init import get_logger\nlogger = get_logger(\"default\")\n\n@log_trader_module(\"trader\")\ndef trader_node(state):\n    # 交易员逻辑实现\n    pass\n```\n\n### 智能体状态管理\n\n交易员通过 `AgentState` 获取完整的分析链条信息：\n\n```python\nclass AgentState:\n    company_of_interest: str      # 股票代码\n    trade_date: str              # 交易日期\n    fundamentals_report: str     # 基本面报告\n    market_report: str           # 市场分析报告\n    news_report: str             # 新闻分析报告\n    sentiment_report: str        # 情绪分析报告\n    investment_plan: str         # 投资计划\n    messages: List              # 消息历史\n```\n\n## 交易员实现\n\n### 核心功能\n\n**文件位置**: `tradingagents/agents/trader/trader.py`\n\n**核心职责**:\n- 综合分析所有输入信息\n- 生成具体的投资建议\n- 提供目标价位和置信度\n- 评估投资风险等级\n- 制定执行策略\n\n### 核心实现逻辑\n\n```python\ndef create_trader(llm):\n    @log_trader_module(\"trader\")\n    def trader_node(state):\n        # 获取基础信息\n        company_name = state[\"company_of_interest\"]\n        investment_plan = state.get(\"investment_plan\", \"\")\n        \n        # 获取股票市场信息\n        from tradingagents.utils.stock_utils import StockUtils\n        market_info = StockUtils.get_market_info(company_name)\n        \n        # 确定股票类型和货币信息\n        if market_info.get(\"is_china\"):\n            stock_type = \"A股\"\n            currency_unit = \"人民币\"\n        elif market_info.get(\"is_hk\"):\n            stock_type = \"港股\"\n            currency_unit = \"港币\"\n        elif market_info.get(\"is_us\"):\n            stock_type = \"美股\"\n            currency_unit = \"美元\"\n        else:\n            stock_type = \"未知市场\"\n            currency_unit = \"未知货币\"\n        \n        # 获取各类分析报告\n        market_report = state.get(\"market_report\", \"\")\n        sentiment_report = state.get(\"sentiment_report\", \"\")\n        news_report = state.get(\"news_report\", \"\")\n        fundamentals_report = state.get(\"fundamentals_report\", \"\")\n        \n        # 构建交易决策提示\n        trader_prompt = f\"\"\"\n        作为专业交易员，请基于以下信息生成投资建议：\n        \n        公司名称: {company_name}\n        股票类型: {stock_type}\n        货币单位: {currency_unit}\n        \n        投资计划: {investment_plan}\n        \n        市场研究报告: {market_report}\n        情绪报告: {sentiment_report}\n        新闻报告: {news_report}\n        基本面报告: {fundamentals_report}\n        \n        请提供：\n        1. 明确的投资建议（买入/卖出/持有）\n        2. 具体目标价位（以{currency_unit}计价）\n        3. 置信度评估（0-100%）\n        4. 风险评分（1-10分）\n        5. 详细推理过程\n        \"\"\"\n        \n        # 调用LLM生成交易决策\n        response = llm.invoke(trader_prompt)\n        \n        return {\"trader_recommendation\": response.content}\n```\n\n## 决策输入分析\n\n### 多维度信息整合\n\n交易员需要综合处理来自多个源头的信息：\n\n1. **投资计划** (`investment_plan`)\n   - 来源：研究管理员的综合决策\n   - 内容：基于辩论结果的投资建议\n   - 作用：提供决策框架和方向指导\n\n2. **市场研究报告** (`market_report`)\n   - 来源：市场分析师\n   - 内容：技术指标、价格趋势、交易信号\n   - 作用：提供技术面分析支持\n\n3. **情绪报告** (`sentiment_report`)\n   - 来源：社交媒体分析师\n   - 内容：投资者情绪、舆论趋势\n   - 作用：评估市场情绪影响\n\n4. **新闻报告** (`news_report`)\n   - 来源：新闻分析师\n   - 内容：重要新闻事件、政策影响\n   - 作用：识别催化因素和风险事件\n\n5. **基本面报告** (`fundamentals_report`)\n   - 来源：基本面分析师\n   - 内容：财务数据、估值分析\n   - 作用：提供价值投资依据\n\n### 信息权重分配\n\n```python\n# 信息权重配置示例\ninfo_weights = {\n    \"investment_plan\": 0.35,      # 投资计划权重最高\n    \"fundamentals_report\": 0.25,  # 基本面分析\n    \"market_report\": 0.20,        # 技术分析\n    \"news_report\": 0.15,          # 新闻影响\n    \"sentiment_report\": 0.05       # 情绪分析\n}\n```\n\n## 股票类型支持\n\n### 多市场交易能力\n\n交易员支持全球主要股票市场的交易决策：\n\n```python\n# 市场信息获取和处理\nfrom tradingagents.utils.stock_utils import StockUtils\nmarket_info = StockUtils.get_market_info(company_name)\n\n# 根据市场类型调整交易策略\nif market_info.get(\"is_china\"):\n    # A股交易特点\n    trading_hours = \"09:30-15:00 (北京时间)\"\n    price_limit = \"±10% (ST股票±5%)\"\n    settlement = \"T+1\"\n    currency = \"人民币(CNY)\"\n    \nelif market_info.get(\"is_hk\"):\n    # 港股交易特点\n    trading_hours = \"09:30-16:00 (香港时间)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"港币(HKD)\"\n    \nelif market_info.get(\"is_us\"):\n    # 美股交易特点\n    trading_hours = \"09:30-16:00 (EST)\"\n    price_limit = \"无涨跌停限制\"\n    settlement = \"T+2\"\n    currency = \"美元(USD)\"\n```\n\n### 本土化交易策略\n\n1. **A股市场特色**:\n   - 涨跌停板制度考虑\n   - T+1交易制度影响\n   - 政策敏感性分析\n   - 散户投资者行为特点\n\n2. **港股市场特色**:\n   - 中港资金流动\n   - 汇率风险管理\n   - 国际投资者参与\n   - 估值差异套利\n\n3. **美股市场特色**:\n   - 盘前盘后交易\n   - 期权策略考虑\n   - 机构投资者主导\n   - 全球经济影响\n\n## 决策输出规范\n\n### 标准输出格式\n\n交易员必须提供结构化的投资建议：\n\n```python\nclass TradingRecommendation:\n    action: str              # 投资行动 (买入/卖出/持有)\n    target_price: float      # 目标价位\n    confidence: float        # 置信度 (0-100%)\n    risk_score: int          # 风险评分 (1-10)\n    reasoning: str           # 详细推理\n    time_horizon: str        # 投资时间框架\n    stop_loss: float         # 止损价位\n    take_profit: float       # 止盈价位\n```\n\n### 强制要求\n\n根据代码实现，交易员必须提供：\n\n1. **具体目标价位**\n   - 必须以相应货币单位计价\n   - 基于综合分析的合理估值\n   - 考虑市场流动性和交易成本\n\n2. **置信度评估**\n   - 0-100%的数值范围\n   - 反映决策的确定性程度\n   - 基于信息质量和分析深度\n\n3. **风险评分**\n   - 1-10分的评分体系\n   - 1分为最低风险，10分为最高风险\n   - 综合考虑各类风险因素\n\n4. **详细推理**\n   - 完整的决策逻辑链条\n   - 关键假设和依据说明\n   - 风险因素识别和应对\n\n## 决策流程\n\n### 1. 信息收集阶段\n\n```mermaid\ngraph LR\n    A[投资计划] --> E[信息整合]\n    B[基本面报告] --> E\n    C[市场报告] --> E\n    D[新闻&情绪报告] --> E\n    E --> F[综合分析]\n```\n\n### 2. 分析处理阶段\n\n```mermaid\ngraph TB\n    A[综合信息] --> B[市场类型识别]\n    B --> C[交易规则适配]\n    C --> D[风险评估]\n    D --> E[价格目标计算]\n    E --> F[置信度评估]\n```\n\n### 3. 决策生成阶段\n\n```mermaid\ngraph LR\n    A[分析结果] --> B[投资建议]\n    B --> C[目标价位]\n    B --> D[风险评分]\n    B --> E[执行策略]\n    C --> F[最终决策]\n    D --> F\n    E --> F\n```\n\n## 风险管理\n\n### 风险评估维度\n\n1. **市场风险**:\n   - 系统性风险评估\n   - 行业周期风险\n   - 流动性风险\n   - 波动率风险\n\n2. **信用风险**:\n   - 公司财务风险\n   - 债务违约风险\n   - 管理层风险\n   - 治理结构风险\n\n3. **操作风险**:\n   - 交易执行风险\n   - 技术系统风险\n   - 人为操作风险\n   - 合规风险\n\n4. **特殊风险**:\n   - 政策监管风险\n   - 汇率风险\n   - 地缘政治风险\n   - 黑天鹅事件\n\n### 风险控制措施\n\n```python\n# 风险控制参数\nrisk_controls = {\n    \"max_position_size\": 0.05,    # 最大仓位比例\n    \"stop_loss_ratio\": 0.08,      # 止损比例\n    \"take_profit_ratio\": 0.15,    # 止盈比例\n    \"max_drawdown\": 0.10,         # 最大回撤\n    \"correlation_limit\": 0.70     # 相关性限制\n}\n```\n\n## 性能评估\n\n### 关键指标\n\n1. **准确性指标**:\n   - 预测准确率\n   - 目标价位达成率\n   - 方向判断正确率\n   - 时间框架准确性\n\n2. **收益指标**:\n   - 绝对收益率\n   - 相对基准收益\n   - 风险调整收益\n   - 夏普比率\n\n3. **风险指标**:\n   - 最大回撤\n   - 波动率\n   - VaR值\n   - 风险评分准确性\n\n### 性能监控\n\n```python\n# 交易性能追踪\nclass TradingPerformance:\n    def __init__(self):\n        self.trades = []\n        self.accuracy_rate = 0.0\n        self.total_return = 0.0\n        self.max_drawdown = 0.0\n        self.sharpe_ratio = 0.0\n    \n    def update_performance(self, trade_result):\n        # 更新性能指标\n        pass\n    \n    def generate_report(self):\n        # 生成性能报告\n        pass\n```\n\n## 配置选项\n\n### 交易员配置\n\n```python\ntrader_config = {\n    \"risk_tolerance\": \"moderate\",     # 风险容忍度\n    \"investment_style\": \"balanced\",   # 投资风格\n    \"time_horizon\": \"medium\",         # 投资时间框架\n    \"position_sizing\": \"kelly\",       # 仓位管理方法\n    \"rebalance_frequency\": \"weekly\"   # 再平衡频率\n}\n```\n\n### 市场配置\n\n```python\nmarket_config = {\n    \"trading_hours\": {\n        \"china\": \"09:30-15:00\",\n        \"hk\": \"09:30-16:00\",\n        \"us\": \"09:30-16:00\"\n    },\n    \"settlement_days\": {\n        \"china\": 1,\n        \"hk\": 2,\n        \"us\": 2\n    },\n    \"commission_rates\": {\n        \"china\": 0.0003,\n        \"hk\": 0.0025,\n        \"us\": 0.0005\n    }\n}\n```\n\n## 日志和监控\n\n### 详细日志记录\n\n```python\n# 交易员活动日志\nlogger.info(f\"💼 [交易员] 开始分析股票: {company_name}\")\nlogger.info(f\"📈 [交易员] 股票类型: {stock_type}, 货币: {currency_unit}\")\nlogger.debug(f\"📊 [交易员] 投资计划: {investment_plan[:100]}...\")\nlogger.info(f\"🎯 [交易员] 生成投资建议完成\")\n```\n\n### 决策追踪\n\n```python\n# 决策过程记录\ndecision_log = {\n    \"timestamp\": datetime.now(),\n    \"ticker\": company_name,\n    \"market_type\": stock_type,\n    \"input_reports\": {\n        \"fundamentals\": len(fundamentals_report),\n        \"market\": len(market_report),\n        \"news\": len(news_report),\n        \"sentiment\": len(sentiment_report)\n    },\n    \"decision\": {\n        \"action\": action,\n        \"target_price\": target_price,\n        \"confidence\": confidence,\n        \"risk_score\": risk_score\n    }\n}\n```\n\n## 扩展指南\n\n### 添加新的交易策略\n\n1. **创建策略类**\n```python\nclass CustomTradingStrategy:\n    def __init__(self, config):\n        self.config = config\n    \n    def generate_recommendation(self, state):\n        # 自定义交易逻辑\n        pass\n    \n    def calculate_position_size(self, confidence, risk_score):\n        # 仓位计算逻辑\n        pass\n```\n\n2. **集成到交易员**\n```python\n# 在trader.py中添加策略选择\nstrategy_map = {\n    \"conservative\": ConservativeStrategy(),\n    \"aggressive\": AggressiveStrategy(),\n    \"custom\": CustomTradingStrategy()\n}\n\nstrategy = strategy_map.get(config.get(\"strategy\", \"balanced\"))\n```\n\n### 添加新的风险模型\n\n1. **实现风险模型接口**\n```python\nclass RiskModel:\n    def calculate_risk_score(self, market_data, fundamentals):\n        pass\n    \n    def estimate_var(self, position, confidence_level):\n        pass\n    \n    def suggest_position_size(self, risk_budget, expected_return):\n        pass\n```\n\n2. **注册风险模型**\n```python\nrisk_models = {\n    \"var\": VaRRiskModel(),\n    \"monte_carlo\": MonteCarloRiskModel(),\n    \"factor\": FactorRiskModel()\n}\n```\n\n## 最佳实践\n\n### 1. 决策一致性\n- 保持决策逻辑的一致性\n- 避免情绪化决策\n- 基于数据和分析\n- 记录决策依据\n\n### 2. 风险控制\n- 严格执行止损策略\n- 分散投资风险\n- 定期评估风险敞口\n- 及时调整仓位\n\n### 3. 性能优化\n- 持续监控交易表现\n- 定期回测策略效果\n- 优化决策模型\n- 学习市场变化\n\n### 4. 合规管理\n- 遵守交易规则\n- 满足监管要求\n- 保持透明度\n- 记录完整审计轨迹\n\n## 故障排除\n\n### 常见问题\n\n1. **决策质量问题**\n   - 检查输入数据质量\n   - 验证分析逻辑\n   - 调整权重配置\n   - 增加验证步骤\n\n2. **风险控制失效**\n   - 检查风险参数设置\n   - 验证止损机制\n   - 评估相关性计算\n   - 更新风险模型\n\n3. **性能问题**\n   - 优化决策算法\n   - 减少计算复杂度\n   - 启用结果缓存\n   - 并行处理分析\n\n### 调试技巧\n\n1. **决策过程追踪**\n```python\nlogger.debug(f\"输入信息完整性: {check_input_completeness(state)}\")\nlogger.debug(f\"市场信息: {market_info}\")\nlogger.debug(f\"决策权重: {info_weights}\")\n```\n\n2. **结果验证**\n```python\nlogger.debug(f\"目标价位合理性: {validate_target_price(target_price)}\")\nlogger.debug(f\"风险评分一致性: {validate_risk_score(risk_score)}\")\n```\n\n3. **性能监控**\n```python\nimport time\nstart_time = time.time()\n# 执行交易决策\nend_time = time.time()\nlogger.debug(f\"决策耗时: {end_time - start_time:.2f}秒\")\n```\n\n交易员作为TradingAgents框架的最终执行层，承担着将所有分析和研究转化为具体投资行动的重要职责，其决策质量直接影响整个系统的投资表现。\n</yakaai_skills>"}