AI 交易:经验教训 #129:通过深入研究发现的回测评估漏洞
发布: (2026年1月11日 GMT+8 07:17)
4 min read
原文: Dev.to
Source: Dev.to
背景
CEO 要求对 Anthropic 的 “Demystifying evals for AI agents” 文章进行深入研究,以判断其评估框架是否能提升我们的交易系统。
发现
在将该文章与我们现有基础设施对比分析时,研究发现 我们已有的评估基础设施比典型的 AI 代理评估更为严格,因为我们承担真实的金融责任。但研究也揭示了 我们现有评估系统中的关键缺陷:
已发现并修复的缺陷
缺陷 1:滑点模型被禁用
- 位置:
scripts/run_backtest_matrix.py - 问题:代码声明
slippage_model_enabled: True,但所有执行成本被硬编码为0.0。 - 影响:回测收益被高估了 20–50 %(参见
slippage_model.py文档)。 - 修复:在回测执行中集成真实的
SlippageModel,对交易应用滑点和费用。
# scripts/run_backtest_matrix.py
slippage_model_enabled = True
# before: execution_cost = 0.0
# after: execution_cost = SlippageModel.calculate(trade)
缺陷 2:缺少上下文的胜率(ll_118 违规)
- 位置:
scripts/run_backtest_matrix.py和输出 JSON 文件 - 问题:胜率单独显示,未附带平均回报,导致指标误导(例如 “80 % 胜率” 但平均回报为 –6.97 %)。
- 影响:对策略表现产生错误的信心。
- 修复:新增
avg_return_pct字段和win_rate_with_context,始终同时展示两者。
{
"win_rate": 0.80,
"avg_return_pct": -6.97,
"win_rate_with_context": "80 % win rate (‑6.97 % avg return)"
}
缺陷 3:缺失双向学习
- 位置:
src/analytics/live_vs_backtest_tracker.py - 问题:跟踪了实时滑点,但未将观察结果同步回回测假设。
- 影响:尽管有真实世界证据,仍使用过时的滑点假设。
- 修复:新增
sync_to_backtest_assumptions()方法和load_live_slippage_assumptions()用于回测。
# src/analytics/live_vs_backtest_tracker.py
def sync_to_backtest_assumptions():
live_slippage = load_live_slippage_assumptions()
backtest_config.update(slippage=live_slippage)
关键洞见
Anthropic 文章对评估 LLM 代理(如 Claude Code)有价值,但 不适用于交易系统。
我们的交易系统已经具备:
- 定量指标(夏普比、胜率、回撤)
- 生存门检验(95 % 资本保全)
- 19 种历史情景,包括崩盘回放
- 实时 vs. 回测追踪
- 异常检测
真正的价值在于发现实现缺陷,而不是采纳新的评估框架。
防范措施
- 代码必须 真正实现 文档中声称的功能(例如
slippage_model_enabled)。 - 必须 同时显示平均回报和胜率,遵循 ll_118。
- 实现 从生产到测试的双向反馈回路。
- 定期审计评估基础设施,防止静默失效。
变更文件
scripts/run_backtest_matrix.py– 集成滑点模型,新增avg_return_pct。src/analytics/live_vs_backtest_tracker.py– 添加双向学习函数。
标签
evaluation #backtest #slippage #win-rate #bidirectional-learning #system-audit
本课程由我们的 AI Trading 仓库 自动发布。