这是一个絮絮叨叨的专题系列,跟大伙儿唠一唠量化相关的小问题,有感而发写到哪算哪,这是第二期,来唠个12块钱的~
之前在知乎看到这个问题,说的是自己的MACD策略回测绩效不错,但实盘比较拉胯,希望大伙儿给出出建议。
看了题干当中的量化策略回测描述,总共回测了10年时间,成功率61%,盈亏比1.9,这算是一个非常亮眼的回测结果了,但是实盘效果就很差,这算是量化界当中比较常见的现象,可能的原因咱来从头到尾捋一下。
一、回测是否正确
首先,回测效果非常好,实盘要复现出八九不离十的收益,那就要首先评估自己的回测是不是正确的。
数据源、数据处理和计算方式是否正确呢?
数据源是不是经过“清洗”干净了呢?停牌日期的数据是如何处理,计算MACD的时候是保留停牌日期的收盘价还是不保留,实盘的计算方式是否与之对应呢?
股票原始价格有除权除息,一般会使用复权数据,如果使用了前复权数据的话,那就相当变相使用了未来数据,那实盘效果肯定要大打折扣。
二、是否有未来函数
其次,如果在数据源、数据处理和计算方式都正确和对应的情况下,要确保自己的策略没有引入未来函数,以下举2种可能出现的情况。
策略当中有这样的描述“N字形突破+MACD”,这大概率是一个趋势策略,趋势策略往往就容易买入大涨的股票,其中就包括涨停股,那在回测当中是否对涨跌停股票进行特殊处理呢?比如,涨停的股票无法买入,跌停的股票无法卖出。
还有一种可能,题主可能在回测当中使用的是收盘价计算N字形指标和MACD指标,以此产生交易信号并以收盘价成交,这也是变相引入了未来函数,因为在实际当中无法知道收盘价,知道收盘价时已经收盘无法再以收盘价成交,这样相当于提前预知了收盘价。
三、是否过度拟合
再次,排除了未来函数的影响,就需要看看策略是否是过拟合了,过拟合也是量化策略回测当中非常容易犯的错误。
MACD本身带有3个参数,假设N字形突破只带1个参数,总共有4个参数,假设每个参数有10个可能的值,那这个策略就可能有10000种参数组合。
通过对4个参数的参数寻优,人性的贪婪往往只会选择其中看起来效果最好的参数,有可能这组参数恰好是参数平面上的孤岛。要排除这方面的过拟合,最少要做一个参数敏感性分析吧。
四、真实交易环境的限制
最后,经过重重的检查,保证回测的正确性和准确性,让实盘效果大打折扣的原因就是真实交易环境的限制。
这个策略是典型的趋势策略抓突破,股价可能处在一种快速上涨的过程当中,在回测当中能成交的价格,在实际交易当中由于行情延迟和流动性等因素的影响,要以更高的价格成交,产生非常大的滑点,削弱了收益。
还有就是,回测当中的数据是“死的”,而在实盘当中数据是“活的”,自己的交易行为会反作用于市场,把股价推向更高位置,也会产生大滑点,这就是量化中常说的“冲击成本”。资金量不大,又是活跃股的话,这段就当我没说过,掐了吧。
五、策略失效
最后的最后,那就是咱都不想面对的情况了——策略失效。每一个策略都是有周期的,雷总说“站在风口上,猪都会飞”,当风停了之后,策略处在失效回撤期,磨人的时间开始了。
回测没有错,策略也没有错,只是老天爷不赏饭吃了,“此天之亡我,非战之罪也”,收拾好心情,收拾好行囊,重新出发,优化改进让策略重新焕发生机活力。
这5个就是导致“回测很丰满,实盘很骨感”的常见原因,对了,别问我是怎么知道的~~~很多东西听起来都是很轻松,听过了也就过了,唯有真金白银的损失才会让自己回想反思,还是那句话说的好嘛,“人教人,教不会,事教人,一次就够了”。
END
如果对本文有疑惑,或是想聊聊
亦或是围观朋友圈当点赞之交
点我,让我们一路同行
吃瓜吐槽写代码
(微信号:iquantman)
添加好友后,私信『666』
送你一些量化小福利
人工回复慢请见谅~
继续阅读
阅读原文