16 — TradingAgents 式分析师实验(test_ta,2026-06-11)
问题:给委员会加基本面/情绪/新闻 3 个 TradingAgents 式分析师 subagent,有没有收益? 上限在哪?实验代码在分支
test_ta(不合 main),本页是结论的单一可信源。 结论先行:预注册 Gate 三个分析师 0/3 过线,集成阶段按预注册不触发; "确定性事实块进推理、不加投票/报告型 LLM 语音"的现有架构得到实验支持。 关联:12-verification.md、adr/009。
0. 为什么是这个设计(v1 被推翻的教训)
最初设计(直接跑 6 个委员会 draws 做 A/B/B1 对比)被五条 review 意见推翻,核心是 功效命门:122 决策日 × 35-45% 单跑 verdict 翻转噪声 → 大概率花 ¥90+12h 买一个 "测不出来";且新增 LLM 语音无法用"同一份 verdict 改策略"的消融退路事后剔噪。 其余四条:新闻分析师无 2024 存档会注水、基本面无历史 PE 是 Quant 换皮、B1 替换臂 双变量混杂、预算闸门可能撞线。
v2 重构为分阶段、贵的部分条件触发:
- Phase A 信号存在性(高功效,主结论来源):每个分析师独立对 244 个 (决策日×资产) 出带强制 STANCE 的报告,确定性打分 vs 前向收益。 n=244/分析师、SE≈3.2%——比委员会级 A/B 灵敏一个量级,且便宜
- Phase B 集成 A/B(低功效):仅 Phase A 有人过线才跑,只集成过线者
- Phase C 上限(剂量响应):仅 Phase B 阳性才跑,一臂一停
1. 数据标签表(Phase 0 可行性 spike)
| 分析师 | 数据源 | 标签 | 说明 |
|---|---|---|---|
| 情绪 | ^VIX 全历史滚动 2y 分位 + 资产 ATR 突变比(生产口径) | 真实 | point-in-time 干净 |
| 基本面-黄金 | CFTC COT 金期货非商业持仓周报(deacot 年档,免费) | 真实 | as_of+3 日发布滞后对齐;同日多合约取主力(OI 最大) |
| 基本面-NDX | OHLC 估值代理(2y 分位/MA 偏离/距 ATH)+ ^TNX | 降级 | 免费历史指数 PE 不存在(macrotrends 403) |
| 新闻 | GDELT 2.0 DOC API 历史档,决策日前 7 天头条 | 真实·降级 | 仅标题无正文;多语言混合;本机 IP 被重度限流(~75% 429),合并查询+多轮断点续抓收齐 |
被否决的源:WGC 央行购金/ETF 流向 xlsx(登录墙);macrotrends 指数 PE(403)。
2. 预注册判定标准(全量跑之前写死)
Phase A Gate(scripts/eval_ta_signal.py@test_ta):
- 主口径:30d 方向命中率(仅 stance≠neutral 样本),Wilson 95% CI
- 分析师"有信号" = CI 下界 > max(①同子集方向基率, ③输入数据机械映射点估计)
- ① 在该分析师自己表态的子集上算"永远猜多数方向"的命中率(同分母 paired)
- ③ 情绪=VIX 分位机械分档(≥0.85→bearish/≤0.35→bullish);基本面-金=COT 净持仓 4 周变化符号;基本面-NDX=2y 分位 ≥0.8→bearish/≤0.2→bullish;新闻无③只比①
- 赢不了"无脑猜多数方向"或赢不了自己输入的机械映射 → 不算 LLM 增量
- 0 个过线 → 不跑 Phase B;≥1 过线 → Phase B 只集成过线者
- (计划中提过的"②生产概率表方向"基线含全样本前视,弃用未计)
实现口径:每 (决策日×资产×分析师) 一次 LLM 调用(无辩论无委员会);决策日 = 与历史 A/B/C 消融完全相同的 122 个周频日(2024-01-01 → 2026-04-27);prompt 改编 TauricResearch/TradingAgents(Apache-2.0)analyst system messages;与生产委员会 同模型同温度(0.2);零前视(序列截断 / COT 滞后对齐 / 新闻窗 [asof−7d, asof])。
3. Phase A 结果(2026-06-11,732 条报告,0 条解析失败)
| 分析师 | 表态/总数 | 30d 命中 [95%CI] | 60d 命中 | ①基率 | ③机械映射 | 与③一致率 | Gate |
|---|---|---|---|---|---|---|---|
| fundamental | 147/244 (60%) | 50.3% [42.4, 58.3] | 52.4% | 70.7% | 49.8% (n=221) | 56% | FAIL |
| ├ GC=F | 95 | 50.5% | |||||
| └ NDQ.AX | 52 | 50.0% | |||||
| news | 148/244 (61%) | 57.4% [49.4, 65.1] | 58.3% | 73.0% | —(无③,比①) | — | FAIL |
| ├ GC=F | 84 | 58.3% | |||||
| └ NDQ.AX | 64 | 56.2% | |||||
| sentiment | 156/244 (64%) | 64.7% [57.0, 71.8] | 65.3% | 73.1% | 57.5% (n=106) | 49% | FAIL |
| ├ GC=F | 82 | 61.0% | |||||
| └ NDQ.AX | 74 | 68.9% |
成本:972k tokens(≈¥10-20),无委员会重跑。
4. Gate 判定与归因矩阵
Gate:0/3 过线 → Phase B/C 按预注册不触发。
逐分析师归因("是我们的问题还是实验设计的问题"):
| 分析师 | 归因 | 依据 |
|---|---|---|
| fundamental | 数据本身无 30d 方向信号(金,真数据)+ 实验设计降级(NDX) | 金:真 COT 数据下 LLM 50.5% 与机械映射 49.8% 双双 ≈ 抛硬币——不是 LLM 读不好,是这份数据在此窗口对 30d 方向就没信息量。NDX:估值代理与 Quant 维度重叠(设计已知降级),50.0% |
| news | 混合:部分实验设计(仅标题、多语噪声、分流粗),部分根本性(头条信息已被价格消化) | 57.4% 显著高于抛硬币但远低于 73% 基率;两种解释从本数据无法区分——真正公平的检验在前向实验(见 §6) |
| sentiment | 不是数据/实现问题,是"方向预测增量"这个目标本身 | 真数据 + LLM 确实做了非平凡解读(赢自己的机械映射 +7.2pp,与映射一致率仅 49%,常做逆向判读如 2024-08-05 恐慌底转多)——但在单边窗口里仍输给"无脑看多"。与系统既有结论一致:方向预测层面 LLM 边际极低(verdict 闭卷 ≈57%) |
对架构的含义:
- 现有路线(确定性事实块进推理 + 概率表锚方向 + LLM 当翻译/解读员)得到支持: 独立打分时 LLM 语音都赢不了基率,进了更噪的委员会辩论更不可能产生方向增量
- sentiment "赢机械映射但输基率"恰好说明 LLM 的价值在解读(contrarian 判断、 语境整合)而非方向投票——这正是事实块 + CIO 否决权的设计假设
- "subagents 上限"的回答:在本数据/窗口下,可交易方向增量意义上的上限是 0 个。剂量响应(+1/+3/+7)因 gate 未过未测——若未来某窗口有分析师过线, 按 Phase C 增量式设计再测
事后分解(post-hoc,非预注册——只用于归因不用于改判)
按表态方向拆开看(30d,n 为表态数):
| 分析师 | bearish 命中 | bearish 后 30d 中位 | bullish 命中 |
|---|---|---|---|
| sentiment | 16% (n=19) | +2.8% | 72% (n=137) |
| news | 21% (n=39) | +2.3% | 71% (n=109) |
| fundamental | 31% (n=80) | +1.3% | 73% (n=67) |
两个钉死结论的事实:①bullish 命中 71-73% ≈ 基率 73%——看多表态是牛市复读, 无择时含量;②bearish 表态在本窗口是反指标(喊空后市场中位继续涨)。 "sentiment 赢机械映射"的机制由此澄清:不是解读智慧可分离,而是它比 naive 恐慌映射更少喊空——在 V 型反弹频发的窗口里这恰好少错。与系统既有发现 (COVID 类 V 型里阻止买入有真实成本)互证。bearish 在真熊市窗口的表现未测。
5. 功效与局限(诚实声明)
- n=244/分析师,SE≈3.2%;30d 窗重叠 → 独立样本少于名义值
- 单边牛市窗口:2024-26 两资产 ~73% 的 30d 窗为正,"打赢基率"是高门槛—— 这是"有没有用"的正确门槛,但熊市窗口的结论未覆盖;sentiment 在震荡/熊市 可能不同 → 已补测,见 §8(2022 熊市窗口 + 跨模型复测矩阵)
- news 仅标题、fundamental-NDX 是代理——这两条 FAIL 的适用范围受此限制
单模型单温度;不同模型家族可能不同(未测)→ 已补测,见 §8- Phase B(集成损益)未跑——"集成后无增益"是从"信号不存在"推定的,不是直接测量
5b. 复测矩阵(2026-06-12,用户质疑驱动:"不可能是 0 个")
针对 §5 的三个盲区(单窗口/单模型/无 ensemble)补测。预注册扩展标准(裁决前 写死):跨模型 2/3 过线 = 信号存在但模型敏感;1/3 = 孤证不立维持原判。 (精确口径:2 个厂商 3 个模型——MiMo v2.5-pro 为生产同款;reasoner/chat 同属 DeepSeek 不同后训练。GDELT 2022 缓存 102/104 key,缺 2022-01-03 两 key 优雅降级。)
30d 命中 vs Gate(CI 下界 > max(①基率, ③机械映射))
| 窗口 × 模型 | fundamental | sentiment | news |
|---|---|---|---|
| 2024-26 × mimo-flash(原实验) | 50.3% FAIL | 64.7% FAIL | 57.4% FAIL |
| 2024-26 × deepseek-reasoner | 28.8% FAIL | 58.2% FAIL | 59.3% FAIL |
| 2022 熊市 × mimo-flash | 74.3% PASS | 48.3% FAIL | 50.9% FAIL |
| 2022 熊市 × deepseek-reasoner | 60.6% FAIL | 48.0% FAIL | 50.0% FAIL |
| 2022 熊市 × deepseek-chat(裁决) | 57.8% FAIL | — | — |
"直接加三个"补测(combined 联合分析师,2026-06-12 用户追问):一个 LLM 同时 读三份数据包再表态(③基线=sentiment/fundamental 机械映射一致票):
| 窗口 × mimo-flash | combined 30d 命中 | 同子集基率 | 对比单独最优 | 判定 |
|---|---|---|---|---|
| 2024-26 | 48.7% [41.6,55.8] | 73.3% | 比三个单独的都差(50.3/57.4/64.7) | FAIL |
| 2022 熊市 | 66.7% [55.9,76.0] | 61.7% | 比 fundamental 单独(74.3%)差 | FAIL |
机制:联合上下文不产生涌现,只放大风险叙事——2024 combined 喊空 98 次 (单独分析师 19-80 次)命中仅 27%;2022 则稀释了唯一有点信号的 fundamental (bullish 腿 85%→57%)。"逐个测无信号 ≠ 一起加有戏"被正面证伪:一起加更差。
判定:fundamental-2022 单模型过线,跨模型 1/3 → 孤证不立。ADR-009 维持原判。
机制发现(比矩阵本身更有用)
- "模型更强"假设出局且反向:reasoner 在 2024 窗口比 flash 更差 (fundamental 28.8%——118 个表态 107 个喊空,推理能力被用来给自己讲熊市 故事)。bullish 复读基率 / bearish 反指标的机制跨模型成立。
- flash-2022 的 PASS 长什么样:双腿都赢(bearish 68% / bullish 85%),但 赢的部分恰好是它偏离机械映射的 40% 判断;reasoner/ds-chat 与映射一致率 更高(74%/54%),命中收敛到映射本身(61.3%)≈ 把自己变成那条 if-else。 flash 的偏离是真解读还是窗口风格巧合,1/3 复现率倾向后者。
- ensemble 也是死路(2024 窗口,3 种组合全 FAIL):多数票 60.0% vs 基率 69.6%;一致票 80.0% vs 90.0%(三人一致时恰是行情最明显时);任一喊空否决 43.2%(最差)。共识强度与正确率不单调(3/3 看多→88.9% 涨,2/3→57.5%, 1/3→68.9%)——成员间无可加的独立信息。
- sentiment 跨窗口对称失败:2024 它的 bearish 是反指标,2022 它的 bullish 是反指标(38% 命中,熊市里"恐慌=抄底"一路接刀)。哪条腿逆 regime 大势, 哪条腿就是反指标——情绪无跨窗口稳定信号。
- news 熊市格收口:2022 两模型 50.9%/50.0% ≈ 抛硬币(2024 是 57-59% vs 基率 73)——两窗口×两模型一致指向"头条信息已被价格消化",§4 归因表 里"部分根本性"的判断升级为主解释;前向实验(§6)仍是公平检验。
- 值得留意的残余信号:③机械映射本身(COT 4 周变化符号 + 估值分位)在 2022 达 61.3% vs 基率 51.4%(n=62,CI 含基率,未达显著)。三个模型都向它 收敛。若做事实块(确定性、零 LLM 投票、regime 条件触发),是低成本前向 实验候选——与"数据进桌、LLM 不加票"架构一致。
成本:全部复测 ~1.6M tokens(reasoner×2 + flash 补 + ds-chat 裁决),约 ¥30-50。
6. 后续:新闻分析师前向实验队列
回测里新闻只有头条;公平的新闻检验是前向的:事件层(2026-05 起)在攒真实 新闻+stance,#26 指数→代理映射修复后 NDQ.AX 也能命中指数事件。攒 3-6 个月后可做 live A/B(同日双跑,事件 brief 有/无),届时回填本页。
7. 复现
已冻结的去 PII 复现包在 main:experiments/ta-analysts/(数据+脚本+基线+ SCHEMA,2540 条报告可直接 eval_ta_signal.py 复算 Gate,不用重跑 LLM)。 数据三角色约定见 experiments/README.md。
从零重跑(需实验活代码,仍在 test_ta 分支):
git checkout test_ta # 实验活代码(勿在委员会跑动时切分支)
uv run python scripts/ta_data.py cot # CFTC COT 缓存
uv run python scripts/ta_data.py fetch_news # GDELT 抓取(限流,数小时)
uv run python scripts/ta_phase_a.py # 732 次 LLM 调用(断点续跑)
uv run python scripts/eval_ta_signal.py # 预注册 Gate 判定Phase B 集成代码同在该分支(INVEST_TA_ANALYSTS flag,默认关=与 main 逐位等价, 有等价性测试),gate 过线时可直接复用。