这实际上更像是一个警告,但我确实问并回答了一个问题。 当在getSymbols
、tq_get
、getSymbols
中指定to
日期参数时,该函数返回截至但不包括截至日期的日期的价格,即使文档(quantmod::getSymbols.yahoo
)声明它将"检索截至此日期的数据"。 考虑以下取自整洁小插图的示例:
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日的价格;市场是开放的,价格可以在雅虎财经上查看。
诸如整洁的小插图之类的文档通常仅显示头部功能的结果,因此这是一个容易错过的细节。 如果在此示例中,您希望获得 2015 年的效果,那么您将错过一天。
因此,对于以下问题:如何让这些函数返回包含to
日期参数的价格?
请注意,带有源 yahoo
的 getSymbols
函数返回一个 Date
类型的索引.class。如果您从 Tiingo 获取数据,则返回的索引类型为 POSIXct
.class 并且您可以按预期获取数据并包括"开始日期"。即
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
(注意:输入来自Tiingo的个人API.token,而不是我示例中的3个"x")
检查:?getSymbols.tiingo
,它只能由getSymbols
在内部调用。此方法不应直接调用,而是调用 getSymbols("x", src="tiingo”)
。
如果您想使用雅虎数据,简单的解决方案是省略to
参数并将数据子集到您想要的结束日期:
tail(getSymbols('AAPL',auto.assign = F)['::2015-12-31'])
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2015-12-23 107.27 108.85 107.20 108.61 32657400 103.01801
2015-12-24 109.00 109.00 107.95 108.03 13570400 102.46785
2015-12-28 107.59 107.69 106.18 106.82 26704200 101.32014
2015-12-29 106.96 109.43 106.86 108.74 30931200 103.14129
2015-12-30 108.58 108.70 107.18 107.32 25213800 101.79442
2015-12-31 107.01 107.03 104.82 105.26 40635300 99.84048
我的建议是在to
日期参数中添加一天。我尝试将时区更改为 UTC 但无效。 在示例中,将 to
参数设为:
如。日期("2015-12-31") + 润滑日期::d AYS(1)
对我有用的是:
getSymbols("xxx",src="yahoo",from=xxx,to=end,periodicity="daily")
where end=Sys.Dat()+10
那是我得到当天价格的时候