量化交易 XtradingTime

回测的 7 个致命陷阱:为什么回测好的策略实盘亏钱

回测的 7 个致命陷阱:为什么回测好的策略实盘亏钱

回测是量化交易最重要的环节,也是最容易被自己骗的环节。90% 的散户量化策略”回测亮眼实盘亏损”,原因都在这 7 个回测陷阱里:过拟合、生存偏差、前视偏差、数据窥探、不真实的执行、忽略成本、样本不足。今天逐一拆透每个陷阱的本质 + 散户能用的检测方法。读完你会成为”会看回测”的少数人。


一、为什么”回测好但实盘亏”是常态

如果你已经读过 量化交易入门,应该理解了量化的基本框架。

今天聚焦最关键的一环:回测。

散户的典型经历

第 1 步:研究一个量化策略 第 2 步:回测,看到漂亮曲线(年化 50%!) 第 3 步:兴奋,立即实盘 第 4 步:3 个月内开始亏损 第 5 步:6 个月后账户腰斩

为什么会这样

  • 回测美化了实际表现
  • 实盘揭示了所有”骗自己”的细节

理解这 7 个陷阱 = 80% 不再被回测骗


二、陷阱 1:过拟合(Overfitting)

回测过拟合的 5 个典型表现

什么是过拟合

过拟合 = 策略对历史数据完美匹配,但对未来数据完全失效

典型表现

  • 回测胜率 80%
  • 实盘胜率 45%

为什么会过拟合

散户的标准操作

  • 写一个策略,回测,胜率 60%
  • “再调一下参数”
  • 调整 ATR 周期:胜率 65%
  • 调整止盈倍数:胜率 70%
  • 调整时间过滤:胜率 75%
  • “完美!”

问题

  • 你在用历史数据”训练”参数
  • 训练越深,对历史越完美
  • 但对未来完全没用

检测方法:样本外测试

正确做法

  • 把数据分两段
  • 70% 用来调参数(in-sample)
  • 30% 用来验证(out-of-sample)

判断

  • 样本外表现接近样本内 → 策略稳健
  • 样本外表现差很多 → 严重过拟合

铁律没做样本外测试的回测都是骗子


三、陷阱 2:生存偏差(Survivorship Bias)

什么是生存偏差

生存偏差 = 历史数据只包含”还活着”的品种,已退市的没了

典型例子

  • 你回测美股 10 年策略
  • 但 10 年里有几百个公司退市
  • 历史数据只剩活着的
  • 你的策略其实是”专门在赢家身上做”

这是免费数据源的最大问题

检测方法

  • 用付费数据(包含退市股票)
  • 看你的策略是否选了”明显的赢家”
  • 用未在训练期的品种验证

实战

  • 散户做 A 股 / 美股个股策略要小心
  • 做指数 / 主要外汇 / 主要期货影响小

四、陷阱 3:前视偏差(Look-ahead Bias)

什么是前视偏差

前视偏差 = 代码里”偷看”了未来数据

典型例子

  • 用今天的收盘价判断今天的入场点
  • 用次日数据计算今日信号
  • 用周末公布的数据判断周五的交易

看似无害,实际灾难

散户最常犯的 3 个前视错误

错误 1:用收盘价做决策

错误代码:if (today.close > sma20) buy at today.close
正确代码:if (yesterday.close > yesterday.sma20) buy at today.open

错误 2:用财报后数据回测

  • 用财报公布的价格
  • 但用财报公布才知道的数据
  • 完全作弊

错误 3:参数优化用了未来数据

  • 在 2024 年优化参数
  • 用 2024 年数据
  • 然后说”2024 年回测胜率 80%”
  • 这是骗自己

检测方法

  • 严格的”信息边界”
  • 决策时只能用”过去”数据
  • 入场必须用”下一根 K 线”开盘价

五、陷阱 4:数据窥探(Data Snooping)

什么是数据窥探

数据窥探 = 同时测试很多策略,挑出最好的

典型例子

  • 你测试了 100 个策略
  • 其中 5 个回测特别好
  • 你以为找到了”圣杯”
  • 但 5/100 = 5% 完全是统计巧合

这是伪科学

为什么这是陷阱

统计学事实

  • 测试 100 个随机策略
  • 5% 概率有”显著表现”
  • 但这 5% 只是噪音

散户的典型场景

  • 在 TradingView 试 50 种策略
  • 留下表现最好的 3 个
  • 实盘 → 都失效

检测方法

  • 不要测试很多变体
  • 选定 1-2 个有逻辑的策略
  • 用同样数据反复测试 = 数据窥探

