金融观察Һ㊀
基于机器学习的股票分析与预测模型研究①
姚雨琪
摘㊀要:近年来ꎬ随着全球经济与股市的快速发展ꎬ股票投资成为人们最常用的理财方式之一ꎮ本文研究的主要目标是利用机器学习技术ꎬ应用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个初选指标ꎮ
表1㊀初选指标
变量X1X2X3X4X5X6X7X8X9X10含义
今日
开盘价
昨日
开盘价
前日
开盘价
7日平均
开盘价
今日
最高价
昨日
最高价
前日
最高价
7日平均
最高价
今日
最低价
昨日
最低价变量X11X12X13X14X15X16X17X18X19X20含义
前日
最低价
7日平均
最低价
今日
收盘价
昨日
收盘价
前日
收盘价
7日平均
收盘价
今日
成交量
昨日
成交量
前日
成交量
7日平均
成交量㊀㊀本文主要是进行股票分析与预测ꎬ因此在综合考虑各个
价格指标的基础上ꎬ本文选择选定时间段的下一日收盘价作为模型的输出向量ꎮ
2.基于动态时间扭曲确定指标
根据往常研究经验ꎬ我们将时间序列数据分成不同的期间ꎬ每个期间长度为5日ꎬ以每个时间段相邻每日收盘价涨跌率变化趋势为初始指标ꎮ选择时间序列期间下一日的收盘价与期间内最后一日收盘价涨跌率作为模型的输出向量ꎮ(二)选择样本
1.实验对象
本文在分别在主板市场㊁中小板市场和创业板市场中采取随机抽样的方法各随机选择一只股票数据作为研究对象ꎬ分别是上证指数㊁鸿达兴业股票㊁鼎汉股票ꎮ
2.样本规模
我们选取了2011年至2017年间上证指数1550条数据ꎬ2015年至2017年的鸿达兴业股票532条数据㊁鼎汉股票572
321
①基金项目:江西财经大学第十三届科研课题立项ꎻ编号xskt18345ꎮ
条数据ꎮ分别将三类数据划分为两组ꎬ其中一组选取200条数据作为训练样本数据ꎬ用于对预测模型进行训练ꎻ剩余数据作为测试样本数据ꎬ用于检验模型的预测效果ꎮ
(三)数据采集与预处理
从网上通过爬虫或者接口的方法获取股票历史数据ꎬ并对数据进行整理和清理ꎬ调整异常以及缺失的数据ꎬ根据分析需求将数据进行离散化㊁二元化ꎮ
(四)模型策略
1.基于支持向量机模型策略
利用训练集数据进行模型拟合ꎬ并用它测试测试集数据ꎬ得到预测结果ꎬ将预测值与实际数据进行比较ꎮ
2.基于动态时间扭曲模型策略
通过算法运行获得每个序列相对于其他序列的距离度量ꎬ并将其放入一个DataFrame对象ꎮ删除相互距离为零的序列ꎬ再根据序列的日期进行排序ꎬ只观测第一个序列在时间上排在第二个序列之前的那些ꎬ删除相同的序列对ꎮ最后ꎬ将交易限制到相互距离小于1ꎬ而第一个序列的回报为正的情况ꎮ我们将得到一系列日前收盘价曲线相近的序列ꎬ接下来ꎬ构造一个策略函数ꎬ根据新进入的数据对模型进行学习㊁优化ꎮ
四㊁股票市场预测的实现(一)数据处理和策略分析
我们通过tushare提供的API获取交易数据ꎮ获得的上证指数㊁鸿达兴业股票㊁鼎汉股票的历史数据是经过清洗加工过的ꎬ数据整洁且无缺失异常ꎬ可以直接用于接下来的研究分析ꎮ
保留最高价㊁最低价㊁开盘价㊁收盘价㊁交易量这几个原始属性ꎬ整理得到一系列数据ꎮ针对这些数据ꎬ进行初步分析ꎬ探索如何进行投资ꎬ以及该时期回报将是多少ꎬ并分析三组数据在持有策略㊁隔夜策略㊁盘中策略三种基本策略下的统计数据ꎮ结果发现三只股票在三个策略中ꎬ持有策略优于隔夜策略ꎬ隔夜策略又优于盘中策略ꎮ
(二)预测实现
1.SVM预测效果分析
基于上证指数进行模型拟合ꎬ并用它测试训练样本之外的数据ꎬ得到预测ꎬ当模型预测强劲的收益时ꎬ选择不交易ꎬ相反ꎬ当模型预测亏损时ꎬ反而进行交易ꎬ接下来探索此时的收益与效果ꎬ并与盘中策略相比较ꎬ如图1所示
ꎮ
图1㊀盘中策略与策略三对比(修改测试时间段)
逆向模型似乎表现出明显的优势ꎬ经过数据分析认为ꎬ针对该只股票ꎬ运用支持向量回归建模进行预测并结合逆向策略的投资方式ꎬ在股票投资中将表现出一定优势ꎮ
基于鸿达兴业股票进行模型拟合ꎬ并用它测试训练样本之外的数据ꎬ得到预测ꎬ若预测的当日收盘价高于当日开盘价ꎬ则当天开盘时买入ꎬ并在当天收盘时卖出ꎮ获取完整统
计数据ꎬ探索此时的收益与效果ꎬ并与盘中策略相比较ꎬ如图2所示ꎮ
图2㊀盘中策略与策略一对比
经过以上分析ꎬ对于鸿达兴业股票运用支持向量机预测ꎬ采取正向策略ꎬ即预测会收益就买入的策略ꎬ具有一定优势ꎮ
基于鼎汉股票进行模型拟合ꎬ并用它测试训练样本之外的数据ꎬ得到预测ꎬ发现和鸿达兴业股票的结果类似ꎬ也是采取正向策略有一定优势ꎮ
2.DTW预测效果分析
基于上证指数利用DTW算法ꎬ得到一系列日前收盘价曲线相近的序列ꎬ而且第一个序列的回报为正ꎮ按照策略来买ꎬ然后评估交易ꎮ
盈利/亏损比例和夏普比率远高出其他的模型ꎮ根据数据显示ꎬ这个新模型在股票预测上更具有优势ꎬ特别是与之前的模型相比ꎮ
基于鸿达兴业股票得到的收益㊁夏普指数都劣于作为基线的盘中的策略ꎬ说明基于DTW的预测方法不适用于该只股票ꎮ
模拟鼎汉股票发现夏普比率远高于其他的模型ꎮ根据数据显示ꎬ对于这只股票的预测时间动态扭曲建模更具有优势ꎬ特别是与之前的模型相比ꎮ
五㊁结论与展望
本文研究数据是基于2014年至2017年的三只股票的数据ꎬ其出发点和结论贴合特定时间段特定股票的行情情况ꎬ但是在历史时段或未来行情的适应性仍有待考虑ꎮ同时ꎬ本文所围绕的技术面分析是基于三大假设基础上的:一是市场行为可以包容和消化所有可能影响股价的信息ꎮ二是历史会不断重演ꎮ三是价格以趋势性变化ꎮ而现实中股票市场受宏观经济㊁政治环境和投资者心理等因素影响很大ꎬ所以在具体运用本文的模型时ꎬ仍要根据具体情况进行改进和优化ꎮ
支持向量机虽然相对于其他方法具有其独特的优点ꎬ并且应用的领域十分广泛ꎬ但是该方法在实际的应用中还是存在很大可以改进的空间的ꎮ在之后的进一步研究中我们可以考虑对算法进行优化ꎮ
参考文献:
[1]刘梦莹.基于机器学习的基金优选系统设计与实现[D].北京:北京交通大学ꎬ2018.
[2]肖晞晖.基于大数据和机器学习的量化选股模型研究[D].武汉:华中师范大学ꎬ2018.
作者简介:
姚雨琪ꎬ女ꎬ江西南昌人ꎬ江西财经大学信息管理学院ꎮ
421。