最近一个兄dei,发给我一个他最近收集的量化策略,回测下来,近5年累计收益有116倍(年化158%),这狂飙的净值曲线,闪烁着圣杯的耀眼光芒,西蒙斯看了会沉默,索罗斯看了会流泪。
看到这么不符合常理的逆天收益,第六感告诉我肯定又是『未来函数』在作妖,打开策略源码一瞅,一目十行的速度看到了第15行,就已经发现,在回测初始化设置里面已然开了“防未来函数”功能,保证当前时刻取不到未来的数据,这就奇怪了~
突然我回想起了,之前分析过的那个年化577倍的量化策略,里面也是没有未来函数,收益逆天的原因是:在回测设置里面,开启了“强制撮合”功能,能丝滑买入一字涨停板,吃到后续不断涨停的肥美收益。具体的分析过程就不展开了,有兴趣的话,详见这两篇之前的文章《年化收益577倍的量化策略,没有未来函数,却有这个致命Bug》《年化收益577倍的量化策略,没有未来函数,却有这个致命Bug(续)》
遍览所有设置过程,没有发现开启“强制撮合”功能的函数,由于系统是默认不开启这个功能的,为了保险起见,我就调用设置函数显式地关闭这项功能,再回测一遍,发现收益还是这么逆天,收益率没有任何改变,没法子了,只好逐行阅读源码,看看是什么情况造成的了。
通读下来,发现这是一个低价股策略,在每周的第一个交易日开盘之后,会先把股票均价在1块5以下的股票统统剔除,然后再剔除停牌股、ST股等乱七八糟的股票,最后选择股价最低的那支股票,作为本周的专属交易股。
精彩的地方来了,那就是它的交易时点,并不是根据什么技术指标或模型预测信号进行买卖,而是在每天指定的时间范围内,每隔一分钟就会去下一次限价委托单。
买单的委托价格是最近一个50分钟K线的最低价,卖单的委托价格是最近一个50分钟K线的最高价,如果上一分钟的订单没有成交,则撤单后继续根据最新价格下单,如果成交,则此后不再执行同类型交易,也就是买了之后就只卖不买,卖了之后就只买不卖。
这样说起来很抽象,咱结合成交明细进行举例说明,策略的回测时间是设置为2018年1月1日至2023年3月7日,初始本金为10w,2018年1月2日是当年的第一周第一个交易日,那一周在盘前筛选出来的股票是“和B生物”,确定了那一周的专属交易股。
2018年1月2日开盘后,经过多轮报撤单,终于在10点40分,以2.01元成交价买入了497手,由于A股T+1交易规则,当天不再买入。
由于已经有持仓,2018年1月3日开盘后,则开始执行卖出操作,在10点21分,终于委托单全部成交,将昨日旧仓全部卖出,成交价为2.03元。
此时,由于又有了可用资金,就又开始了买入操作,仅两轮报单后,就很幸运地又把股票买回来了,当日便停止交易,明天又会按照今天的流程走一遍,如此循环往复。
发现没有,这就是每日都在做T,变相实现“T+0”操作,每天一开始就把旧仓卖出去,然后又把股票买回来,一天之内同时实现了买卖两种操作,用日内波段的价差增厚收益。
这里面的确没有未来函数,也没有强制撮合,那收益为什么能这么逆天呢?
这就要说到我国证券的交易规则了,因为咱大A股交易的申报价格最小变动单位是0.01元,也就是1分钱,简单来说,也就是咱每次修改价格下单,要么加减1分钱,要么就是加减1分钱的整数倍。
别小看这1分钱,对低价股来说可就有大用了,因为1分钱相对1块钱股价来说就是1%,相对2块钱股价来说就是0.5%。
就拿2018年1月2日~3日的交易来说,2.01元买入,2.03元卖出,赚了2分钱,价差是大概赚了1%,回测当中设置买入/卖出佣金是万2.5(0.025%),双边合计就是万5(0.05%),卖出时印花税是千1(0.1%),那交易成本大概就是0.15%。
PS:这里的费率设置是合理的,可能会有小伙伴说佣金用设置成【万3】才行,一般你直接在券商官网开户的话,一般费率就是在【万2~万3】之间,找找专属/合作渠道的话可以做到【万1】,目前我认识的好几个券商渠道都是可以做到的。
这一天之间的一进一出的收益就大概赚了0.85%,那5年就算1200个交易日好了,每个交易日赚0.85%的话,1.0085的1200次方是25768,这就是25000多倍啊,116倍相较之下只能算是弟弟了。
因为这个策略是不断在等待区间低位买、高位卖,能高胜率地“刮头皮”,这点儿“头皮”对低价股来说,可就是过年吃饺子了,只不过这只是在回测当中,实盘当中且不论交易接口对你不断报撤单有没有限制,就说回测当中能成交的价格,实盘里面能不能成交得了。
回测/模拟盘跟实盘之间的收益不尽相同的原因之一就是“滑点”,滑点就是最终成交价和预期价格之间的偏差,因为这个世界上最没有意外的事情就是有意外,量化交易里面也是如此。
所以各个量化平台考虑到回测和实盘之间的差距,都会加入滑点模式来帮助大伙儿更好地模拟量化策略在真实市场中的表现,在这里咱就给原始策略加上一个最小的滑点,买卖各偏移1分钱就行了,也就是买入的时候会比原始价格贵1分钱,卖出的时候会比原始价格便宜1分钱,再来回测一遍。
此刻,这个低价股策略就原形毕露了,收益曲线掉头急转直下,最终策略收益-99.88%,基本上是亏完了,其实从2018年1月到2020年10月,都不够3年,策略就已经亏损了99%,只不过后面剩余本金太小了,相对原始本金来说基本上已经忽略不计,后面两年多基本走成了一条直线。
出现这种现象,是因为滑点基本上抵消了原来刮的头皮,每次交易基本上都是在妥妥地亏手续费,而且部分交易还会亏价差,上面说了每次一买一卖合计交易成本是0.15%,那就估计每次亏0.30%好了(现实应该比这严重),0.9970的1200次方是0.027,也就是交易到最后,最终剩下的钱只有本金的2.7%。
最后总结一下,这个低价股策略基于日内做T增厚收益的思路,利用交易申报价格最小变动单位对于低股价收益率的“放大效应”,做到了逆天的收益,虽说没有未来函数那些,在实盘当中肯定是无法复现的,加入最小的滑点就可以让它原形毕露,圣杯之旅悄然落幕。
策略排雷就先说到这里了,如果想了解全部的策略细节,可在公众号后台回复暗号:低价股,获取策略源码和使用说明,顺便可以试试原策略在高价股里面的表现是什么样子的?
Tip:点击关键字可以直接查看对应文章。
END
如果对本文有疑惑,或是想聊聊
亦或是围观朋友圈当点赞之交
点我,让我们一路同行
吃瓜吐槽写代码
(微信号:iquantman)
添加好友后,私信『666』
送你一些量化小福利
人工回复慢请见谅~
继续阅读
阅读原文