股票数据分析与预测——中期报告

成员

  • 姚明宇
  • 于畅泳
  • 于文楠

一、项目进展

1 数据获取

从国内流行的财经网站上下载得到我们的股票指标,在网上采集了上海证券交易所招商银行股票最新的交易数据。 这些指标有收盘价、最高价、最低价、开盘价等。

日期 股票代码 名称 收盘价 最高价 最低价 开盘价 前收盘 涨跌额 涨跌幅 换手率 成交量 成交金额 总市值 流通市值
2016/6/14 600036 招商银行CMB 17.38 17.5 17.29 17.33 17.32 0.06 0.3464 0.0531 10953458 190753279 4.38E+11 3.59E+11
2016/6/13 600036 招商银行 17.32 17.79 17.29 17.58 17.77 -0.45 -2.5324 0.0786 16220713 284764728 4.37E+11 3.57E+11
2016/6/08 600036 招商银行 17.77 17.84 17.65 17.75 17.8 -0.03 -0.1685 0.0461 9514926 168924714 4.48E+11 3.67E+11
2016/6/07 600036 招商银行 17.8 17.87 17.59 17.76 17.64 0.16 0.907 0.0545 11250355 199544447 4.49E+11 3.67E+11
2016/6/06 600036 招商银行 17.64 17.83 17.56 17.73 17.78 -0.14 -0.7874 0.0619 12770352 225235543 4.45E+11 3.64E+11
  • 将获取的原始数据转换成时间序列数据 (xts),方便之后的计算和建模。

2 实验环境

实验环境:Rstudio,使用数据挖掘中流行的R语言来处理我们的数据,R语言中有一些有用的程序包可以满足不同的需求, 借助现有的程序包可以方便我们处理,完成实验。

本实验中用到的程序包:DMwR、quantmod、xts、TTR、randomForest、e1071、kernlab、nnet

3 建立模型

3.1 T指标变量

引入指标变量T,假设在未来k天内我们的目标是获得b%的利润,一天的平均价格可以用当天的收盘价、最高价和最低价的均值来表示。 指标T用来找出在k天内,日平均价格明显高于目标变化的那些日期的变化之和。 若T值为正,并且值较大则表明有几天的日平均报价高于今天收盘价的b%,这种情况说明对于未持该股票的股民可以进行买入; 相反,若T值为负,表明价格可能下降,这种情况对应着持有该股票的股民可以进行卖出; T值趋于0则表示价格相对平稳,可以进行买入或卖出。在实验中,我们设计的b值为2.0。

导入股票数据之后,我们首先计算数据的T指标,并画出K线图和指标线图,如下图所示:

K线图中柱条:表示当天的最高、最低价格;框:表示开盘价和收盘价,橙色:一天中呈下降趋势,绿色:一天中呈上升趋势。 本实验中计算的是未来 10 天内的T值,如 Figure1中下方的图线所示 根据未来 10 天内股价的变化来得到T值,在股价大跌时取得较大的负值,大涨时取得较大的正值。

3.2 股票评价指标

TTR程序包中给出了许多种评价股票的指标: ATR(Average True Range,平均真实波幅) SMI(Stochastic Momentum Index,随机动量指数) ADX(Average Directional Index,平均趋向指标) MACD(Moving Average Convergence/Divergence, 指数平滑异同移动平均线)等。 面对诸多指标,我们引入随机森林算法,用它来检测指标的重要程度,选择几个重要的指标,计算结果如下图:

我们筛选出重要性大于5%的指标,用这些大于5%的指标的线性组合来表示股票最终的评价。

二、待完成的工作

通过实验,我们选出了6种评价股票的指标,下一步打算对这些指标用SVM和人工神经网络建模,最后设计几种交易策略,进行模拟交易。