今天分享一篇个人在大盘涨跌上的预测及通过涨跌预测延伸的仓位控制思考。
大盘的择时个人一直认为是股票量化中最重要的部分(普通的策略)。一个好的择时方法,虽然可能会让部分盈利变少,但能够大大的降低回撤。很多策略虽然有很高的收益,但其回撤也是巨大的。基本上越有钱的人越看重策略的回撤,可以说如果一个策略的回撤超过10%都不算好的策略,当然有些人可能要求更高。
如何进行大盘择时呢?一个很简单的想法就是预测大盘的涨跌。尤其是超短策略,能够预测出第二天的涨跌对超短策略能有很大的帮助(我这里所说的超短策略主要是指:送你一份年化100%+的策略)。我采用的预测方法依然是机器学习方法,因此包含以下步骤:标签制作、特征工程、模型训练及结果分析。
标签制作
其实预测大盘(上证指数)的涨跌也并不合理,我们在实盘操作的时候可以明显的感受到有时候大盘小跌个股大跌,大盘大涨个股小涨或不涨。这里主要是因为上证指数的计算是有权重的,个股的市值越大权重越大,所以上证指数的涨跌容易受到权重股的影响。由于我的超短策略仓位分散并且容易选到小市值的股票,预测上证涨跌是不太合理的,因此我自己合成了一个指数指标,我这里称为平均涨跌,其计算是统计每天所有股票的平均涨跌值。核心代码如下:
对于平均涨跌的预测,我建模思路与《送你一份年化100%+的策略》这篇文章类似,预测第二天平均涨跌是否大于0,如果第二天涨幅大于0标签为1,否则为0。
特征工程
特征工程这边比较简单,就提取了一些常见的特征。主要是近几天的上证指数最高价、最低价、收盘价等,还有一些成交量的特征。详细的就不介绍了,没什么意义。
模型训练及结果分析
训练集时间:20120101- 20180901
测试集时间:20190101 – 20200401
涨跌预测正确率:58.8%
模型收益:我这里第二天的市值计算是看平均涨跌的,举个例子平均涨跌是0.05,则第二天的市值是第一天市值的1.05倍。假设预测为涨的时候满仓,预测为跌的时候空仓,则模型的最终收益为初始的1.485倍,最大回撤为11.3%。如果是一直满仓的状态下,最终收益为初始的1.254倍,最大回撤为20%。虽然结果显然比一直满仓的好,但其实也并没有好很多。
其他尝试:通过概率值分配仓位。我们预测第二天的涨跌会有一个概率值,我尝试了给不同概率值分配不同仓位,然而结果并不好,回撤可能会有所降低,但盈利也降低了很多。
结果分析:效果不好的最本质原因其实还是涨跌难预测。当然可能做好一点的因子效果会有所上升,但我觉得这提升也不会很大,可能最高的准确度也不会超过65%吧。
仓位设置思考
其实做大盘涨跌预测,归根结底是为了给仓位的设置一个参考。做完这个涨跌预测,我觉得这个涨跌预测做出来的意义不是特别大。因为不同策略他的选股侧重都是有区别的,有些策略,即使在行情一般的时候也能选出牛股,而你这时候仓位限制太大就限制了他的盈利能力,所以具体仓位如何设置还是需要结合策略的风格去设置的。再举个通俗一点的例子,短线资金看市场是否活跃,而长线资金看股票的估值等其他因素,在下跌且估值较低的时候,短线资金会小仓位试错,而长线资金可能会慢慢加大仓位。
那如何给自己的策略设置仓位呢,一个想法就是看策略发生较大回撤的那个阶段,想想策略为什么发生回撤, 通过制定一定规则去避免这类回撤;还有另外一个想法就是自己定义一种大盘风险指数,当然这个指数如何设计需要一定的经验(当然有一定经验以后也可人工设置仓位)。比如在行情好的时候大家可以明显的感受到行情来了,可以利用一些网络爬虫、情感分析等手段去分析;在大跌开启前,一般会有一段震荡行情,主力震荡出货结束开始砸盘。
以上内容都是目前的一些所思所悟,写的很乱,不一定正确,只当做分享使用。
对量化、数据挖掘、深度学习感兴趣的可以关注公众号,本人不定期分享有关这些方面的研究。
个人知乎:
https://www.zhihu.com/people/e-zhe-shi-wo/activities