监督式机器学习算法的应用:择时
由ypyu创建,最终由qxiao 被浏览 306 用户
旧版声明
本文为旧版实现,仅供学习参考。
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
\
导语
《Machine Learning for Stock Price Forecasting》是Ali El-Shayeb撰写的机器学习系列文章 ,本文主要介绍其第二部分内容——《监督式机器学习算法的应用》,并将其思想和代码应用在中国股票市场,开发出具有择时功能的监督式机器学习算法,最后进行策略回测。对此感兴趣的小伙伴可以直接在本文文末克隆策略源代码,进行深入和扩展研究。
《监督式机器学习算法的应用》
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机器学习包相关的算法名称。
策略回测结果
从上图可以看出,该策略在在回测区间总收益率为12.96%。
策略源码
https://bigquant.com/experimentshare/02132deec5914bfeb315f8d734df9ba4
需要说明的是,本文旨在复现国外数据科学家的一个量化策略,介绍如何在A股市场开发ai量化策
略,希望大家能够快速高效开发策略。因此并不对策略收益做保证。
参考文献
- Machine Learning for Stock Price Forecasting (1/3) [网页链接] [网盘链接]
- Machine Learning for Stock Forecasting [网页链接] [网盘链接]
\