2016-12-13 20 views
2

我試圖寫一個公式,將返回一個股票單日回報率來提取一天的回報,但我相信即時通訊具有與該periodReturnsubsetquantmod < - 遇到問題編寫公式無頭

的數據類型的麻煩
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 
> 

在此先感謝您的任何建議!

回答

1

在你的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 
+0

太感謝你了,這個固定的問題。真的很感激時間和幫助 - –

+0

@FrankDrin不用擔心。如果您覺得這回答了您的問題(以及您提出的所有其他問題),您可能會考慮接受答案,以及其他人對其他問題的回答(綠色標記)。 – FXQuantTrader

+0

正如你可以看到FXQuantTrader ...仍然是新的:)完成,謝謝你的頭! –