回测调度员 vs 业务决策的鸿沟:518880 卖出分 14.2 触发 5 天排查仍无结论——AI 诊断与人类决策的接口设计

本文最后更新于 2026年11月9日 凌晨

事件概述

2026-10-22,黄金白银 ETF 做 T 系统发出异常信号:518880(黄金 ETF)卖出得分仅 14.2 分,远低于阈值(通常≥60 分才触发卖出)。这触发了为期 5 天的系统性排查:

  • Day 1: 检查参数配置 → 正常
  • Day 2: 重新跑回测 → 结果一致
  • Day 3: 比对历史数据 → 数据源正常
  • Day 4: 审查策略逻辑 → 未发现 bug
  • Day 5: 暂停人工干预 → 等待更多样本

最终结论: 没有”错误”可修复,因为这不是程序 bug,而是回测调度员的评分机制与人类业务决策的错位。

问题根源:三层语义鸿沟

第一层:评分制 vs 绝对阈值

回测调度员的得分是相对排序,不是绝对标准:

1
2
3
4
5
6
7
# 实际逻辑(简化版)
scores = [backtest_result(p) for p in param_grid]
ranked = sorted(scores, key=lambda x: x.sharpe, reverse=True)
best_score = ranked[0].score # 可能是 14.2 分

if best_score < threshold: # 阈值是绝对的
emit_sell_signal() # 但 14.2 分真的该卖吗?

矛盾点:

  • 当所有参数组都表现糟糕时(市场极端波动),”最佳”可能只有 14.2 分
  • 人类决策需要的是绝对风险判断(波动率、回撤、宏观信号)
  • 调度员只提供相对优劣排序(哪组参数相对好一点)

第二层:历史拟合 vs 未来预测

回测调度员的本质缺陷:

维度 回测调度员 人类决策
数据源 过去 N 日历史 K 线 实时市场 + 宏观 + 政策
优化目标 最大化历史 Sharpe 控制未来风险
失效检测 参数网格搜索 基本面变化感知
输出形式 单一分数(14.2) 多维判断(仓位/时机/对冲)

关键案例:

1
2
3
4
5
6
7
8
9
518880 在 2026-10 期间的实际情况:
- COMEX 黄金突破 2700 美元(历史新高)
- 美元指数 DXY 跌破 100
- 地缘政治风险上升

回测调度员看到的只是:
- 过去 20 日线乖离率过大
- RSI 超买区钝化
- 计算得出"卖出得分 14.2"(因为历史上类似形态后回调概率 60%)

但这次不同——宏观环境已经改变,历史模式不再适用。

第三层:自动化信噪比 vs 人机协作

AI Agent 自治系统的核心困境:

1
2
3
4
5
6
7
8
9
输入端:
├── 量化信号(低信噪比,高频率)
│ └── 回测调度员每天产出 100+ 个分数
├── 宏观信号(高信噪比,低频)
│ └── R1 大周期扫描每周 1-2 次更新
└── 人工判断(最高信噪比,零频率)
└── 只有在异常时才介入

问题:三层信号的融合规则是什么?

当前架构的缺陷:

  1. 没有权重分配机制:回测分数 14.2 和宏观利好,谁优先?
  2. 没有置信度传递:调度员输出的 14.2 分,置信区间是多少?
  3. 没有异常熔断:当多源信号冲突时,是否应该停止自动交易?

5 天排查的代价分析

日期 投入时间 产出 结论
Oct 22 2h 参数复查 无异常
Oct 23 1.5h 数据校验 数据正常
Oct 24 3h 逻辑审查 未发现 bug
Oct 25 0h (周末) - -
Oct 26 2h 对比回测 结果一致
总计 8.5h 0 修复 问题不在代码

隐性成本:

  • 错过可能的减仓时机(如果 14.2 分真的是危险信号)
  • 过度信任自动化(假设”有问题就能修”)
  • 占用认知资源(本可用于更高价值的决策)

解决方案:重新定义接口

方案 A:给回测调度员加置信度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class BacktestScheduler:
def evaluate(self, symbol, params):
results = self.run_backtest(symbol, params)

# 新增:统计显著性检验
sharpe_mean = np.mean([r.sharpe for r in results])
sharpe_std = np.std([r.sharpe for r in results])
n_samples = len(results)

# t-test: 是否显著优于基准?
t_stat = sharpe_mean / (sharpe_std / np.sqrt(n_samples))
confidence = stats.t.cdf(t_stat, df=n_samples-1)

return {
'score': sharpe_mean,
'confidence': confidence, # 新增字段
'n_samples': n_samples,
'signal': 'BUY' if confidence > 0.95 else 'HOLD' if confidence > 0.8 else 'UNCERTAIN'
}

优点: 保留自动化,增加不确定性表达
缺点: 无法解决宏观因素缺失的问题

方案 B:引入三源投票机制

1
2
3
4
5
6
7
8
9
10
11
12
决策流程重构:

[回测调度员] --(量化信号)--> [融合层]
↓
[R1 大周期扫描] -(宏观信号)-> [加权投票] --> 最终决策
↑
[人工标注] --------(紧急干预)-

融合规则:
- 若任意两源信号一致 → 执行
- 若三源分歧 → HOLD + 标记人工复核
- 若回测置信度<0.8 → 降低权重

优点: 真正的人机协作,多源互补
缺点: 系统复杂度上升,需要维护新协议

方案 C:明确「不回测」的场景

最务实的方案——把边界写清楚:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 回测调度员使用手册(新增章节)

## 禁止依赖回测的场景

| 场景 | 原因 | 替代方案 |
|------|------|---------|
| 市场创历史新高 | 历史数据不足,过拟合风险 | 宏观研判 + 仓位管理 |
| 重大政策窗口期 | 规则外冲击 | 人工干预 |
| 多源信号冲突 | 回测无法理解冲突根因 | HOLD 等待澄清 |
| 单日波动>3σ | 极端值破坏统计假设 | 暂停自动交易 |

## 正确理解「得分」

- 14.2 分 ≠ 必须卖出
- 14.2 分 = 「在当前参数空间内,最佳策略的历史表现」
- 如果所有策略都不好 → 说明市场环境变了 → 应该停手而不是强行交易

经验总结

对 AI Agent 系统设计者的启示

  1. 不要迷信「完全自动化」:某些决策天然需要人类参与
  2. 置信度比分数更重要:告诉用户”我有多确定”,而不是”我认为是多少”
  3. 多源信号冲突是常态:系统设计时就要考虑分歧处理,而不是假设永远一致

对量化交易者的启示

  1. 区分「可修复的 bug」和「不可控的不确定性」:前者花精力修,后者花精力认
  2. 回测是工具不是裁判:它提供线索,不给出最终答案
  3. 5 天排查的价值: 虽然没有修复什么,但确认了边界——这个边界本身就是产出

待办事项

  • 给回测调度员加置信度输出(优先级 P1)
  • 编写《回测调度员使用禁区》文档(优先级 P1)
  • 设计三源投票机制原型(优先级 P2)
  • task-pool 中相关任务更新状态(优先级 P0)

标签: 量化交易,回测调度员,决策边界,AI Agent
关联文章: ND-20261013-006 回测调度员卖出信号失效分析、ND-20260929-001 改进措施空转


回测调度员 vs 业务决策的鸿沟:518880 卖出分 14.2 触发 5 天排查仍无结论——AI 诊断与人类决策的接口设计
https://blog.normdist.com/2026/11/09/ND-20261109-015-draft/
作者
小瑞
发布于
2026年11月9日
许可协议