93人加入学习
项目实操:基于SVM机器学习算法股票预测分析
价格 免费
课程介绍

一、项目背景

      量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术,从庞大的历史数据中,通过模型分析出能够带来较好收益的“大概率”事件,用以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。 我国股票交易通过深交所和上交所两个交易所进行。从1990 年至今,深交 所和上交所共发行了股票 3000 多只,如何从这么多的股票中选择投资的股票, 预测其涨跌情况,成为众多投资者需要解决的难题。本项目从选出的股票中,采 用 SVM 机器算法模型,根据股票的历史数据,构建训练数据集,采用模型进行 机器学习训练获取策略,从而分析预测股票的涨跌情况。 SVM(Support Vecor Machine,支持向量机)是一个很复杂的算法,为了便 于理解,简单介绍一下 SVM 的思想,读者能够使用 SVM 就可以了。

       SVM 是一种二分类的模型,分为线性和非线性两大类。主要思想为找到空 间中的一个将所有数据样本划开的超平面,并且使得所有数据到这个超平面的距离最短。 三维空间方程为 ,从这个方程可以推导出二维空间的一条直线 。 依次类推,高维的空间超平面表达式: x 代表的是一个向量。 二维空间的几何表示: 泰迪科技数据分析项目实训 任务书 2 SVM 的目标是找到一个超平面,这个超平面能够很好的解决二分类问题, 所以先找到各个分类的样本点离这个超平面最近的点,使得这个点到超平面的距 离最大化,最近的点就是虚线所画的。由以上超平面公式计算得出大于 1 的就属 于打叉分类,如果小于 0 的属于圆圈分类。 在超平面 确定的情况下, 表示点 x 到超平面的距离远近,而通过观察 的 符号与类标记 y 的符号是否一致可判断分类是否正确,所以,可以用 的正负性 来判定或表示分类的正确性。 对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度 (confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超 平面能够最大化这个“间隔”值。这个间隔就是下图中的 Gap 的一半。

         本项目对某投资者的 15 只自选股票,采集了从 2010 年 1 月 1 日至 2020 年 9 月 29 日共 10 年多的股日线行情(开盘价,收盘价,最高价,最低价,成交量, 成交额等)数据,并保存在 Excel 文件中。 无论是量化策略还是单纯的机器学习项目,数据预处理都是非常重要的一环。 数据预处理主要包括数据清洗,排序,缺失值或异常值处理,统计量分析,相关 性分析,主成分分析(PCA),归一化等。本项目数据预处理比较简单,只是将 Excel 文件的日线行情数据整合成一份训练集数据,以用于后续的机器学习建模 和训练。本项目采用 scikit-learn 有监督学习的算法对个股进行建模,输入端的数 据是个股每日基础行情,输出端数据是股价相较前一交易日的涨跌状态。简单地 说,向模型输入今天的基础行情,让模型预测明天股价是涨还是跌。 本项目使用 Python 编程,采用面向对象的思想,将股票的整个数据预处理 泰迪科技数据分析项目实训 任务书 3 过程和结果,封装成类,并创建类实例化,获得训练的数据集。

最终实例化后是要整合出三个数据:

(1) self.train:训练集中的输入端数据,本项目中是每日的日线行情数据。

(2)self.target:训练集中的输出数据,本项目中相较于前一天股价的涨跌, 涨为 1,不涨为 0。并且在排序上,每条 t 交易日的 self.train 里的数据对应的是 t+1 天股价的涨跌状态。

(3) self.test_case:在 t 末交易日的基础行情数据,作为输入端,用于模型 训练完成后,对第二天的涨跌进行预测。

        SVM 机器学习属于有监督学习算法,本项目采用 SVM 算法进行建模。关于 SVM 的理论原理请参考其他文章,此处只介绍建模实践。 建模、训练并进行预测的代码十分简单: model = svm.SVC() # 建模 model.fit(train, target) # 训练 ans2 = model.predict(test_case) # 预测 只有三行代码,也说明 Python 在数据挖掘方面的强大之处:简单,方便, 好用。 本例用的机器学习框架是 scikit-learn,是一个非常强大的算法库,想要熟悉 算法原理的同学可以查阅官方 API 文档,可修改模型参数,进一步调优模型;亦 可尝试其他算法比如决策树,逻辑回归,朴素贝叶斯等。 本项目通过相对较短的时间内完成一个大数据和人工智能的股票预测分析 任务,向学生展示了大数据和人工智能应用中的分析流程,使学生在现实中的应 用有一个整体的了解和掌握。通过本项目的学习,学员不仅能够掌握 SVM 机器泰迪科技数据分析项目实训 任务书 4 算法的应用,同时还为从事大数据和人工智能累积了项目的方法、流程和经验。 本项目采用“技术顾问”+“项目经理”+“学员”的团队组织模式,以完全 企业化的方式与学生进行交流。学员在项目进行中,能熟悉企业的工作环境,在规定时间内完成项目需求、提升专业技术、锻炼团队协作能力与沟通能力。

1、系统界面

(1) 输入界面: 请输入需要预测的股票代码(可以一只或多只): 例子:300115.SZ , 300102.SZ , 603606.SH , 600184.SH , 300101.SZ , 002510.SZ , 300115.SZ , 300497.SZ , 300355.SZ , 002241.SZ , 300433.SZ , 002475.SZ , 300030.SZ , 002030.SZ , 600030.SH , 300719.SZ 请输入需要起止日期: 例子: 2018-01-02 2018-09-30

(2) 输出界面: 002030.SZ 0.0 下跌 603606.SH 1.0 上涨 2、 主流技术 本项目采用 Python 编程,涉及技术包括 SVM 算法、scikit-learn 模型和 xlrd 模块。

二、项目目标

     本项目目标是从 15 只股票的 Excel 文件的历史数据中,采用类的方法,建 立训练数据集,使用 SVM 机器算法模型,预测股票下一个交易日的涨跌情况。

      2. 对不同的商圈分群进行特征分析,比较不同商圈类别的价值,选择合适的区域进行运营商的促销活动。。

 

三、实现工具

      Python3:NumPy、Pandas、Matplotlib、Scikit-learn等。

 

注:本课程仅供在线实习班级使用。