R语言期末实验报告预测股票河北钢铁

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SAS与数据分析方法实验课程

实验报告

实验地点:81008

实验时间:2015年1月11日

成绩:______

实验成绩评定表

指导教师评定成绩:

指导教师签名:年月日

预测股票市场收益

问题描述与目标

股票交易市场绝对是数据挖掘技术的实战之地,事实上,数据挖掘技术在处理大量历史数据时要比人工检验更加优越,更加高效,另外,研究者声称,市场通过价格调整而发生快速变化,导致很难捕捉到持续盈利的投资方式,这就是所谓的有效市场假说,它表示在一个市场中如果价格能反映所有可获得信息,这种市场就成为有效市。但这一理论很快就被更加松弛的版本取代,因为有效市场并不一定永远是有效的,所以这也为交易机随时留有余地。

一般股票交易的目的就是通过买单卖单来维持一组证券资产。长期目标就是通过交易行为获得尽可能多的利润。本章我们的主要内容就限定在这个领域,基于既定的有价证券全要求和初始资本,我们会尽量扩大某一交易方式下未来的交易收益。我们的交易策略就是把数据挖掘的结果作为基本的决策信号,用于指导交易行为。这里的数据挖掘首先是基于历史报价构建模型,然后通过模型预测指数未来的变化趋势。我们的模型会被整合成一个交易系统,用来依据预测结果进行交易决策。另外,我们通过交易系统的表现作为评价准则,简单的说就是系统的交易行为所带来的获利和损失,以及其他一些投资者感兴趣的统计值。因此,通过数据挖掘过程所获得知识进行交易,这些交易获得的最终收益才是我们评价系统的标准,而不仅仅是模型预测的准确性

二、从网站上获取数据

获取数据的一种方法是使用Yahoo财经网站提供的免费服务。

数据的结构:交易的日期、开盘价、最高价、最低价、收盘价、交易量、调整的收盘价

为简单起见,用的是股票指数的数据

处理时间序列的包zoo,xts,后者是前者的拓展

表示的处理时间的类;POSIXct/POSIXIt,date

从CSV文件读数据

从网络读取数据

Quantmod包里的getSymbols()

从数据库读数据:包RODBC,RMySQL

获取数据如下:

library(quantmod)

library(tseries)

YT <- as.xts(get.hist.quote("000709.sz",start="2013-01-01",

quote=c("Open", "High", "Low", "Close","Volume","AdjClose"))) head(HB)

Date Open High Low Close Volume AdjClose

2001-01-01 7.95 8.02 7.95 8.00 0 1.57

2001-01-02 8.02 8.10 7.95 8.05 1579200 1.58

2001-01-03 8.06 8.12 8.04 8.10 2260700 1.59

2001-01-04 8.10 8.15 8.01 8.04 2144700 1.57

2001-01-05 8.02 8.06 7.98 8.01 3095100 1.57

2001-01-08 8.01 8.20 7.90 8.19 4344700 1.60

三、定义预测任务

1、预测什么

将学习的交易策略假设我们可以预测未来几天的市场变化趋势,如果这个预测在未来被验证时正确的,那么基于该预测下达的交易指令将是获利的。

事实上,我们需要预测的是在未来K天中价格总的动态变化,并不是预测某个特定时间的一个特定价格。

假设每天的平均价格可以有一下公式来近似:

其中,Ci、Hi、Li分别为第i天的收盘价、最高价和最低价。

设Vi代表未来k天的平均价格相对今天收盘价的百分比变化(通常称为算数收益):Vi=

我们把动态变化绝对值超过目标收益p%的变化进行累加作为一个指标变化T:

指标变化T用来找出在k天内,日平均价格明显高于目标变化的那些日期的变化之和。大的正T值意味着有几天的日平均报价高于今天收盘价的p%,这种情况表明有潜在的机会发出买入指令,因为有良好的预期价格会上涨。另一方面,大的负T值标明价格可能下降,可能进行卖出行动。如果T值接近零,则可能是由于价格平稳波动或价格涨跌互现,正的变化和负的变化互相抵消。

下面的函数实现这个简单的指标:

T.ind <- function(quotes,tgt.margin=0.025,n.days=10) {

v <- apply(HLC(quotes),1,mean)

r <- matrix(NA,ncol=n.days,nrow=NROW(quotes))

for(x in 1:n.days) r[,x] <- Next(Delt(v,k=x),x)

x <- apply(r,1,function(x) sum(x[x > tgt.margin | x < -tgt.margin]))

if (is.xts(quotes)) xts(x,time(quotes)) else x

}

为了更好的理解指标T的性质,绘图的代码如下:

candleChart(last(HB,'3 months'),theme='white',TA=NULL)

avgPrice <- function(p) apply(HLC(p),1,mean)

addAvgPrice <- newTA(FUN=avgPrice,col=1,legend='AvgPrice')

addT.ind <- newTA(FUN=T.ind,col='red',legend='tgtRet')

相关文档
最新文档