Py学习  »  机器学习算法

如何利用机器学习算法解读股市行情?

CSDN • 5 年前 • 442 次点击  


2018 AI 开发者大会是一场由中美人工智能技术高手联袂打造的 AI 技术与产业的年度盛会!这里有 15+ 硅谷实力讲师团、80+AI 领军企业技术核心人物、100+ 技术&大众实力媒体、1500+AI 专业开发者——我们只讲技术,拒绝空谈!

参加 2018 AI 开发者大会,请点击 ↑↑↑

作者 | Yura

责编 | 胡巍巍

故事从我们的大数据创业班的作业开始......


项目背景


在证券市场中,存在着大量历史交易数据。近年来随着大数据兴起,数据挖掘技术在股市中也得到了广泛的关注,在阅读文献的基础上我们小组对股市中不同情况如行业板块联动、行业指数涨跌预测、个股价格涨跌预测分别采用不同的机器学习算法进行分析。


关联规则与行业联动‍


一、算法介绍

关联规则可以通过特定的规则算法对数据进行分析,在海量的数据中寻找一个事件与其他事件的关联性和依赖性,挖掘出数据库中不同的数据项集之间隐藏的有价值的关联关系。

由于行业成长周期和货币财政政策调整给行业带来的机遇不同,造成股市出现行业联动现象。运用关联规则在股市的行业板块中找出这些频繁出现的项集有助于我们了解我国股市行业联动规律。

在此次建模过程中,我们主要采取支持度和置信度两个指标对建模结果进行分析和优化。支持度表示规则发生的频率,置信度表示二者的关联性。

Apriori算法过程:首先找出所有交易数据库中大于或者等于制定的最小支持度的频繁项集,再利用频繁项集生成所需要的关联规则,从而根据所设定的最小值信度筛选出强关联规则。

二、数据收集

首先我们利用同花顺IFIND软件下载AMAC行业指数历史涨跌幅数据。

本组采用中基协基金估值行业分类指数(简称“AMAC行业指数”) 2018年1月2日-2018年8月29日每日涨跌幅。

三、数据清洗

由于板块指数每日涨跌幅度相比个股涨跌幅度小,且集中于-2%至2%之间,将行业每日涨跌幅分为六个阶段,在R语言中处理数据。


处理后的数据

四、数据建模

关联规则核心代码:

首先我们采用支持度0.2,置信度0.8的条件,找出2条规则。

返回查表后,可得规则如下:

1.当化学制品指数涨跌幅在-1%<=涨跌幅<0%的时候,建筑指数涨跌幅很大可能在-1%<=涨跌幅<0%

2.当造纸指数指数涨跌幅在-1%<=涨跌幅<0%的时候,建筑指数涨跌幅很大可能在-1%<=涨跌幅<0%

当我们放宽要求,在支持度0.15,置信度0.8条件下,得出27条规则的时候。我们看一看排名前10 的规则:

我们可以从中得出行业间存在着显著的行业联动现象,且具有双向对称性,并且从中提取出具有强关联性板块有:

五、结论

在股市行业联动现象分析上关联规则算法表现较好。

在行业上涨阶段,投资者在选择投资组合时可以同时投资纺织行业、橡胶行业等上涨关联类行业以提高获得超额收益的概率。

在行业下跌阶段,投资者避免同时配置建筑行业、专用设备、通用设备等下跌关联类行业。


机器算法与涨跌预测‍


一、算法介绍

目前预测股票的建模模型可分为两类,一类为传统生成型类模型,包括自回归滑动平均模型和自回归异方差模型及它们的衍生扩展模型,但这类模型需要在样本足够大,且分布较好的情况下,预测效果才会比较理想;另一类为数据驱动模型,包括机器学习中的神经网络模型、支持向量机模型、K近邻分类器模型、决策树模型等,此类模型对样本的分布程度和样本量的要求均较低,可以借助对数据的分析进行非线性智能预测。

