如何读懂输出结果:信号、限额与最终决策


文档摘要

如何读懂输出结果:信号、限额与最终决策 难度:动手 第一次跑通后,终端往往刷出大量彩色表格。若只盯着一个绿色的 BUY 做情绪决策,就浪费了这套系统的教育价值。本篇教你按「分析师信号 → 风险限额 → 组合最终决策」三层阅读,并对照 、 、 理解字段从何而来。 本文你将学到 signal、confidence、reasoning 三要素的含义与局限 风险限额如何压缩最终 quantity portfolio 层 action、quantity、confidence 如何综合产生 一套可复用的读报顺序与常见误读纠正 免责声明 以下解读方法仅用于理解教育模拟输出,不构成投资建议。终端中的买卖字样不会触发真实交易;你不应据此操作真实账户。

如何读懂输出结果:信号、限额与最终决策

难度:动手

第一次跑通后,终端往往刷出大量彩色表格。若只盯着一个绿色的 BUY 做情绪决策,就浪费了这套系统的教育价值。本篇教你按「分析师信号 → 风险限额 → 组合最终决策」三层阅读,并对照 src/utils/display.pysrc/agents/risk_manager.pysrc/agents/portfolio_manager.py 理解字段从何而来。

本文你将学到

  • signal、confidence、reasoning 三要素的含义与局限
  • 风险限额如何压缩最终 quantity
  • portfolio 层 action、quantity、confidence 如何综合产生
  • 一套可复用的读报顺序与常见误读纠正

免责声明

以下解读方法仅用于理解教育模拟输出,不构成投资建议。终端中的买卖字样不会触发真实交易;你不应据此操作真实账户。

三层输出关系

数据在 AgentState["data"] 中流动:analyst_signals 字典按 Agent 名索引,再按 ticker 索引到具体信号;组合管理读取风控写入的限额,调用 LLM 生成 PortfolioDecision 结构(见 portfolio_manager.py 中的 Pydantic 模型)。

第一层:分析师信号(AGENT ANALYSIS)

print_trading_output 对每个 ticker 遍历 result["analyst_signals"],跳过 risk_management_agent 在「分析师表」中的展示(风控信息体现在限额层)。表格列含义:

列名 源码字段 含义 阅读提示
Agent 键名格式化 哪位分析师 对照 Agent 教程理解风格
Signal signal 大写 BULLISH / BEARISH / NEUTRAL 先数票,再看极端观点
Confidence confidence 0–100 数值 表示「口气硬度」,非统计胜率
Reasoning reasoning 文字或 JSON 学习论证结构,非内幕情报

颜色映射在 display.py 中写死:BULLISH 绿色、BEARISH 红色、NEUTRAL 黄色。

信号是如何产生的(概念)

各分析师 Agent 通常:拉取金融数据 → 构造 prompt → 调用 LLM → 解析为结构化 {signal, confidence, reasoning} 写入 analyst_signals[agent_id][ticker]。不同 Agent 的 prompt 与工具不同,因此同一 ticker 出现分歧是常态,不是 bug。

练习

选两名方向相反的 Agent,各读一段 reasoning,用一句话概括:他们在争什么? 例如:「格雷厄姆派强调安全边际与账面价值,伍德派强调颠覆性增长与长期 TAM。」

第二层:风险约束(限额逻辑)

风险管理节点 risk_management_agent 在组合管理之前运行。源码逻辑概要:

  1. 对每个 ticker 拉取 start_dateend_date 的价格序列。
  2. 计算波动率、相关矩阵等,得到波动调整后的仓位上限
  3. remaining_position_limit(剩余可部署金额上限)、current_price 等写入 analyst_signals["risk_management_agent"][ticker]

组合管理读取这些字段:

