quantmod <- 在没有 headers 的情况下编写提取单日 returns 的公式时遇到问题

quantmod <- Having trouble writing a formula to extract single day returns without headers

我正在尝试编写一个公式,该公式将 return 股票单日 return,但我相信我在处理 periodReturn [=16= 的数据类型时遇到了问题]场

periodReturn(ticker,period='daily',subset='20161010::20161010') 

有效但

dayReturn <- function(ticker,date) {

ticker <- c(MSFT)
date <- c(20161010)
dayreturn <- periodReturn(ticker,period='daily',paste("subset='",date,"::",date,"'"))
dayreturn
}

给出错误

dayReturn(msft,20161010)

 daily.returns
Warning messages:
1: In as_numeric(YYYY) : NAs introduced by coercion
2: In as_numeric(MM) : NAs introduced by coercion
3: In as_numeric(DD) : NAs introduced by coercion
>

提前感谢您的任何建议!

您的 dayReturn 函数中存在一些语法错误。

以下是从您的函数内部提取的可重现代码,可以运行:

library(quantmod)
getSymbols("MSFT")

ticker <- c(MSFT)
date <- c("20161010")
dayreturn <- periodReturn(ticker,period='daily',subset = paste0(date,"::",date,"'"))

你的错误:

  1. date想成为一个字符串,而不是数字。
  2. 您想要子集化的日期字符串不正确。你想在 periodReturn 中使用 subset = "YYYYMMDD::YYYYMMDD" 或 (subset = "YYYY-MM-DD::YYYY-MM-DD")。

你的函数会像这样更正确地工作:

dayReturn <- function(ticker, date1 , date2) {
    dayreturn <- periodReturn(ticker,period='daily',subset = paste0(date1,"::",date2,"'"))
    dayreturn
}

dayReturn(MSFT, "20161010", "20161012")
# daily.returns
# 2016-10-10   0.004152284
# 2016-10-11  -0.014645107
# 2016-10-12  -0.001398811