0

我正在使用我自己的函数 readVariableAsXTS(VariableName) 从 CSV 文件中导入几个股票价格。所有股票价格只有两列,日期和价格。现在我想创建(显然代码应该尽可能快地这样做)这些价格的索引版本。所以 NormalizedPrices[1] 应该是 100,NormalizedPrices[2] 应该是 100 * (1+VariableReturns[1]) 或者对于循环 NormalizedPrices[i-1] * (1+VariableReturns[i])。但是,这总是会产生此错误:

Error in NextMethod(.Generic) : replacement has length Zero

这是我对标准化价格的完整功能:

getNormalizedPrices<-function(VariableName, InitialValue=100){
  VariableXTS<-readVariableAsXTS(VariableName)

  VariableReturns<-periodReturn(VariableXTS,period="daily",type="arithmetic")

  NormalizedPrices<-0*VariableReturns
  NormalizedPrices[1]<-InitialValue
  for(i in 2:nrow(VariableReturns)){
    NormalizedPrices[i]<-NormalizedPrices[i-1]*(1+VariableReturns[i])
  }

  VariableXTS[,1]<-NormalizedPrices[,1]
  return(VariableXTS)
}

我对 xts 和 R 很陌生。所以我的三个问题是:

  1. 是否已经有一个累积回报的函数,我基本上在这里计算?我在 quantmod 或 PerformanceAnalytics 中没有找到。
  2. 为什么会产生这个错误?就我找到这个问题的答案而言,我认为我无法使用 xts 和这些 [i-1] 东西
  3. 我应该将其转换为向量并返回以使其更快吗?
4

0 回答 0