使用R获取金融数据
1.從網(wǎng)絡(luò)下載數(shù)據(jù)
(1)quantmod包的getSymbols()
這個(gè)是個(gè)比較好的方法。這個(gè)函數(shù)其實(shí)是個(gè)打包的函數(shù),可以從多個(gè)來(lái)源下載股票數(shù)據(jù),包括yahoo, google, MySQL, FRED, csv, RData和 oanda。
用法:
library(quantmod)
sse<-getSymbols("^SSEC",from = "2002-01-01",to = Sys.Date(),src = "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 2289.89 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 2364.54 2369.65 2330.86 2359.51 120400 2359.51
getSymboles這個(gè)函數(shù)其實(shí)是取符號(hào),數(shù)據(jù)是在符號(hào)“SSEC”里邊
或者
sse<-getSymbols("^SSEC",from = "2002-01-01",to = Sys.Date(),src = "yahoo",auto.assign=FALSE)
tail(sse)
這樣sse就有了股票數(shù)據(jù)
如果喜歡用代碼,也可以這樣操作,如招商銀行
sse<-getSymbols("600036.ss",from = "2002-01-01",to = Sys.Date(),src = "yahoo",auto.assign=FALSE)
如果知道代碼不知道符號(hào),可以這樣:
setSymbolLookup(z=list(name="600036.SS", src="yahoo"))
getSymbols("z")#會(huì)輸出符號(hào)Z
tail(Z)
?
上邊這些是日數(shù)據(jù),月數(shù)據(jù)可以用xts包的to.monthly轉(zhuǎn)換一下# to.period,轉(zhuǎn)換周,季,年類似處理
sse<-getSymbols("^SSEC",from = "2002-01-01",to = Sys.Date(),src = "yahoo")
SSEC.m<-to.monthly(SSEC)
tail(SSEC.m)
?
#這個(gè)結(jié)果里邊,2003年9月的成交量是錯(cuò)誤的。
#修改之后,畫個(gè)圖看看
candleChart(SSEC.m,theme="white")
quantmod包是做金融技術(shù)分析最有用的包之一。
(2)tseries包
library(tseries)
ssec<-get.hist.quote(instrument = "^SSEC", start="2012-01-01", end="2013-03-01",quote = "AdjClose")
head(ssec)
???????????????AdjClose
2012-01-04 2169.39
2012-01-05 2148.45
2012-01-06 2163.40
2012-01-09 2225.89
2012-01-10 2285.74
2012-01-11 2276.05
quote = c("Open", "High", "Low", "Close"),?provider = c("yahoo", "oanda"),默認(rèn)下載是yahoo,下載以后的默認(rèn)對(duì)象是zoo,AdjClose是向前復(fù)權(quán)的價(jià)格。也可以使用股票的代碼,如招商銀行,
instrument = "600036.SS"。
?
(3)stockPortfolio包
getReturns()可以從yahoo下載數(shù)據(jù),目的是計(jì)算對(duì)應(yīng)的收益率,但是結(jié)果列表中也有對(duì)應(yīng)時(shí)間區(qū)間的數(shù)據(jù)
library(stockPortfolio)
ssec<-getReturns('^SSEC', freq = "month",get = "all", start = "2008-01-01", end = NULL)
ssec#返回的是月均收益-0.009940081
ssec$full#返回的是月數(shù)據(jù)
?
當(dāng)然,這里只是給出的R包的現(xiàn)成方法,下載金融數(shù)據(jù)的方法和渠道遠(yuǎn)不局限與此。另外,從不同來(lái)源下載的數(shù)據(jù)可能是有差異的,有些情況也可能是有錯(cuò)誤的,使用的時(shí)候要注意甄別。
?
原文:http://site.douban.com/182577/widget/notes/10568316/note/264808127/
?
總結(jié)
- 上一篇: HBO《最后生还者》真人剧确认续订第二季
- 下一篇: realme真我将推出一款可口可乐手机!