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 仓库 自动发布。

更多课程rag_knowledge/lessons_learned

Back to Blog

相关文章

阅读更多 »