2017/05/24

R 語言 getSymbols 可用性探討

最近學習 R 語言,看到別人的範例,似乎簡單寫兩行就能抓到股票資料,但真的是這樣嗎?


大概2017年5月開始, CRAN 上的 quantmod 已經無法正確抓到 Yahoo Finance 資料, 所以我使用 stackoverflow 的解法: githubinstall("joshuaulrich/quantmod", ref="157_yahoo_502") 安裝網友修過的版本. 可以順利運行,程式碼如下:

library(quandmod)
options(getSymbols.auto.assign=F)
d=getSymbols("2002.TW")  # 以中鋼為例
d['2016-07-15/2016-08-22']

但實際上 Yahoo Finance 從 2016/07/18~2016/08-19 資料都是 N/A (從網頁上看也是這樣).
  1. 7/15: Close: 22.70, Adjusted: 22.70
  2. 8/22: Close: 22.45, Adjusted:22.45
於是到證交所網站查一下, 發現其實該時段不應該是N/A. 證明了 Yahoo Finance 的資料僅能玩,不能用。

根據網路查詢,2016年中鋼配息如下:
  • 普通股:現金股利0.5元
  • 特別股:現金股利1.4元
  • 除權(息)交易日:2016/07/26  
  • 最後過戶日:2016/07/27        
  • 停止過戶起始日期:2016/07/28
  • 停止過戶截止日期:2016/08/01
  • 除權(息)基準日:2016/08/01  
想了解除權息對漲跌價的差異,證交所網站 2016/07/26 的漲跌價差寫X0.00, 再到Yahoo Finance 手工查一下,在2016/07/26寫了0.5 Dividend,又到鉅亨網查一下,7/26當天的漲跌是-0.45, 似乎是簡單拿前一天收盤直接減。
又證明了  Yahoo Finance 的調整後收盤價也是不能用的.

之後再調整嘗試從 Google Finance 抓取, 但是, Google Finance 目前不提供 csv 格式下載, 因此會產生 404 not found 錯誤訊息,程式碼如下:

d=getSymbols("TPE:2002", src="google") 

沒有留言: