回测的坑:深度与滑点
一句话速览
用收盘价回测小市值币,等于假设你的单子不影响价格。实盘上这个假设完全不成立。
这节课要你带走的
深度和滑点为什么让小市值币的回测严重失真、怎么估算真实的成交成本,以及一个自检的方法。
回测通常假设你能按收盘价成交。 这个假设在主流币上大致成立,在小市值币上完全不成立。
回测的隐含假设
用历史 K 线回测时,你默认了三件事:
一是你的单子不影响价格。
二是那个价位上有足够的对手方。
三是你能在那个时刻成交。
在深度只有几万块的币上,三条全部不成立 (见 C2-2)。
失真有多大
用一个具体的算法估:
先量出这个币的盘口深度(买一到买五的总量), 再看你的策略每笔交易的规模。
如果单笔规模达到深度的相当一部分, 那么每一笔的滑点都是显著的, 而回测里那部分成本是零。
更麻烦的是它有方向性:你买入时推高价格, 卖出时压低价格,两头都亏。
还有一个更隐蔽的问题
回测里的「成交」在实盘里可能根本不会发生。
回测看到某根 K 线的最低价触及了你的挂单价,就判定成交。 但那个最低价可能只有极小的成交量, 你的单子未必能排到。
这在插针时尤其明显: 一根长下影可能只对应几笔小额成交, 而回测会认为你在那个价位买到了全部仓位。
三条处理办法
一、给回测加一个保守的滑点假设。 按品种深度估一个百分比,每笔都扣掉。 宁可估高,因为估低的代价是实盘亏损。
二、限制单笔规模不超过深度的一个小比例。 这条同时是回测假设和实盘纪律。
三、用成交量过滤品种。 日均成交量低于某个门槛的直接排除, 不管回测结果多好。
一个自检方法
把回测里的滑点假设翻一倍,看策略还成不成立。
如果翻倍之后策略从盈利变成亏损, 说明它的收益主要来自一个你无法验证的假设, 而不是来自策略本身。
这跟期货频道拼接方式那个检验 是同一个思路:改一个你不确定的假设, 看结论稳不稳。
做
今天就做这一件事
查你回测里用到的某个小市值币,看它当前的买一到买五总量。
跟你策略的单笔规模比一比。
如果单笔规模超过了总量的两成,那这个回测结果基本不能用。
带走这一条:回测隐含三个假设:不影响价格、有足够对手方、能在那个时刻成交,在小市值币上三条全不成立。更隐蔽的是插针那根长下影可能只有极小成交量。自检方法是把滑点假设翻一倍看策略还成不成立。