交易系统的核心痛点:为什么你的策略总是失效?
做量化交易这些年,我见过太多人抱着一个策略跑回测,兴奋得睡不着觉。结果一上实盘,直接被打回原形。为什么会这样?
说白了,大部分策略失效,不是数学错了,是机制设计出了问题。你想想看,一个系统如果底层逻辑就有漏洞,再漂亮的曲线也是空中楼阁。
1. 过拟合:你拟合的是历史,不是未来
这是最经典的坑。我个人习惯把过拟合叫做「后视镜交易」。你盯着历史数据,把参数调得无比精准,恨不得把每根毛刺都拟合进去。然后呢?市场一变,策略直接崩盘。
核心问题:你让策略记住了历史,却没学会规律。
我在项目中遇到过一位朋友,他的策略在回测里年化收益80%,最大回撤不到5%。我当时就觉得不对劲。一问才知道,他用了20个参数,优化了整整三天。结果实盘两周,亏了15%。
避坑指南:
- 参数越少越好。我个人建议不超过5个核心参数。
- 用样本外数据验证。别把所有数据都拿来拟合。
- 做蒙特卡洛模拟。看看策略在随机数据上的表现。
2. 幸存者偏差:你看到的都是活下来的
这个问题很隐蔽。很多人在回测时只用了当前还在交易的股票或期货合约。那些退市的、暴跌的,全被忽略了。
嗯,这里要注意。你回测时用的数据,天然就过滤掉了失败者。这就像统计百岁老人的长寿秘诀,得出的结论可能是「抽烟喝酒活得更久」——因为不抽烟不喝酒的早就挂了。
警告:回测时一定要包含退市、停牌、暴跌的标的。否则你的策略可能只对「幸存者」有效。
我曾经犯过这个错。2018年做A股回测,只用了当时还在交易的股票,结果策略表现极好。后来加入了退市股票的数据,收益直接腰斩。从那以后,我再也不敢忽略幸存者偏差。
3. 交易成本:被忽视的利润杀手
很多人回测时只算了手续费,忽略了滑点、冲击成本、资金占用成本。高频策略尤其敏感。
你想想看,一个日频策略,如果每次交易滑点0.1%,一年交易200次,光滑点就吃掉20%的收益。这还没算手续费和印花税。
| 成本类型 | 典型值 | 对策略的影响 |
|---|---|---|
| 手续费 | 0.01%-0.03% | 低频策略影响小,高频策略致命 |
| 滑点 | 0.05%-0.2% | 流动性差的品种影响极大 |
| 冲击成本 | 0.1%-0.5% | 大资金策略必须考虑 |
| 资金占用 | 按资金成本计算 | 杠杆策略影响显著 |
我建议在回测时至少加上0.1%的单边滑点。如果策略还能盈利,再考虑实盘。否则,你赚的可能只是回测软件的幻觉。
4. 未来函数:你无意中偷看了未来
这个问题很常见,也很低级。但就是有人会犯。
举个例子:你在回测中使用当天的收盘价来计算买入信号。但实际交易中,你只能在收盘后才能知道收盘价。这就是典型的未来函数。
提示:回测时只使用「当时」能获取到的数据。别用未来的信息做决策。
我见过最离谱的一个案例:有人用「第二天开盘价」作为止损触发价。回测曲线完美,实盘直接爆仓。因为止损触发时,你根本不知道第二天的开盘价是多少。
避坑指南:
- 只用开盘价、最高价、最低价、收盘价中的「历史」数据。
- 计算指标时,确保数据是「滞后」的。
- 用「滚动窗口」方式验证,别用全量数据。
5. 机制设计框架:从根源解决问题
上面说的都是具体问题。但根源是什么?是机制设计出了问题。
一个好的交易系统,应该像一台精密的机器。每个零件都有明确的功能,每个环节都有容错机制。而不是靠一个「神奇参数」来赚钱。
我个人习惯把交易系统拆成四个模块:
- 信号生成模块:产生交易信号,要求逻辑清晰、可解释。
- 风险管理模块:控制仓位、止损、资金分配。
- 执行模块:处理滑点、订单类型、交易时机。
- 评估模块:持续监控策略表现,发现异常及时调整。
这四个模块缺一不可。很多人的策略只有信号生成模块,其他三个全凭感觉。这就像造了一辆没有刹车、没有方向盘、没有仪表盘的车。你敢开吗?
6. 从机制设计角度看策略失效
现在我们把前面的问题串起来,从机制设计角度重新审视:
- 过拟合 → 机制缺乏「泛化能力」设计
- 幸存者偏差 → 数据采样机制有缺陷
- 交易成本 → 执行机制不完整
- 未来函数 → 信息流机制混乱
你看,每个问题背后,都是机制设计上的漏洞。不是策略本身不行,是支撑策略运行的「系统」有问题。
核心观点:交易策略的失效,本质上是机制设计的失效。修复机制,比优化参数更重要。
我个人习惯在开发新策略时,先花70%的时间设计机制,30%的时间优化参数。顺序不能反。机制对了,参数随便调调就能赚钱。机制错了,参数再优化也是白搭。
嗯,这一章就到这里。记住一句话:别让你的策略成为「回测里的英雄,实盘里的狗熊」。从机制设计入手,才能从根本上解决问题。
课后思考:检查你当前的策略,看看它在信号生成、风险管理、执行、评估四个模块中,哪个模块最薄弱?