内容简介:导语:《Machine Learning for Stock Price Forecasting》是Ali El-Shayeb撰写的机器学习系列文章 ,本文主要介绍其第二部分内容——《监督式机器学习算法的应用》,并将其思想和代码应用在中国股票市场,开发出具有择时功能的监督式机器学习算法,最后进行策略回测。对此感兴趣的小伙伴可以直接在本文文末克隆策略源代码,前往Ali El-Shayeb通过价格和成交量相关的9个特征训练模型,特征列表和数据来源见下图。
导语:《Machine Learning for Stock Price Forecasting》是Ali El-Shayeb撰写的机器学习系列文章 ,本文主要介绍其第二部分内容——《监督式机器学习算法的应用》,并将其思想和代码应用在中国股票市场,开发出具有择时功能的监督式机器学习算法,最后进行策略回测。对此感兴趣的小伙伴可以直接在本文文末克隆策略源代码,前往 BigQuant人工智能量化投资 平台实现并进一步研究。
《监督式机器学习算法的应用》
Ali El-Shayeb通过价格和成交量相关的9个特征训练模型,特征列表和数据来源见下图。
作者希望训练出一个二分类模预测模型,来预测市场属于牛市还是熊市状态。在训练集数据处理上,如果交易日t+30价格小于t交易日价格,那么标注为0,否则标注为1。通过特征数据和标注数据可以训练出一个二分类模型,接着在预测集上进行预测,如果预测结果为1,表明为买入信号,如果预测集为0,表明是卖出信号。最后,通过预测结果回测检验策略收益曲线。
需要补充的一点是,作者将训练集上80%的数据作为训练集,20%的数据作为验证集,在验证集上评估策略的预测效果。评估指标为准确率,准确率计算公式为预测正确的天数与总预测天数的比值。
模型比较
Ali El-Shayeb尝试了多个机器学习分类模型,发现模型表现各不一样(见下图)。通过构建更多的特征能够消除数据噪音,获取更好的预测结果。此外,作者还发现预测时间越长,模型预测越准确。模型的准确率较之于随机猜测(50%涨,50%跌)的差值,恰恰能够体现模型的有效性。
交易策略
华尔街专业量化交易员预测第二天涨跌的准确率为55%,预测未来30天股价的准确率高达80%。Ali El-Shayeb发现,使用支持向量机分类算法的准确性最高,模型会告诉他,如果价格下跌就卖出股票,如果价格上涨就买入股票。该策略从08年到10年每月收益为1.3%,期间策略总收益为31.2%。在该时间段,基于标准普尔S&P500买入并持有的策略收益率为-6.9%。
展望和不足
- 股票价格受很多因子影响,股票池不一样,总能找到比较好的策略回测曲线
- 模型偏简单,没有考虑宏观方面的一些特征,比如GDP、通货膨胀率、利率水平等
- 财报的因子也没有考虑进去,未来可以基于自然语言处理(NLP)的算法对财报进行分析预测
A股市场策略复现
本文将Ali El-Shayeb的量化思想应用在A股上面,因为本质上该策略属于择时策略,因此我们只需确定股票。这里我们以深高速(600548.SHA)为例,如果大家想要换成其他股票,修改下证券代码列表这个模块的参数即可。
本文完全采用Ali El-Shayeb提到的9个因子,其中2015年到2017年初为训练集,2017年到2018年为预测集(回测区间)。因为是二分类算法,所以我们采取Logistic Regression算法,如果大家想检验一下其他二分类算法的效果,可以直接在模块里将算法更改为sklearn机器学习包相关的算法名称。
策略回测结果:
从上图可以看出,该策略在在回测区间总收益率为17.36%,而如果直接买入并持有该股票的话,策略总收益率为9.3%。该策略主要是通过择时空仓规避了下跌,可见该策略择时有效。
需要说明的是,本文旨在复现国外<mark data-id="3946938d-2b2f-4b48-9ee4-58debad2a6c4" data-type="technologies">数据科学</mark>家的一个量化策略,介绍如何在A股市场开发ai量化策 略,希望大家能够快速高效开发策略。因此并不对策略收益做保证。
参考文献
- Machine Learning for Stock Price Forecasting (1/3)
- Machine Learning for Stock Forecasting
附录
原创推出,版权归BigQuant所有,转载请注明出处。
以上所述就是小编给大家介绍的《监督式机器学习算法的应用:择时【附源码】》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Spark 源码分析(七): DAGScheduler 源码分析1(stage 划分算法)
- 以太坊源码分析—Ethash共识算法
- k8s调度算法源码跟读
- 图解kubernetes服务打散算法的实现源码
- 程序兵法: Java 源码的插入排序算法 (二)
- 3种堆内缓存算法,赠源码和设计思路
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。