4

これは取るに足らない質問かもしれませんが、残念ながら私はそれを解決することができません。私は50社の株式のポートフォリオを持っています。各企業の特定の日の日付と終値をお知らせします。各企業のデータは、株式が取引されている日付によって異なります。

私はこのコードを使用して、毎日の収益を計算しました。

return=matrix(NA,nrow(companies),ncol(companies)-1)


for (j in 2:52){
  k=0
  for (i in 1:nrow(companies)){
    if (!is.na(companies[i,j]) & k==0) {
      base= companies[i,j]
      k=k+1
    }
    else {if ( k==1) {return[i,j-1] = ((companies[i,j]-base)/base)*100} 
          else {temp=0}
    }
  }
}
return[1:30,]

ここで、同じポートフォリオの企業の月次リターンを計算したいと思います。これを計算するために使用している式は次のとおりです。

Return = [(Price on Last day of month) - (Price on other day)]*100/(Price on last day of month)

このプロセスを1年に12か月間、12年間繰り返したいと思います(これが私が持っているデータの期間であるため)。この計算を行うためにforループを作成することを計画しています。誰かがこれを手伝ってくれませんか。残念ながら、株価はインド証券取引所からのものであり、quantmodは価格を読み取ることができないため、quantmodパッケージを使用できません。

4

1 に答える 1

2

あなたは間違いなくを使うべきですquantmod、そしてあなたはそうすることができます。quantmodメソッドには、入力として時系列monthlyReturn, dailyReturn, ..., allReturnsが必要です。xtsしたがって、日次データ(終値など)と対応する日付がある場合は、時系列を作成して、それを目的のquantmodメソッドに渡すことができます。

例:

library(package="quantmod")

prices <- c(7655.88, 7612.39, 7612.39, 7778.78, 7756.44, 7776.37)
dates <- as.Date(c("2012-12-26", "2012-12-27", "2012-12-30", "2013-01-01", "2013-01-02", "2013-01-03"))
ts <- xts(prices, dates)

dailyReturn(ts)
monthlyReturn(ts) # this will return bogus data because we don't have one month of data in this example
于 2013-01-07T15:50:22.887 に答える