基于机器学习的股票分析与预测模型研究
2019-05-11姚雨琪
摘 要:近年来,随着全球经济与股市的快速发展,股票投资成为人们最常用的理财方式之一。本文研究的主要目标是利用机器学习技术,应用Python编程语言构建股票预测模型,对我国股票市场进行分析与预测。采用SVM与DTW构建股票市场的分析和预测模型,并通过Python编程进行算法实现。
本文对获取到的股票数据进行简单策略分析,选取盘中策略作为之后模型评估的基准线。分别选取上证指数、鸿达兴业股票、鼎汉股票数据利用已构建的支持向量机和时间动态扭曲模型在Python平台上进行预测分析,结果表明,对于上证指数而言,支持向量机预测下逆向策略更优,对于鸿达兴业股票和鼎汉股票而言,支持向量机预测下正向策略更优;基于时间动态扭曲算法的预测方法对于特定的股票有较高的精度和可信度。研究结论表明将机器学习运用于股票分析与预测可以提高股票价格信息预测的效率,保证对海量数据的处理效率,机器学习过程可以不断进行优化模型,使得预测的可信度和精度不断提高,机器学习技术在股票分析方面有很高的研究价值。
关键词:机器学习;股票预测;Python;SVM;DTW
中图分类号:F830.91 文献标识码:A 文章编号:1008-4428(2019)02-0123-02
一、 引言
国外股票市场的股票分析预测开始得很早,研究者们将各种数学理论、数据挖掘技术等应用到股票分析软件中,并通过对历史交易数据的研究,从而得到股票的走势规律。
近年来,由于现实中工作与研究的需要,机器学习的研究与应用在国内外越来越重视。机器学习可以在运用过程中依据新的数据不断学习优化,完善预测模型。将机器学习应用于股票市场的预测,从股票的历史数据中挖掘出隐藏在数据中的重要信息。这样既能够为股民们对股价预测研究提供理论支撑,又能够为公司的领导层提供决策支持。
基于此,本文選择机器学习在股票分析中的应用作为研究方向。在机器学习及股票分析相关理论基础上,使用Python开发工具,并分别运用支持向量回归及时间动态扭曲进行预测。
二、 相关技术与理论
(一)机器学习
机器学习是融合多领域技术的交叉学科,主要包括概率论与数理统计、微积分、线性代数、算法设计等多门学科。通过计算机相关技术自动“学习”实现人工智能。
(二)股票分析方法
1. 基本面分析
基本面分析指的是在分析股票市场供应和需求关系的相关因素(如宏观经济、政策导向、财务状况以及经营环境等)基础上确定股票的实际价格,从而预测股票价格的趋势。
2. 技术面分析
技术面分析指的是对股票图样趋势来分析和研究,来判断价格的走势。
(三)基于Python的经典机器学习模型
1. 支持向量机(SVM)
该模型最初用于分类,其最终目标是引入回归估计。建立回归估计函数G(x),其中回归值与目标值之间的差值小于μ,同时保证该函数的VC维度最小。线性或非线性函数G(x)的回归问题可以转化为二次规划问题,并且获得的最优解是唯一的。
2. 动态时间扭曲(DTW)
这是衡量时间序列之间的相似性的方法,并可以用在语音识别领域以判断两段声音是否表达了同一个意思。
三、 股票预测模型的构建
(一)确定初始指标
1. 基于支持向量机确定指标
施燕杰(2005)利用支持向量机进行股票分析与预测,在多次反复尝试基础上提出了一系列的指标作为预测模型的输入向量,该指标能够有效地预测未来股价波动情况,本文在结合自身研究的基础上,对以上施燕杰提出的指标进行改进。在原有的指标基础上添加7日平均开盘价和7日平均收盘价,去除了成交额保留了成交量。最终建立如表1所示的20个初选指标。
本文主要是进行股票分析与预测,因此在综合考虑各个价格指标的基础上,本文选择选定时间段的下一日收盘价作为模型的输出向量。
2. 基于动态时间扭曲确定指标
根据往常研究经验,我们将时间序列数据分成不同的期间,每个期间长度为5日,以每个时间段相邻每日收盘价涨跌率变化趋势为初始指标。选择时间序列期间下一日的收盘价与期间内最后一日收盘价涨跌率作为模型的输出向量。
(二)选择样本
1. 实验对象
本文在分别在主板市场、中小板市场和创业板市场中采取随机抽样的方法各随机选择一只股票数据作为研究对象,分别是上证指数、鸿达兴业股票、鼎汉股票。
2. 样本规模
我们选取了2011年至2017年间上证指数1550条数据,2015年至2017年的鸿达兴业股票532条数据、鼎汉股票572条数据。分别将三类数据划分为两组,其中一组选取200条数据作为训练样本数据,用于对预测模型进行训练;剩余数据作为测试样本数据,用于检验模型的预测效果。
(三)数据采集与预处理
从网上通过爬虫或者接口的方法获取股票历史数据,并对数据进行整理和清理,调整异常以及缺失的数据,根据分析需求将数据进行离散化、二元化。
(四)模型策略
1. 基于支持向量机模型策略
利用训练集数据进行模型拟合,并用它测试测试集数据,得到预测结果,将预测值与实际数据进行比较。
2. 基于动态时间扭曲模型策略
通过算法运行获得每个序列相对于其他序列的距离度量,并将其放入一个DataFrame对象。删除相互距离为零的序列,再根据序列的日期进行排序,只观测第一个序列在时间上排在第二个序列之前的那些,删除相同的序列对。最后,将交易限制到相互距离小于1,而第一个序列的回报为正的情况。我们将得到一系列日前收盘价曲线相近的序列,接下来,构造一个策略函数,根据新进入的数据对模型进行学习、优化。
四、 股票市场预测的实现
(一)数据处理和策略分析
我们通过tushare提供的API获取交易数据。获得的上证指数、鸿达兴业股票、鼎汉股票的历史数据是经过清洗加工过的,数据整洁且无缺失异常,可以直接用于接下来的研究分析。
保留最高价、最低价、开盘价、收盘价、交易量这几个原始属性,整理得到一系列数据。针对这些数据,进行初步分析,探索如何进行投资,以及该时期回报将是多少,并分析三组数据在持有策略、隔夜策略、盘中策略三种基本策略下的统计数据。结果发现三只股票在三个策略中,持有策略优于隔夜策略,隔夜策略又优于盘中策略。
(二)预测实现
1. SVM预测效果分析
基于上证指数进行模型拟合,并用它测试训练样本之外的数据,得到预测,当模型预测强劲的收益时,选择不交易,相反,当模型预测亏损时,反而进行交易,接下来探索此时的收益与效果,并与盘中策略相比较,如图1所示。
逆向模型似乎表现出明显的优势,经过数据分析认为,针对该只股票,运用支持向量回归建模进行预测并结合逆向策略的投资方式,在股票投资中将表现出一定优势。
基于鸿达兴业股票进行模型拟合,并用它测试训练样本之外的数据,得到预测,若预测的当日收盘价高于当日开盘价,则当天开盘时买入,并在当天收盘时卖出。获取完整统计数据,探索此时的收益与效果,并与盘中策略相比较,如图2所示。
经过以上分析,对于鸿达兴业股票运用支持向量机预测,采取正向策略,即预测会收益就买入的策略,具有一定优势。
基于鼎汉股票进行模型拟合,并用它测试训练样本之外的数据,得到预测,发现和鸿达兴业股票的结果类似,也是采取正向策略有一定优势。
2. DTW预测效果分析
基于上證指数利用DTW算法,得到一系列日前收盘价曲线相近的序列,而且第一个序列的回报为正。按照策略来买,然后评估交易。
盈利/亏损比例和夏普比率远高出其他的模型。根据数据显示,这个新模型在股票预测上更具有优势,特别是与之前的模型相比。
基于鸿达兴业股票得到的收益、夏普指数都劣于作为基线的盘中的策略,说明基于DTW的预测方法不适用于该只股票。
模拟鼎汉股票发现夏普比率远高于其他的模型。根据数据显示,对于这只股票的预测时间动态扭曲建模更具有优势,特别是与之前的模型相比。
五、 结论与展望
本文研究数据是基于2014年至2017年的三只股票的数据,其出发点和结论贴合特定时间段特定股票的行情情况,但是在历史时段或未来行情的适应性仍有待考虑。同时,本文所围绕的技术面分析是基于三大假设基础上的:一是市场行为可以包容和消化所有可能影响股价的信息。二是历史会不断重演。三是价格以趋势性变化。而现实中股票市场受宏观经济、政治环境和投资者心理等因素影响很大,所以在具体运用本文的模型时,仍要根据具体情况进行改进和优化。
支持向量机虽然相对于其他方法具有其独特的优点,并且应用的领域十分广泛,但是该方法在实际的应用中还是存在很大可以改进的空间的。在之后的进一步研究中我们可以考虑对算法进行优化。
参考文献:
[1]刘梦莹.基于机器学习的基金优选系统设计与实现[D].北京:北京交通大学,2018.
[2]肖晞晖.基于大数据和机器学习的量化选股模型研究[D].武汉:华中师范大学,2018.
作者简介:
姚雨琪,女,江西南昌人,江西财经大学信息管理学院。