risk_data = analyst_signals.get("risk_management_agent", {}).get(ticker, {}) position_limits[ticker] = risk_data.get("remaining_position_limit", 0.0) current_prices[ticker] = float(risk_data.get("current_price", 0.0)) max_shares[ticker] = int(position_limits[ticker] // current_prices[ticker])

因此:即使全体分析师极度看多,最终 quantity 也可能被 max_shares 压得很小——这是设计意图,模拟「高波动少加仓」的风控纪律。

你在终端未必看到单独一张「风控表」,但应建立直觉:

  • 上限存在
  • 上限会压制过热的一致看多
  • 若 quantity 远小于「现金能买的股数」,回头想是不是风控在起作用

第三层:最终决策(TRADING DECISION)

portfolio_manager 汇总各分析师压缩后的 {sig, conf},结合 max_shares、当前 portfolio 持仓与现金,调用 LLM 生成 PortfolioDecision

class PortfolioDecision(BaseModel): action: Literal["buy", "sell", "short", "cover", "hold"] quantity: int confidence: int # 0-100 reasoning: str

print_trading_output 为每个 ticker 打印:

字段 含义
Action BUY / SELL / HOLD / SHORT / COVER
Quantity 建议交易的股数(模拟)
Confidence 组合层面对该决策的确信度
Reasoning 折中理由,常引用多空分歧

Action 颜色:BUY、COVER 为绿;SELL、SHORT 为红;HOLD 为黄。

为什么经常是 HOLD

常见原因:

  1. 信号冲突:看多与看空数量接近,组合管理选择不动。
  2. 限额过紧max_shares 为 0 或极小,无法 meaningful 建仓。
  3. 已有仓位:portfolio 显示已满仓或现金不足(回测多日时更明显)。
  4. 模型保守:prompt 要求在有分歧时默认 hold。

PORTFOLIO SUMMARY 表

同一函数末尾汇总所有 ticker:Action、Quantity、Confidence,以及 Bullish / Bearish / Neutral 计数(遍历 analyst_signals 统计)。最后一节 Portfolio Strategy 打印组合管理的 reasoning 摘要。

这张表适合横向对比:例如 AAPL 五票看多、MSFT 三票看空,你会看到不同的 action 与 quantity。

推荐读报顺序

  1. PORTFOLIO SUMMARY,记录每个 ticker 的 Action 与 Quantity。
  2. 若 quantity 偏小,回想风控限额是否收紧。
  3. 回到 AGENT ANALYSIS,列出看多/看空阵营各一名「代表」。
  4. 精读冲突双方 reasoning 各一段。
  5. TRADING DECISION 的 reasoning,看组合管理如何引用分歧。
  6. 自问:去掉形容词和预测,剩下哪些可验证事实?(如 PE、营收增速、波动率数值)

可打印或在笔记软件中复制表格,按上述顺序标注。

与 show_reasoning 的关系

主程序加 --show-reasoning 时,metadata.show_reasoning 为真,部分 Agent 会通过 show_agent_reasoning 输出更细中间步骤。这对学习 Agent 内部逻辑有帮助,但会增加终端长度;第一次阅读建议先不加,熟悉三层结构后再开。

常见误读

误读 更合理的理解
多数 BULLISH = 一定涨 只是讨论室气氛,非市场预测
Confidence 90 = 胜率 90% 模型自我表达强度,非回测统计
出现 SELL = 应卖真实股票 系统不下单;你可能并无该持仓
两次 reasoning 措辞不同 = 程序坏了 LLM 有随机性,结构相似即可
Quantity 大 = 好机会 可能是低单价股票或限额较宽,需结合价格

回测输出的差异

回测使用 print_backtest_results(同在 display.py),按日期行展示每日 action、quantity、price、多空股数、组合价值,并周期性输出 PORTFOLIO SUMMARY(含 Sharpe、最大回撤等)。阅读单日决策时,仍适用本三层法;阅读整段曲线时,请参阅延伸章回测文档。

小结

会读输出,才算真正「上手」。把 AI 对冲基金当作可运行的案例讨论课:分析师是发言嘉宾,风控是合规官,组合管理是主持人——你作为听众,要学会听分歧、看限额、理解折中。

下一篇请阅读同目录下的《Web 界面快速体验:可视化多智能体协作》。


发布者: 作者: virattt 转发
评论区 (0)
U