解读:一种基于机器学习的数据驱动股票价格预测系统(附系统代码链接)
写在前面
“
下面这篇文章的内容主要是来自论文《A novel data-driven stock price trend prediction system》,其提出了一种基于数据驱动的股票价格趋势的预测系统,并附上了系统的源码。这篇论文提出的方法较为新颖和实用,所以整理了一下与大家分享。原论文以及该系统的源码链接在文末。
”
01
摘要
这篇论文中提出了一种股票价格趋势预测系统,它可以预测股票的价格波动方向以及在一段时间内的涨幅或者跌幅。这个系统主要分为了两部分,第一部分是通过一种非监督的算法对价格数据进行切分,并对切分得到的切片(clips)数据进行分类,来表示不同的价格趋势;第二部分是根求前面得到的切片来训练预测模型,预测模型用到了Random Forest(随机森林)。最后通过七年的深市创业板数据来验证了模型的有效性。
02
模型框架
通常对于监督性学习来说,模型的训练都需要基于标注的数据,而对于股票趋势分类来说的话,这个工作不免有些巨大和繁琐。所以这篇文中首先通过启发式非监督算法来划分价格的模式。具体分为了四种:
Up:表示上涨模式,同时这个模式又根据上涨范围的大小被划分了两个子模式,如上涨区间在[10%, 30%]内和大于30%。
Down:表示下降模式,同上涨模式一样,它也根据下降范围的大小被划分为了子模式。
Flat:表示近似平缓的模式。
Unknown:表示以大振幅波动的模式。
其中识别算法在下面的03模型训练部分中进行了展示。
这个系统的目的是根据一段时间(如过去一段时间到现在)的模式,来预测它是否可以构成前面划分的几种模式,并预测其生成这个模式的概率。由于这里不是传统的01分类,而是一种模式预测的概率,所以这里的实际用处还是相对比较高的。
预测模式的持续时间文中称作PD(Pattern Duration),用于训练的持续时间文中称作MD(Model Duration)。具体如下面的图所示:
对于不同持续时间的组合在其系统中也有进行预先设计,以便于这个系统可以开箱即用。
在实际的应用中,整个过程其实就可以看做是通过一个滑动窗口的形式,不断的对股票价格序列进行切片,训练以及模式识别的过程,具体如下面论文中的过程图:
模型的预测部分用到的是随机森林模型,毕竟对于要求高可解释性的量化交易领域中,像决策树或者逻辑回归这类较为透明的算法还是较为合理的。预测的训练过程部分也在03模型训练部分中。
最后,整个交易系统的模型框架,包括整个系统的软件设计架构在下面进行了展示:
03
模型训练
对于面前定义的非监督算法进行模式识别的具体步骤如下面的Algorithm1所示,由于上涨模式的识别其他模式识别的算法类似,所以Algorithm1只展示了上涨模式的识别步骤:
而预测部分的Random Forest的训练步骤如下面的算法Algorithm2过程所示,这里的算法流程与传统的Random Forest的训练过程还有些不同,因为考虑到了模式类中的不平衡性,所以这里还加入了undersampling的方法。
04
实验验证
实验的验证部分用到了真实的股票数据,来自深市科创板的495支股票,时间是从2010年1月25到2016年1月26日,并与常见的机器学习模型,如SVM、ANN以及KNN算法进行了预测准确率和收益率的比较。比较的效果如下面的表所示:
在不考虑各种滑点、手续费等因素的前提下,可以看出,论文中提出的方法的效果还是很客观的。
05
总结以及感悟
对于高噪声高不可预测性的股票市场,各种探究方式包括机器学习、统计推理等技术,作为理论研究学习一下还是不错的,但是实际应用起来还是需要更加充分的准备以及针对市场真实环境来改进的。
由于这篇文章涉及的理论性创新并不是很多,但是其工程实现方面还是很充分的,并且这个系统中还可以结合各种机器学习的模型用于预测,所以拓展性还是很强的。另外,通过结合其他方式的特征选择来识别更多趋势形态以提高预测准确率也是很有价值的。
“
论文中提出的系统的链接是:
https://sourceforge.net/p/xuanwu/svn/HEAD/tree/
关注公众号,后台发送008可获取原论文。
”
了解更多人工智能与
量化金融知识
<-请扫码关注
让我知道你在看