0

独自の関数 readVariableAsXTS(VariableName) を使用して、CSV ファイルからいくつかの株価をインポートしています。すべての株価には、日付と価格の 2 つの列しかありません。ここで、これらの価格のインデックス付きバージョンを作成したいと思います (明らかに、コードは可能な限り高速である必要があります)。したがって、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 にまったく慣れていないので、3 つの質問は次のとおりです。

  1. 基本的にここで計算している累積リターンの関数は既にありますか? quantmod または PerformanceAnalytics で見つけられませんでした。
  2. このエラーが生成されるのはなぜですか? この質問に対する答えを見つけた限り、xts とこれらの [i-1] を扱うことができないと思います
  3. これをベクトルに変換してから、高速化する必要がありますか?
4

0 に答える 0