交易系统 · 第 9 节

回测的坑:主力合约拼接

建立你自己的期货系统 · 第 9 页。看移仓成本被抹掉之后收益高估多少。

一句话速览 拼接方式不同,同一套规则的回测收益能差出一倍。这是期货回测里最大也最隐蔽的一个坑。
这节课要你带走的 看完你知道两种拼接方式各自怎么污染回测、价差调整为什么会系统性高估长期持仓策略的收益,以及四条处理办法。

这是期货回测最大也最隐蔽的一个坑。同一套规则, 拼接方式不同,回测收益可以差出很多。

问题从哪来

回测需要一条连续的价格序列,但期货的合约是不断更换的。

技术差异篇讲过三种拼接方式:直接拼接、价差调整、比例调整。 这一节讲它们对回测结果的具体影响。

直接拼接的问题

保留了换月的假跳空这些跳空会被你的策略当成真实价格变动。

后果:突破信号可能在换月那天被假触发; 均线、ATR 等指标被污染;止损可能被一个不存在的跳空打掉。

回测结果可能偏好也可能偏坏,取决于假跳空的方向 跟策略方向的关系,但无论如何都是失真的。

价差调整的问题

这是更常见的做法:把历史价格整体平移,消除跳空。

图形连续了,指标干净了,但它抹掉了移仓成本

这是最要命的一点:实盘里每次移仓都要付价差, 而调整后的数据里这笔成本消失了。

后果:对长期持仓策略,回测会系统性高估收益。 持仓时间越长、移仓次数越多,高估越严重。

量化一下

交互 · 移仓成本被抹掉之后

每年被抹掉的成本
6.0%
修正后年化
14.0%
收益被高估了
43%

这里假设做多且处于正向市场(远月更贵), 这是商品期货的常态。反向市场里移仓反而收钱,方向相反。

怎么处理

一是明确知道自己用的是哪种数据。 这是第一步,而很多人从来没查过。

二是把移仓成本单独算进去。 用价差调整的数据回测,然后按实际移仓次数手工扣除成本。

三是用真实合约做验证。 在几个具体合约上手工跑一遍,看结果跟连续合约的回测差多少。

四是缩短回测的持仓周期做敏感性测试。 如果一套策略的收益高度依赖长期持仓,那它对移仓成本的敏感度就特别高。

价差调整让图变干净,代价是把移仓成本抹掉了。持仓时间越长,回测高估得越厉害。

今天就做这一件事

查清楚你的回测数据用的是哪种拼接方式。如果是价差调整,用上面的计算器算一下被抹掉了多少。

带走这一条:价差调整把移仓成本抹掉了,持仓时间越长回测高估得越厉害。正确做法是回测之后按实际移仓次数手工扣除成本。