项目进展报告
数据获取及预处理
数据可以从网易财经频道直接下载,选取了深市编号从1到1000的的股票数据,日期是从2017年1月1日到2017年12月31日,其中并不是每一个编号都对应一支真实的股票,实际股票数量略少于1000,但已经能满足数据挖掘的需要。 数据的预处理首先需要对从网易财经获得的深证综值进行清洗,具体包括: (1)填补日期,并对非交易日的数据进行剔除; (2)除去股票中不需要的属性;保留日期、开盘价、最高价、最低价、收盘价、成交量这六个基本变量
数据分析与可视化
首先进行计算指标的确立,为了能够较准确地刻画每支股票,我们需要一些指标去描述这些股票的特征。对股票来说,历史上很多技术分析大师已经发明或设计了无数的股票技术指标,所以可以直接从中筛选一些指标,选取的指标如下所示。 指标标记 指标名称 计算方法 s_xl 当日涨幅 (当日收盘价一前第ii日收盘价)/前第n日收盘价x 100% s_x2 2曰涨幅 s_x3 5日涨幅 s_x4 10日涨幅 s_x5 30日涨幅 s_x6 10日涨跌比率ADR 10日内股票上涨天数之和/N日内股票下跌天数之和 s_x7 10日相对强弱指标RSI RSI= ]00xRS/(l+RS). RS = n日的平均上涨点数/n日的平均下跌点数 s_x8 当日K线值 (收盘价-开盘价)/(最高价-最低价) s_x9 3日K线值 (收盘价一3日前开盘价)/ (3日内最高价-3日内最低价) s_xl0 6日K线值 (收盘价一6日前开盘价)/( 6日内最高价-6日内最低价) s_xl1 6日乖离率(BIAS) 乖离率=[(当日收盘价一6日平均价)/6日平均价]x 100% s_xl2 10日乖离率(BIAS) 乖离率=[(当日收盘价-10日平均价)/1〇日平均价]x 100% s_xl3 9 曰 RSV (n日收盘价-n日最低价)/(n日最高价一n日最低价)x 100% s_xl4 30 日 RSV s_xl5 90 日 RSV s_xl6 当日OBV量比 n 曰 OBV / 5 曰 OBV s_xl7 5日OBV量比 s_xl8 10日OBV量比 s_xl9 30日OBV量比 s_x20 60日OBV量比 s_y 分类指标 根据未来1日与3日涨幅来确定sj为1或一 1
接下来利用ahp权重法计算matlab程序,收集训练数据和预测数据,最终得到两个数据文件: (1)历史上好、坏及一般股票的样本数据文件为train orginal sample.xlsx,该文件数据的主要是用于训练模型。 (2)当日所有股票的指标文件,该文件的数据主要用于预测未来股票的涨跌潜力。 下一步进行数据标准化,数据标准化的目的是消除变量间的量纲(单位)影响和变异大小因子的影响,使变量具有可比性。这里将用均值方差归一化法来对数据进行标准化,所得数据在[0,1]之间。
模型选取
股票的预测方法有多种,我们利用分类的思想对股票进行预测。分类是在已有数据的基础上,根据各个对象的共同特性,构造或通过学习生成一个分类函数或一个分类模型,利用这个分类模型把其他数据映射到给定类别中的某一个的过程。数据挖掘中相关的分类方法有很多,比如较常用的有决策树、逻辑回归、支持向量机、神经网络等。我们最终选择使用神经网络来训练分类,最后利用神经网络训练该组数据,使其数据达到最大的区分度,此时得到的模型就可以用来预测。比如计算了某股票当日所有指标变量后代人该模型中,就可以预测该股票未来的走势分别属于这两类的可能性。
挖掘实验的结果
利用分类算法对训练样本进行训练并实现预测的效果。这里我们运用MATLAB自带的神经网络工具箱中的函数进行训练,模型的执行结果是得到一个所有股票的排序表格(Forecastjesult.xlsx ),排序的依据是最后1列模型预测出的数据,这个数据可以理解为股票未来增长的概率,也可以对这个概率按四舍五入取整,得到的则是分类数据。这个结果的作用是,在实际股票买卖过程中,我们可以选择排名靠前的股票买入,反之卖出,这就提供了量化选股中买人和卖出的条件。 最后对模型进行了评估,评估用的是历史数据,且所用的验证方法是全集验证,最终准确率接近56%,正确率还不够高,不足够指导股票交易。
存在的问题
最终结果的准确率偏低,变量的选取存在一定的问题,并不确定这些变量是否都有效,如果有效性差,不仅使程序需要处理的数据量增多,且还会影响模型的准确程度,因为相关性差或数据质量差的变量有可能稀释模型的作用。解决方法是在进行模型的训练前,增加一步变量的筛选
下一步工作
利用数据相关性分析方法来确定变量之间的相关性,并定义一个相关系数阈值,来最终筛选出效果显著的变量,并通过这些变量重新训练模型。