2012-11-06 17 views
7

ローリング20期間の過去のボラティリティを計算しようとしています。時系列のRollapply

vol<-rollapply(ret,20,sd,by.column=T,fill=NA) 

問題が巻の観測が間違っている10日後に現れる開始することです:私は、各列のための20日間のHVを取得するためにrollapply使用し、その後

ret<-ROC(data1) 

そして:私は、毎日のリターンを取ります私はここにデモのために20

を指定されたデータのサンプルです:

0.000000000, 0.005277045, 0.023622047, 0.002564103,-0.002557545, -0.020512821, 
0.007853403,-0.012987013, 0.007894737, 0.015665796, 0.000000000, -0.002570694, 
0.002577320, -0.015424165, 0.002610966, 0.010416667, 0.002577320, 0.015424165, 
0.000000000, -0.002531646, -0.002538071, 0.030534351, 0.014814815, -0.007299270, 
-0.009803922, -0., 0.002506266, -0.015000000,-0.002538071, 0.002544529 

は、上記のデータを想定次いで、Xに格納されている:

rollapply(x,20,sd,fill=NA) 

は、SDがあまりにも間違っている代わり20の10行目の最初の観測をもたらします。

私はここで何かが欠けする必要があります...

答えて

18

デフォルトとしてalign='right'を持っているrollapplyrラッパーを使用し、代わりにalign='center'でデフォルトを使用して、またはその代わりのrollapplyを使用してのalign='right'を使用する必要があります。 ?rollapplyから

は、観測のローリング・ウィンドウに比較結果のインデックスが左または右に整列又は中心でなければならないかどうか specifyies(デフォルト)を整列させます。この引数は、widthが幅を表す場合にのみ使用されます。

が、それがコンパイルされたコードを使用すると速くなりますので、このために、個人的に、私はTTRパッケージからrunSDを使用すると思います。

どちらも期待通りの効果を発揮しますが、2番目の方が速くなります。

library(zoo) 
rollapply(x, 20, sd, fill=NA, align='right') 

library(TTR) 
runSD(x, 20)