警告:getSymbols,tq_get,getSymbols.yahoo不会返回迄今为止的价格

时间:2018-12-24 17:55:23

标签: r quantmod tidyquant

这确实是一个警告,但我确实提出并回答了一个问题。在togetSymbolstq_get中指定了getSymbols日期参数后,即使文档中包含( quantmod::getSymbols.yahoo)声明它将“在此日期之前检索数据”。考虑以下示例,该示例取自tidyquant vignette

Ra <- c("AAPL", "GOOG", "NFLX") %>%
tq_get(get  = "stock.prices",
       from = "2010-01-01",
       to   = "2015-12-31")

人们可能希望结果包含2015-12-31的价格,但只会返回2015-12-30的价格。 31日有价格;市场是开放的,可以在yahoo finance上查看价格。

文档(例如tidyquant小插图)经常仅显示head功能的结果,因此这是一个容易遗漏的细节。如果在此示例中,您想获得2015年的表现,那您将迷失一天。

那么问题来了:我如何获得这些函数以返回直到并包括to日期参数的价格?

3 个答案:

答案 0 :(得分:2)

请注意,带有源getSymbols的{​​{1}}函数将返回yahoo类型的index.class。如果您从Tiingo采购数据,则返回的index.class类型为Date,您将获得所需的数据,并按预期包括“起始日期”。即

POSIXct

(注意:请从Tiingo输入您的个人api.token,而不是示例中的3个“ x”)

检查:getSymbols("AAPL", src = "tiingo", to = "2015-12-31", api.key = "xxx"); tail(AAPL) [1] "AAPL" AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume 2015-12-23 107.27 108.85 107.2000 108.61 32657354 2015-12-24 109.00 109.00 107.9500 108.03 13596680 2015-12-28 107.59 107.69 106.1807 106.82 26704210 2015-12-29 106.96 109.43 106.8600 108.74 30931243 2015-12-30 108.58 108.70 107.1800 107.32 25213777 2015-12-31 107.01 107.03 104.8200 105.26 40912316 ,仅由?getSymbols.tiingo内部调用。不应直接调用此方法,而应调用getSymbols

如果要使用Yahoo数据,简单的解决方案是省略getSymbols("x", src="tiingo”)参数并将数据子集化为所需的结束日期:

to

答案 1 :(得分:0)

我的建议是在to日期参数中增加一天。我试图将我的时区更改为UTC,但没有任何效果。在示例中,设置to参数:

  

as.Date(“ 2015-12-31”)+ lubridate :: days(1)

答案 2 :(得分:0)

对我有用的是:getSymbols(“ xxx”,src =“ yahoo”,from = xxx,to = end,periodicity =“ daily”) 其中end = Sys.Dat()+ 10

那是我得到当天价格的时候