铁律先有逻辑,再有回测。不是反过来。


六、陷阱 5:不真实的执行假设

什么是不真实执行

回测假设你能完美执行实盘做不到

典型差距

1. 滑点(Slippage)

  • 回测:按显示价格成交
  • 实盘:实际成交价比显示价格差 1-3 点

2. 流动性

  • 回测:你的订单立刻成交
  • 实盘:大单可能部分成交或不成交

3. 网络延迟

  • 回测:信号 = 立即下单
  • 实盘:信号 → 网络延迟 50-200ms → 价格已变

4. 经纪商对手方

  • 回测:理论价格
  • 实盘:经纪商可能”做对手方”

检测方法

保守假设

  • 滑点:每笔 1-2 点
  • 佣金:实际值 + 50%
  • 假设你的订单不一定全部成交

实战

  • 回测 + 现实成本 → 净利润减半
  • 减半后还盈利 → 真正的好策略
  • 减半后亏损 → 实盘大概率亏

七、陷阱 6:忽略交易成本

散户最容易忽略的 3 个成本

成本 1:佣金

  • 期货 1-5 元/手
  • 外汇隐藏在点差里
  • 频繁交易者每月 1000+ 元成本

成本 2:点差

  • EUR/USD 平均 0.5 点
  • 黄金平均 0.3 美元
  • 每笔交易”无形损失”

成本 3:隔夜利息

  • 持仓过夜的融资费
  • 加密货币的资金费率
  • 长期累积可怕

检测方法

计算真实成本

真实净利润 = 总盈利 - 佣金 - 点差 - 利息

很多策略表面盈利 + 100%,扣成本后是 -10%

实战

  • 回测时强制加入成本
  • MT4 默认会算
  • TradingView 需手动设
  • Python 代码必须明确加

八、陷阱 7:样本不足(Sample Size)

什么是样本不足

样本不足 = 回测笔数太少,统计不可信

典型场景

  • 回测 1 年
  • 总笔数 30 笔
  • 胜率 60%
  • “这是个好策略!”

问题

  • 30 笔 = 统计不显著
  • 60% 胜率可能完全是运气
  • 改变测试时间 → 胜率可能变 40%

最低样本要求

理想样本

  • 至少 100 笔交易
  • 跨 3-5 年
  • 覆盖牛市 + 熊市 + 震荡市

低于此 = 不可信

检测方法

  • 总笔数 < 100 → 警惕
  • 测试期 < 3 年 → 警惕
  • 只覆盖单一市场环境 → 警惕

九、检测回测可信度的”5 步清单”

判断回测是否可信的 5 步清单

最后整理成可执行的”5 步检测清单”:

步骤 1:样本量

  • 总笔数 ≥ 100
  • 测试期 ≥ 3 年
  • 覆盖牛/熊/震荡市

步骤 2:样本外测试

  • 70% 数据训练,30% 数据验证
  • 样本外胜率 / 盈亏比 接近样本内
  • 偏差 < 20%

步骤 3:参数稳健性

  • 主要参数 ±20% 调整后
  • 表现仍可接受
  • 不依赖某个”完美参数”

步骤 4:交易成本

  • 包含真实佣金
  • 包含真实点差
  • 包含隔夜利息

步骤 5:执行假设

  • 滑点 1-2 点
  • 不假设”立即成交”
  • 用下一根 K 线开盘价入场

5 步全过 → 这个回测可信度 80%+


写在最后

回测是量化的双刃剑

  • 用对了 → 验证好策略
  • 用错了 → 骗自己很久

核心要点

  • 7 大陷阱(过拟合/生存偏差/前视/数据窥探/执行/成本/样本)
  • 每个陷阱都有具体检测方法
  • 5 步清单可以直接套用

铁律:任何回测漂亮但没做样本外测试的策略,不要实盘


完整量化系列回顾

到此 C040 量化系列 4 篇全部完成:

  1. 量化交易入门
  2. AI 辅助交易工具
  3. EA 策略开发完整指南
  4. 回测的 7 个致命陷阱(本篇)

把这 4 篇按顺序读完,你会拥有完整的”散户量化交易”框架。

🎯

推荐课程

合约陪跑实战训练营

不只教方法,更带你实盘执行。从仓位管理到止损止盈,手把手纠正你的交易习惯,建立可复制的盈利系统。

相关文章

觉得有用?关注公众号获取更多干货

每周更新交易教学文章和视频,帮你建立系统化交易体系

公众号二维码