50 倍的变化,但不是 50 倍的生产力
2018 年,一个严肃的量化策略从想法到验证回测,需要 PhD 研究员花 2-6 个月。2026 年,同一个人用 LLM stack 一个晚上就能完成。
50 倍的工作单元变化。 这改变了一切下游:什么边缘是可发现的、它们 decay 多快、什么技能重要。
但更快生成没有更快验证,不是 50 倍生产力增益。它是 50 倍统计垃圾放大器。这篇文章是那个新世界的工程师手册。
架构:六 Agent + 一 Orchestrator
每个 Agent 是一个 Claude API 调用,带严格角色提示、狭窄工具范围和清晰验收标准。Orchestrator 运行循环:
假设 → 数据 → 代码 → 回测 → 批判 → 风险检查 → 记忆 → 下一个假设
| Agent | 角色 | 工具 |
|---|---|---|
| Hypothesis | 生成带命名机制的经济故事 | 网页搜索、过去失败记忆 |
| Data | 获取、对齐、时点修正、工程特征 | 数据加载器、FeaturePipeline |
| Code | 写向量化回测,正确 shift(1) 和成本 | 代码执行沙盒 |
| Critic | 对抗性审查泄漏、过拟合、p-hacking | 代码阅读器、指标分析器 |
| Risk | 仓位大小、检查与现有组合的相关性 | 组合状态 |
| Memory | 追踪每次尝试,多重检验负担可知 | 尝试数据库 |
三个硬门槛,任何策略上线前必须通过:
- Critic 通过结构审查
- Deflated Sharpe 清除多重检验门槛
- Risk agent 确认组合级适配
核心工程组件
向量化回测引擎
最关键的一行:position = signal.shift(1)。在 bar t 的收盘决策,在 bar t+1 的开盘交易。没有这个 shift = lookahead bias。
回测配置包括:初始资金、往返费用(basis points)、滑点、最大杠杆、年化因子。
性能指标
标准指标:Sharpe、Sortino、Calmar、年化收益/波动、最大回撤、偏度、超额峰度、胜率、平均盈亏、profit factor。
三个大多数人忽略但不该忽略的指标:
- 超额峰度 > 3:肥尾(你的 Sharpe 2 策略在隐藏崩盘风险)
- Calmar:LP 关心的(恢复心理学)
- Profit factor:区分稳健的趋势跟踪和脆弱的均值回归
事件驱动回测
逐 bar:策略看到 bar t,发出订单,订单在 bar t+1 开盘以滑点填充。结构上无 lookahead。
两个引擎应该在成本容忍范围内对同一策略达成一致。如果不一致,向量化引擎有 bug(通常是忘记 shift 或重复计算成本)。
真实成本模型
恒定 fee_bps 是谎言。真实成本取决于规模、波动性和场所:
成本 = 价差/2 + 平方根冲击 + 场所费用
用订单规模 sweep 这个模型。你的 "10M 时变成 Sharpe 0.4。这就是策略的容量。
特征工程:从结构上消除泄漏
每个测试过的 LLM 在生成特征代码时都引入了 lookahead bias。防御是结构性的:让泄漏在机械上不可能。
五种常见泄漏类型:
| # | 类型 | 示例 | 修复 |
|---|---|---|---|
| 1 | 居中窗口 | rolling(20, center=True) | 绝不 center=True |
| 2 | 忘记 shift(1) | 特征用 bar t 的收盘交易 bar t | signal.shift(1) 在 PnL 前 |
| 3 | 全样本标准化 | 训练/测试分割前对整个数据集 Z-score | 每 fold 重新拟合 scaler |
| 4 | 幸存者偏差 | 用今天的标普 500 回测 10 年历史 | 时点正确的指数成员 |
| 5 | 重述基本面 | 用 2013 年重述的 FY2010 收益 | 时点正确的数据供应商 |
FeaturePipeline 设计:每个特征只从严格过去的数据计算。
fn(window) -> scalar. window = data.iloc[t-lookback : t](仅过去)
Triple Barrier 标签
比"5 天后价格涨了吗?"更好,尊重路径、止损和止盈:
- +1 = 利润目标先命中
- -1 = 止损先命中
- 0 = 时间退出
交叉验证:时间序列的特殊处理
随机 k-fold 在时间序列上 = 未来数据训练预测过去的模型 = 膨胀的 Sharpe = 垃圾。
Walk-Forward 分割
训练 → 清除期 → 测试。清除期防止信息泄漏。
Degradation ratio = 样本外 Sharpe / 样本内 Sharpe。健康:0.6-0.8。低于 0.3 = 过拟合。高于 1.0 = 可疑(数据错误或幸运区间)。
组合净化交叉验证
45 条路径而非 5-10 fold。报告分布,不是均值。
Deflated Sharpe:多重检验校正
测试 10,000 个零边缘策略 → 纯运气下最佳样本内 Sharpe > 3.5。Deflated Sharpe 校正这一点:
硬门槛:dsr_pvalue < 0.95 = 策略不上线。无人可覆盖。
研究记忆
追踪每次尝试,让多重检验负担可知。随着尝试次数增加,deflated threshold 自动上升,越来越难以"偶然"通过。
核心洞察
这篇文章的价值不在代码(虽然代码很扎实),而在框架:
-
更快生成 ≠ 更快验证。LLM 可以一晚上生成 100 个策略,但如果验证基础设施没跟上,你只是更快地生产统计垃圾。
-
三个硬门槛是护城河。不是可选的优化,是不可协商的防线。
-
结构性防御 > 人工检查。FeaturePipeline 强制所有特征只用过去数据,不是依赖人记住检查 shift(1)。
-
成本模型决定容量。一个策略在 10M 时可能 Sharpe 0.4。不看容量谈 Sharpe 是耍流氓。
-
Deflated Sharpe 是生命线。在 AI 可以无限生成策略的世界里,多重检验校正从"高级技巧"变成"生存必需"。