金融统计(1)获取数据
1.从网络下载数据
下载股票数据,有几种不同的方法(当然并不止这几种方法)。
(1)quantmod包的getSymbols(),这个是个比较好的方法。这个函数其实是个打包的函数,可以从多个来源下载股票数据,
包括yahoo, google, MySQL, FRED, csv, RData和 oanda。
library(quantmod)
sse<-getSymbols(\"^SSEC\\"yahoo\") tail(SSEC)
SSEC.Open SSEC.High SSEC.Low SSEC.Close SSEC.Volume SSEC.Adjusted 2013-02-22 2322.94 2330.88 2308.76 2314.16 97000 2314.16 2013-02-25 2320.62 2338.78 2315.01 2325.82 88400 2325.82 2013-02-26 2313.74 2340.71 22. 2293.34 117600 2293.34 2013-02-27 2297.77 2324.63 2292.03 2313.22 97800 2313.22 2013-02-28 2322.32 2366.16 2308.92 2365.59 127000 2365.59 2013-03-01 23.54 2369.65 2330.86 2359.51 120400 2359.51
getSymboles这个函数其实是取符号,数据是在符号“SSEC”里边 或者
sse<-getSymbols(\"^SSEC\\"yahooail(sse)
这样sse就有了股票数据
如果喜欢用代码,也可以这样操作,如招商银行
sse<-getSymbols(\"600036.ss\\"yahoo\
如果知道代码不知道符号,可以这样:
setSymbolLookup(z=list(name=\"600036.SS\getSymbols(\"z\")#会输出符号Z tail(Z)
上边这些是日数据,月数据可以用xts包的to.monthly转换一下# to.period,转换周,季,年类似处理
sse<-getSymbols(\"^SSEC\\"yahoo\")
SSEC.m<-to.monthly(SSEC) tail(SSEC.m)
#这个结果里边,2003年9月的成交量是错误的。 #修改之后,画个图看看
candleChart(SSEC.m,theme=\"white\")
quantmod包是做金融技术分析最有用的包之一。
(2)tseries包 library(tseries)
ssec<-get.hist.quote(instrument = \"^SSEC\end=\"2013-03-01\head(ssec)
AdjClose 2012-01-04 2169.39 2012-01-05 2148.45 2012-01-06 2163.40 2012-01-09 2225. 2012-01-10 2285.74 2012-01-11 2276.05
默认下载是yahoo,下载以后的默认对象是zoo,AdjClose是向前复权的价格。也可以使用股票的代码,如招商银行, instrument = \"600036.SS\"。
(3)stockPortfolio包
getReturns()可以从yahoo下载数据,目的是计算对应的收益率,但是结果列表中也有对应时间区间的数据 library(stockPortfolio)
ssec<-getReturns('^SSEC', freq = \"month\\"2008-01-01\
ssec#返回的是月均收益-0.009940081 ssec$full#返回的是月数据
当然,这里只是给出的R包的现成方法,下载金融数据的方法和渠道远不局限与此。另外,从不同来源下载的数据可能是有差异的,有些情况也可能是有错误的,使用的时候要注意甄别。