回测原理介绍:为什么你的策略回测完美,实盘却亏钱?
很多人做出一个漂亮回测曲线后,恨不得立刻实盘。
然后被市场狠狠教育。
回测是策略开发的必要工具,但也是最容易自我欺骗的地方。
本章帮你理解回测的本质,避开那些“看起来很美”的陷阱。
一、什么是回测?
回测(Backtesting)是用历史数据模拟策略在过去的表现,检验策略逻辑是否有效。
🎯 回测的核心作用:
1. 验证假设:你的交易逻辑是否真的有效?
2. 量化绩效:能赚多少钱?最大可能亏多少?
3. 参数优化:找到最优的配置方案。
4. 风险识别:在什么情况下会亏损?
📊 图1:回测的基本流程
↑ 回测是一个迭代过程:数据 → 策略 → 模拟 → 评估 → 优化
二、回测的十大常见陷阱
以下是最容易犯的错误,每一个都可能导致回测与实盘严重不符。
陷阱一
未来函数(Look-Ahead Bias)
在回测中使用了当时无法获取的未来信息。
💡 典型错误示例:
用当天的收盘价来决定当天的买入操作(实际只能在收盘后下单,次日才能成交)。
用未来某天的最高价来设置止损(当天无法知道未来的价格)。
✅ 正确做法:使用“前一天的信号,次日开盘成交”模型。
📊 图2:未来函数 vs 正确回测
↑ 未来函数是回测中最常见也最致命的错误
陷阱二
过拟合(Overfitting)
策略在历史数据上表现完美,但稍微改变数据范围就大幅失效。
💡 典型表现:
参数极其敏感(均线周期从20改成21,收益下降80%)
策略包含大量条件(“当A且B且C且D且E时买入”)
完美抓住每一次涨跌(几乎不可能)
✅ 正确做法:参数平原原则,样本外验证,K折交叉验证。
📊 图3:过拟合 vs 稳健策略
↑ 过拟合策略看似收益更高,但实盘中极易失效
陷阱三 ~ 六
其他常见陷阱
⚠️ 陷阱三:忽略交易成本
回测时不考虑佣金、滑点、印花税。高频策略下,成本可能吞噬所有利润。
✅ 建议:设置手续费0.1%-0.3%,滑点0.1%-0.2%。
⚠️ 陷阱四:幸存者偏差
回测中只包含仍在交易的股票,剔除了退市的股票。策略可能偏爱买入后来退市的股票而不自知。
✅ 建议:使用包含全部股票的历史数据库。
⚠️ 陷阱五:数据挖掘偏差
尝试了1000个因子,总能找到几个看起来有效的。但这是纯统计巧合。
✅ 建议:要求因子有经济逻辑,且通过多重假设检验。
⚠️ 陷阱六:样本内/样本外不分
用全部数据开发策略,再用这些数据验证。这是作弊。
✅ 正确做法:必须留出一部分数据从未在开发中使用过,专门用于验证。
📊 图4:正确的数据划分方式
↑ 永远用样本外数据验证策略的有效性
三、如何正确使用回测?
📌 原则一:真实模拟
尽可能模拟真实交易环境:成交价格、流动性、延迟等。
📌 原则二:样本外验证
至少留出1/3的数据用于最终验证,不参与任何优化。
📌 原则三:参数轻量化
参数越少越好,参数组合越简单越好。
📌 原则四:成本前置
从一开始就加入手续费和滑点,不要最后才想起来。
四、回测的局限性:历史不代表未来
即使做对了所有事情,回测也无法保证实盘成功。因为:
- 市场结构可能改变(交易规则、参与者行为)
- 黑天鹅事件无法回测(2008金融危机、2020疫情)
- 策略容量限制(小资金赚大钱的策略,大资金会失效)
🎯 正确心态:
回测通过只是必要条件,不是充分条件。最终要用小资金试盘验证。
新手常犯的三个错误
不需要写代码。
做这件事就够了:
打开聚宽/优矿上的任意一个公开策略,查看它的回测报告,
问自己以下几个问题:
1. 策略是否存在未来函数?
2. 参数稍微改变,收益变化大吗?
3. 样本外表现如何?
4. 有没有考虑滑点和手续费?
学会识别一个策略的陷阱,比开发一个策略更重要!
📌 小贴士
推荐的回测学习资源:
- 《交易系统分析》— 了解回测方法论
- 聚宽/优矿回测引擎文档 — 了解具体实现
- 量化投资社区 — 学习他人的策略和踩坑经验