2

私はS&P 500でx%以上の利回りの月を見つけようとしています。次のコードはそのようなインスタンスを見つけます:

getSymbols('^GSPC', from='2010-01-01')
G <- monthlyReturn(Cl(GSPC))
names(G) <- 'RET.M'
G[G$RET.M>.05]

さて、私はそのようなインスタンスの年間リターンが何であるかを知りたいですか?私は次のように年間収益を計算できることを知っています:

G$RET.Y <- yearlyReturn(Cl(GSPC))

しかし今、私はG $ RET.Yにクエリを実行して、5%以上の収益が得られた月の年間収益を取得したいと思います。

助言がありますか?

4

1 に答える 1

2

それらをマージし、withを使用して逆方向に塗りつぶし、通常どおりサブセット化できます。na.locffromLast=TRUE

G$RET.Y <- yearlyReturn(Cl(GSPC))
G$RET.Y <- na.locf(G$RET.Y, fromLast=TRUE)
G$RET.Y[G$RET.M > 0.05]
#                   RET.Y
#2010-03-31  0.1100186233
#2010-07-30  0.1100186233
#2010-09-30  0.1100186233
#2010-12-31  0.1100186233
#2011-10-31 -0.0000318056
#2013-01-31  0.0643252302

または、インデックスを年の文字表現としてフォーマットすることもできます---format(index(G[G$RET.M > 0.05]), "%Y")次に、それを使用して年次データをサブセット化するだけです。

do.call(rbind, lapply(format(index(G[G$RET.M > 0.05]), "%Y"), function(x) {
  yearlyReturn(Cl(GSPC))[x]
}))
#           yearly.returns
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2011-12-30  -0.0000318056
#2013-02-08   0.0643252302
于 2013-02-10T17:07:51.703 に答える