最近一段时间在研究实盘策略,将研究成果分享大家。之前的两篇文章 7.基于随机森林预测股票价格
8.基于深度学习(LSTM)预测股票价格 关注度比较高,可是这些仅仅是理论的,在实际的操作是无从下手,用这些理论去指导实践,结果是天差地别。
基于以上的问题,我们从实际出发,不管理论数据有多难看,只要实际结果理想,可以进一步实践测试。因此我们换一种思路,即所有的验证不用机器学习的验证结果,而是用交易回测作为标准。
既然用机器学习预测股票不可行,那我们就用截面数据与收益率建立相关模型,即用截面数据(因子)预测收益率。之前的预测的数据都是时间序列,这里用的是截面数据(不明白这个词,可自行百度),有本质的区别。
框架图如下:
这个图虽然简单了一些,但是简单明了。一句话,把股票的因子,输入到建立好的模型,预测出该股票的收益率。
这里其实有一大堆问题,股票的因子如何选择,需要多少个因子,模型如何建立,收益率是指哪个区间,日收益,周收益还是月收益。
如果学习编程的小伙伴,都明白框架越简单越好,适用性越强越好,因此以上仅仅框架而已。会在以后的文章里会逐一讲明白。
可以分以下几类
? ‘quality’: 质量类
? ‘basics’: 基础类
? ‘emotion’: 情绪类
? ‘growth’: 成长类
? ‘risk’: 风险类
? ‘pershare’: 每股类
? ‘style’: 风险因子 - 风格因子
? ‘technical’: 技术类
? ‘momentum’: 动量类
目前的市场上的量化基金现在已经非常多了,那他们是如何运作的呢? 是通过模型预测股价,那他们是如何选股呢?
现在我来说说操作流程。
假设上述的模型已经建立好了,暂设定交易周期为每周的周一操作一次,以下操作也可以每周一开盘前进行。
1.选择标的
这里的标的是一个大范围,比如沪深300的300支票,或 深沪的A股(4000多支)等
2.筛选标的
根据相应要求(自定义),剔除一些不符条件的股票,这些条件有 ST,停牌,涨停或跌停的,科创板,北交所,次新股等
3.获取所需的因子
将上述所选的标的,获取前一交易的相关因子,获取的方法很多,可以直接计算,也可以有相关量化平台(聚宽、掘金、宽邦、米筐、开拓者、优矿、万矿、果仁)查询。
4.预测收益率
将这些因子输入到已建立好的模型来预测这些标的收益率
5.结果入池
将这些收益率从大到小进行排序,选择前N个放也目标股票池中(这里的N可以根据个人资金量做选择,如果是10W资金量,采用等权重的方式,可以设N=10,即一支票1W 为一个单位资金量)
6.每周一开盘,将目标股票池的N支票,以开盘价买入一个单位的资金量,如果该票已经持仓,就不进行操作。如果持仓的票,不在目标股票池,以开盘价卖出该票。
以后每周一次操作,实现量化交易完整过程,以上没有设定风险措施,你也可以增加止盈或止损相关内容。
具体实现上述过程。
我现在使用的是聚宽平台。
用完整的策略给大家分享一下。
1.选择因子,
'operating_revenue_growth_rate', #成长类因子 营业收入增长率
'total_profit_growth_rate', #成长类因子 利润总额增长率
'net_profit_growth_rate', #成长类因子 净利润增长率
'earnings_growth' #风格因子 5年盈利增长率
2.收益率:月收益率
3.模型:随机森林
测试周期:以2023-01-01~2023-04-30为测试集,2023-05-01至今天为验证集
标的:沪深300
上述策略只是策略框架的一种简单的实现,在实际操作中,可以选择更多的因子,收益率有更多选择,更复杂的模型,更大的数据集,仅仅是把框架实现的一个过程,将上述训练成一个随机森林模型,保存为“randomfores.pkl” 回测调用。
具体策略内容参照 量化交易的实际操作过程
选择资金量为10W,股票池数量为10,交易成本万分之三,过滤ST,停牌,涨停或跌停的,科创板,北交所,次新股。
以下分不同标的回测结果。
以下为从2023-01-01~2023-12-23 (至今)回测情况
以下为上述的基础上进行小市值的选择回测情况
由于集练为前4个月的,所以以下剔除前4个月的数据,从2023-5-1开始回测至今回测情况
还做了其他的一些回测结果就不一一展示了。