excel层级数据获取_量化获取股票市场及金融财经数据到Excel
本文介紹一種免費的快速獲取金融市場數據的量化方法,適用于廣大投資者,整個流程需要一臺上網的電腦,有Excel軟件。不過需要中上等的電腦操作水平,如果平時寫個Word文章制作個Excel列表都不熟練的話,那這個方法還是有些難度的。
首先,需要上網下載叫R跟Rstudio的兩款軟件,它們都是免費的,可以自行百度搜索下載。R是一款基于R語言的編程軟件,Rstudio是輔助R做輸入輸出的平臺,本文里的所有操作都在Rstudio上,新手可以上網了解一下,網上有很多的入門介紹講解,可以先看看。
總的來說,這個導入金融數據的操作并不是很難,平均需要幾行代碼就好了。可以把整個流程概括成,打開Rstudio軟件,上面敲幾行字母進去,一個Excel文件生成,里面包含你想要的金融數據。
01股票市場獲取上證指數數據:
先展示需要操作的代碼,
←? 輕觸圖片左右滑動瀏覽全圖? →
install.packages("quantmod")library(quantmod)
SZ?"000001.SS",from?=?"2018-01-01",
??????to?=?"2019-03-01",auto.assign?=?FALSE,src?=?"yahoo")
install.packages("xlsx")
library(xlsx)
write.xlsx(SZ,"C:/Users/mh232/Desktop/data.xlsx")
在敲進去以上代碼后,發現桌面新出現一個名為“data.xlsx”的Excel文件,打開它發現里面是想要的上證指數價格數據,截選如圖:
對新手看起來會比較復雜,可能完全不知道代碼中各個字母的意思,里面也有很多英文單詞,對英文好的人來說會有優勢,接下來詳解各個步驟:
1. install.packages( )是一個方程,專門下載程序包的,首次操作需要下載程序包叫quantmod,要用它下載金融數據。等下載完成后,以后就不用輸入此代碼了。
2. library( )也是一個方程,剛下載的程序包需要加載,所以每次重新打開Rstudio的時候,都要輸入這個來加載特定程序包,做金融數據導入時要加載quantmod程序包。
3. 接下來第三行代碼有些復雜,主要思路是輸入一個包含很多參數的方程getSymbols( ),這個方程做完后把數據轉到一個命名為SZ縮寫上證的變量里,SZ是隨便起的名字,也可以是abc(但是輸入數字123要加雙引號),這無所謂。
-- 輪到getSymbols( )方程里的參數:
Symbols = “000001.SS”是雅虎財經里上證指數的代碼,
from = “2018-01-01”是導入數據從2018年1月1號開始,
to = “2019-03-01”是到2019年3月1號結束,
auto.assign = FALSE這個意思是不用電腦來自己命名變量,因為SZ是要想命名的變量名稱,
src = “yahoo”是數據源來自雅虎財經,之后介紹的其他財經數據來自不同網站,所以這塊也會有變化。
4. install.packages("xlsx")也是一樣,安裝叫xlsx的程序包,這個程序包是專門做數據從Rstudio到Excel導出的。
5. library(xlsx)加載xlsx程序包。
6. write.xlsx( )導出數據到Excel的方程,里面的參數:
SZ是要導出的數據變量名,
"C:/Users/mh232/Desktop/data.xlsx"是導入的Excel放在哪個文件目錄下,此目錄是我導入到我電腦桌面下,方便查看。最后data.xlsx是自己命名data的Excel文件名稱,這個可以自己隨便起。
7.?之后打開桌面上的叫data的Excel文件,看到一共七列,第一列日期,第二列開盤價,第三列當天最高價,第四列當天最低價,第五列收盤價,第六列成交量(注意數據是千位值成交手數,不是成交金額),最后一列調整收盤價。之后查看數據是否準確,檢查無誤后就可以在Excel上操作數據了。
有幾點需要注意的是,
1. Rstudio平臺輸入時,要換成英文輸入法。
2. getSymbols和Symbols里的S要大寫。
3. “000001.SS”的后綴SS要大寫。
4. 注意輸入日期格式順序是年月日,雙引號包含。
5. 還有很多地方要加雙引號,沒有雙引號可能出不來結果。
總之,很多細節需要注意,一上來也要一段時間操作練習,等之后熟練后,理解了其中的格式,就可以將以上的代碼換成簡化形式,這樣輸入的字母更少,簡化后如下:
library(quantmod)SZ?"000001.SS",from?=?"2018-01-01",
?????????????????auto.assign?=?FALSE)
library(xlsx)
write.xlsx(SZ,"C:/Users/mh232/Desktop/data.xlsx")
可以看到,代碼去掉了很多,
1. install.packages( )刪掉因為已經下載了程序包,不用下載了
2. 刪掉Symbols =:程序默認第一個參數就是雅虎財經里的代碼
3.?刪掉to =:直接導入日期到最新
4.?刪掉src =:因為程序默認從雅虎財經里抓取數據
此簡單代碼導出的結果跟最一開始的一樣,不同在于數據到最新的日期因為取消了to =這塊。綜上,輸入代碼快的話大概七八秒,等待程序運行抓取數據大概一兩秒,總體十秒左右可以完成。
獲取上市公司貴州茅臺數據:
股票市場里除了可以導出股指數據外,還可以導出某個上市公司的,比如以貴州茅臺600519為例,操作如下(之前已加載程序包,不用再次輸入library( ):
←? 輕觸圖片左右滑動瀏覽全圖? →
GZMT?"600519.SS",from?=?"2018-01-01",????????to?=?"2019-03-01",auto.assign?=?FALSE,
????????src?=?"yahoo")
write.xlsx(GZMT,"C:/Users/mh232/Desktop/data.xlsx")
導出到Excel的數據截選如圖,檢查數據后發現一個問題,2018年貴州茅臺每日開盤價收盤價最高價最低價跟其他股票平臺上的有一些差別,而最后一列調整收盤價比較接近,這是因為每個平臺上計算基準不同(存在前后復權)導致的差異。經過檢查后,整體漲跌幅是一致的,所以沒有大的問題。除了貴州茅臺以外,其他的所有上市公司只要雅虎財經上有的,根據相應的股票代碼都可以導出數據來。
這時候有人也許會問,其實有一種快捷方法,可以直接登雅虎財經網站上搜相應股票,在歷史數據那欄點擊下載就行了,出來的也是Excel。確實,這種辦法操作起來簡單易行,比用Rstudio做個中介方便多了。但是如果想要滬深300支股票的數據呢,開300個頁面可就很慢了。
02外匯、期貨市場獲取美元兌人民幣歷史數據:
跟股票市場操作同理,也可以通過在雅虎財經抓取特定貨幣對的歷史匯率數據,以美元兌人民幣為例,雅虎財經上的代碼為CNY=X,操作如下:
←? 輕觸圖片左右滑動瀏覽全圖? →
`USD/CNY`?"CNY=X",from?=?"2018-01-01",?????????????to?=?"2019-03-01",auto.assign?=?FALSE,
?????????????src?=?"yahoo")
write.xlsx(`USD/CNY`,"C:/Users/mh232/Desktop/data.er.xlsx")
需要注意的是,在輸入USD/CNY時要加上``單引號,這是防止誤導程序要做除法,因為有除號在里面,或者也可以自己命名其他變量。“data.er”是新建的Excel文件名,打開它,導入的部分截選如下圖:
對比其他平臺上的歷史數據無誤,但是仔細查看發現Excel第五列收盤價和最后一列調整收盤價,這兩個跟開盤價接近一樣。之后查看網頁確實跟導出的一樣,這可能是由于外匯市場全天24小時運轉,網站上報的數據跟開盤價重合導致。以后做數據分析時,可以僅以開盤價為準,其他忽略即可。
獲取原油期貨歷史數據:
同樣,在雅虎財經網頁查找,NYMEX紐約原油代碼為CL=F,輸入代碼:
←? 輕觸圖片左右滑動瀏覽全圖? →
oil?"CL=F",from?=?"2018-01-01",???????to?=?"2019-03-01",auto.assign?=?FALSE,
???????src?=?"yahoo")
write.xlsx(oil,"C:/Users/mh232/Desktop/data.oil.xlsx")
導出到Excel發現歷史數據只能追溯到半年前的,如果想要更長時間以前的,這個時候需要換網站抓取數據。quantmod程序包里另外一個主要搜索源是FRED,是美國圣路易斯聯邦儲備銀行官方網站的縮寫(Federal Reserves Bank of St. Louis),它上面包含了很多時間周期長的歷史數據,還有很多重要的經濟財經數據也包含其中,其中經濟數據將在下部分展示。
經FRED網站查詢后,WTI原油代碼在它上面顯示為DCOILWTICO,之后回到Rstudio上輸入以下代碼:
oil?"DCOILWTICO",??????????????????auto.assign?=?FALSE,
??????????????????src?=?"FRED")
write.xlsx(oil,"C:/Users/mh232/Desktop/data.oil.xlsx")
這次代碼看起來更簡單,quantmod在以FRED數據源搜索時,所有的數據都會被下載下來,所以不用輸入from=,to=時間框架。另外,新產生名稱為data.oil的Excel文件將替換之前雅虎財經輸出的。新導出的Excel文件截選如圖:
可以看到數據以日為單位。沒有了每日最高價最低價等,數據最早從1986年1月2號至2019年3月4號,在此網站上的數據一般會有一周左右的延遲,所以一般最新數據會比當天時間晚一周左右。
03宏觀經濟獲取中國GDP年度歷史數據:
←? 輕觸圖片左右滑動瀏覽全圖? →
GDP?"MKTGDPCNA646NWDB",??????????????????auto.assign?=?FALSE,
??????????????????src?=?"FRED")
write.xlsx(GDP,"C:/Users/mh232/Desktop/gdp.xlsx")
上圖是部分截選,總體導出的數據從1960年到現在,以年為單位,并且以美元計價,網站上顯示的數據來源來自世界銀行。
獲取美國月度失業率:
rate?"UNRATE",??????????????????auto.assign?=?FALSE,
??????????????????src?=?"FRED")
write.xlsx(rate,"C:/Users/mh232/Desktop/rate.xlsx")
數據記錄從1948年到現在,按月為單位,上圖是導出的部分截選。
獲取美國非農就業人數:
←? 輕觸圖片左右滑動瀏覽全圖? →
nonfarm?"PAYEMS",??????????????????auto.assign?=?FALSE,
??????????????????src?=?"FRED")
write.xlsx(nonfarm,"C:/Users/mh232/Desktop/nonfarm.xlsx")
導出的是非農就業總人數(千位值),上下單元格的差就是平常媒體所報道的非農就業人數變化。數據記錄從1939年到2019年二月,共計963條。
文末小結總體來說,尋找數據的方法也就那幾種,要么自己上網搜索,找下載鏈接或者復制粘貼,這也是最多人用的,此辦法的優點是操作簡單,不費腦,缺點就是如果要找的數據量很大,那么會很浪費時間。這時,借助編程的方法便應運而生了。其實相比R,還有一款比R更熱門的編程語言Python,最近幾年在量化金融領域的應用勢不可擋,但為什么本文要用R呢?其一,R的代碼比Python更簡單;其二,R是專門用來做數據分析的,假如不導入到Excel,可以繼續在R里做分析施展拳腳,這些該怎么做,就是以后文章的事了。
總結
以上是生活随笔為你收集整理的excel层级数据获取_量化获取股票市场及金融财经数据到Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java数据类型_Java 变量、表达式
- 下一篇: infor wms 项目启动_全一,企业