我目前正在观看一个财经视频,并且正在观看以下视频的 8:02 video 。我相信我在下载数据方面犯了错误,正如视频作者所做的那样。
我已粘贴下面的代码,您应该能够从 Rstudio 窗口运行,而无需下载任何其他文件。
我首先使用 quantmod 包导入数据。
library(quantmod)
getSymbols("F", src="yahoo", periodicity = "monthly", from="2007-10-01", to="2012-11-01")
colnames(F) <- c("Open", "High", "Low", "Close", "Volume", "Adj")
在这里我遇到了一个小问题,该视频在 2012 年 10 月 1 日的开盘价为 9.89,调整收盘价为 9.88。当我查看通过 quantmod 软件包下载的数据时,我在 2012 年 10 月 1 日的开盘价为 12.380,调整收盘价为 8.915304。我完全理解下载数据时的值可能存在差异,但为什么我通过 quantmod 包获得的值却截然不同。
进一步
我访问了雅虎财经网站来交叉检查这些值。这是Yahoo link 2012年10月1日或雅虎2012年9月30日的开盘价为9.89,调整收盘价为8.92,非常接近视频中的值。
为什么通过 quantmod 导入不正确,这已经是漫长的一天了,所以我假设它是我错过的东西。
最佳答案
下载的 quantmod 数据会根据股息进行调整。看一下最近的每日价格以及 2017 年 10 月的股息修正:
aa <- getSymbols("F", src="yahoo", periodicity = "daily", from="2007-10-01", auto.assign = FALSE)
aa["2017-10/"]
考虑到过去的股息会导致 yahoo 上的价格和您下载的 xts 对象中的价格发生变化。例如OHL价格调整了15美分,其大小与10月份股息前的股息大小相同。股息支付后,请注意 yahoo 和 xts 对象中的 OHL 价格是如何相同的。
如果您想返回没有股息调整的 yahoo 数据,请在 getSymbols 调用中添加设置为 TRUE
的 adjust
参数(这是函数的 passthru 参数getSymbols.yahoo
/getSymbols.yahooj
):
a2 <- getSymbols("F", src="yahoo", periodicity = "daily", from="2007-10-01", auto.assign = FALSE, adjust = TRUE)
head(a2["2012-10"])
F.Open F.High F.Low F.Close F.Volume F.Adjusted
2012-10-01 9.89 10.08 9.88 7.932703 33445600 7.932703
2012-10-02 10.01 10.05 9.71 7.820863 63630000 7.820863
2012-10-03 9.82 10.02 9.76 7.940693 51023800 7.940693
2012-10-04 10.06 10.15 9.96 8.076502 46855500 8.076502
2012-10-05 10.17 10.28 10.13 8.116439 40693900 8.116439
2012-10-08 10.06 10.12 9.99 8.028567 25473900 8.028567
正如雅虎网站上所指出的,他们网站上的数据似乎考虑了股票分割。
关于r - 下载 quantmod 数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47147135/