今天(2019-2-27),我发现几乎所有在上海/深圳上市的中国公司的股票价格都不能通过quantmod中的“getSymbols”功能完全下载,它总是会产生缺失数据的警告信息。但是,美国公司和在美国上市的中国公司都没有受到影响。据我所知,这是我第一次遇到这个问题。我在想这个过程的哪些部分出了问题。雅虎财务数据库或getSymbols ???我尝试的例子实际上是一些最大的公司,所以我假设他们的股票数据是完全可用的。
> getSymbols("BABA") ### Alibaba listed in US, not affected
[1] "BABA"
> getSymbols("BILI")
[1] "BILI"
> getSymbols("0700.hk") ### Tencent listed in HK, affected.
[1] "0700.HK"
Warning message:
0700.hk contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
> getSymbols("601398.SS")
[1] "601398.SS"
Warning message:
601398.SS contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
> getSymbols("601318.SS")
[1] "601318.SS"
Warning message:
601318.SS contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
这是一个雅虎问题。如果你看看雅虎历史数据标签上的december 2011 data from tencent,你可以看到雅虎没有12月24日和31日的数据。哪三个是缺少数据的记录中的两个。另一个是2008-08-22。
你知道,使用getSymbols
for yahoo的默认请求始于2007-01-01。所以你可以把它改成更近的日期。但它是免费数据。您不能期望与其他数据提供商具有相同的数据质量。对于其他代码,雅虎更经常发生这种情况。
是的,正如上面提到的@phiver,来自雅虎财务数据库的数据质量并不令人满意。与此同时,自2018年3月以来,谷歌财务已停止为quantmod提供支持。因此,我在quantmod的框架内寻找另一个数据源。
我发现tiingo数据库开始支持quantmod作为谷歌财务退出。 https://www.r-bloggers.com/goodbye-google-hello-tiingo/
顺便说一下,与getSymbols相比,getSymbol.tiingo中的中国股票的股票代码有点不同。您无需指明哪个证券交易所,ss或sz。
getSymbols("000001.SS")
getSymbols.tiingo("000001",api.key="xxxxx")
你也可能需要存储你的api.key,我建议你创建一个片段,这是我迄今为止找到的最有效的方法。在我关于如何在Rstudio中存储api.key的另一个答案中可以看到更多细节。