VibeTradingVibeTrading
返回博客
Also available inEnglish
GuidesJuly 25, 202612 min read

回测 vs 实盘盈亏差距:为什么你的机器人实盘亏钱

本文理解为什么回测收益常与实盘结果不符,分析未来信息偏差、过拟合、滑点、手续费与流动性等根源,并学习如何通过更真实的建模、滚动样本外测试、模拟交易与差距监控来缩小这一差距,是量化交易者必须面对的课题,还给出判断回测结果是否足够可信的具体经验阈值。

#backtesting#live trading#slippage#overfitting#execution#risk
Risk Disclaimer: This content is for educational purposes only. Trading involves significant risk of loss. Past performance does not guarantee future results. Always do your own research before using any trading tool or strategy.

每个算法交易者最终都会面对同样失望:回测中 amazing 的策略实盘亏钱。回测与实盘盈亏之间的差距是量化交易最难的问题之一。理解原因是缩小差距的第一步。

为什么回测会说谎

回测是模拟。它们对过去做出假设。当假设过于乐观时,回测就变成幻想。常见问题包括:

  • 未来信息偏差:使用了当时 unavailable 的信息
  • 过拟合:与历史噪音过度优化
  • 幸存者偏差:只测试仍存在的公司
  • 缺失成本:忽略佣金、手续费和滑点
  • 完美成交:假设订单按期望价格执行

实盘差距的最大原因

滑点和市场冲击

回测中你可能假设按收盘价买入。现实中,你的订单会推动市场,尤其较大规模或流动性差资产。滑点可把盈利优势变成亏损。

流动性

回测常假设无限流动性。实盘中报价位可能没有足够成交量。这导致部分成交和更差价格。

手续费和佣金

散户支付价差、佣金,有时还有数据费。加密交易者支付交易所费和提现费。对高频策略这些费用累积很快。

延迟

即使几毫秒延迟对短期策略也很重要。散户与共置服务器相比处于劣势。

过拟合

被曲线拟合到历史数据的策略几乎总是实盘 underperform。市场从不完全重复。

如何构建更真实回测

加入滑点

把滑点估计为价格百分比或固定金额:

slippage = 0.001  # 0.1%
execution_price = target_price * (1 + slippage)

包含所有成本

加入佣金、交易所费、做空借券费和数据费。

真实模拟限价单

如果策略用限价单,模拟成交概率而非假设所有限价单都成交。

避免未来信息偏差

严格分离训练和测试数据。决策时绝不使用未来信息。

多资产多周期测试

稳健策略应在多个标的和多个历史周期有效。

模拟交易的桥梁

模拟交易是回测和实盘之间的中间步骤。它用真实行情、虚假资金。虽不完美,但能发现许多问题:

  • API 错误
  • 数据延迟
  • 订单类型不匹配
  • 交易所意外行为

实盘前运行数周或数月模拟交易。

多大差距可接受

小的回测-实盘差距是正常的。目标不是零差距,而是差距足够小以至于策略在真实成本后仍盈利。

总结

回测-实盘差距不是 bug,而是建模不确定性的自然结果。最优秀交易者通过构建真实模拟、严格验证、逐步扩大实盘来缩小差距。假设实盘结果会比回测差,并设计能 survived 这种现实的策略。


相关阅读: 如何回测而不自欺欺人 | 过拟合 vs 稳健性 | 模拟转实盘清单