KNN 最近邻分类器模型

处理分类问题的算法,寻找与测试样例属性相对最接近的k个训练样例,根据少数服从多数的原则将测试样例判定为该类型。

贝叶斯模型

贝叶斯分类是一种基于贝叶斯定理的统计学分类方法,可以预测给定样本属于一个特定类的概率。 

 


决策树模型

有监督学习算法中处理回归问题与分类问题的模型。通过递回式切割的方法寻找最佳的分类标准,进而最终形成分类规则进行预测。

神经网络模型

神经网络的结构由一个输入层、若干个中间隐含层和一个输出层组成。神经网络分析法通过不断学习,能够从未知模式的大量的复杂数据中发现其规律,是一种自然的非线性建模过程。


二、数据获取

还是利用同花顺IFIND软件下载相关数据。

本组在进一步机器学习算法预测中选用上一部分板块联动中出现频率较高的建筑指数,并在建筑指数的成分股中挑选了财务指标较好的两只个股海波重科、亚翔集成进行涨跌预测分析。

三、数据清洗

本组在阅读文献后,我们将大部分学者集中选取的七种行情指标作为特征,选取下一日的涨跌情况为标签(注:涨为1,跌为0)

行情指标分别为:开盘价、最高价、最低价、收盘价、涨跌幅、成交金额、换手率。

R语言对数据进行量纲标准化、删除空缺值等预处理。


原始数据

0-1标准化之后的数据

四、数据建模

  • 随机划分训练集与测试集。

  • 通过决策树模型、贝叶斯模型、KNN与神经网络模型四种机器学习算法分别对数据集进行训练。

  • 通过交叉验证,改变k值学习曲线的k值等方法进行调优。

  • 进行拟合度讨论,对比分析四种机器学法算法的准确率,最终结果如图所示。

预测结果:


建筑指数涨跌预测中KNN模型效果最好,训练集准确率为0.63。

亚翔集成涨跌预测中神经网络模型训练集、测试集准确率均最高。

从决策树模型的变量重要性结果中可以得知:亚翔集成的当日开盘价变量对下一日涨跌影响最大。

神经网络模型训练集准确率最高,但贝叶斯网络测试集准确率最高。

值得关注的是海波重科的成交金额变量影响相比其他变量更大。

五、结论

在预测指数和个股涨跌方面机器学习算法预测股市涨跌整体效果一般。

测试集准确率整体在50%左右,其中神经网络模型模拟训练集时准确率均在90%以上,但测试集准确率在60%左右,过拟合现象严重,但神经网络模型相比其他三种模型,总体准确率较高,模拟效果相对更好。

其次模型效果较好的为KNN最近邻分类器模型与贝叶斯模型,决策树模型效果最差。

在继续构建机器学习算法预测股票涨跌模型中,首要关注算法仍是神经网络模型。


模型改进


在分析行业联动方面,我们只选择了2018年的行业指数,数据量可以继续扩大,找出更多的关联规则。且只分析了每日的行业指数,可以进一步找出周行情、月行情的关联规则,分析行业关于日周月的轮动规则。

在分析股票涨跌方面,选用了开盘价等七种行情指标作为特征,可以扩大至技术指标如布林线、KDJ指标、PSY心理指标等,增加特征,提高准确率。

神经网络模型在股票涨跌预测效果虽然是4种算法中最好的,但是过拟合现象严重,仍需优化及寻找其他解决方法。

作者:Yura,计算机科学与技术专业大四在读,因在澳洲交换学习接触了大数据,甚感兴趣。遂开公众号“Yura不说数据说”督促自己学习数据分析!欢迎大家关注我的个人公众号,一起(监督我)学习。


微信改版了,

想快速看到CSDN的热乎文章,

赶快把CSDN公众号设为星标吧,

打开公众号,点击“设为星标”就可以啦!


征稿啦

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。

推荐阅读:


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/EiF6z78RfW
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25651
 
442 次点击