0

ローリングフォワードルックベースで実現ボラティリティをすばやく計算する方法を探しています。したがって、今日を次の n 日間の最初の観察として使用して、標準偏差を計算したいと思います。

現時点では、次のコードを使用して逆方向の実現ボラティリティを計算します。

index.realized <- xts(apply(index.ret,2,runSD,n=125), index(index.ret))*sqrt(252)
index.realized <- na.locf(index.realized, fromLast=TRUE)

設定してみn = -125ましたが、案の定、うまくいきません。

ありがとうございました。

編集

私がやろうとしていることを明確にするために、これを達成するために使用している for ループを次に示します。

for(i in 1:nrow(index.ret)){   
   bear.realized[i,] = sd(bear.ret[i:(i+124),]) * sqrt(252)   
   index.realized[i,] = sd(index.ret[i:(i+124),]) * sqrt(252) 
}

ボラティリティを計算するのに十分なデータがない最後の 124 の観測については、最後の「正しい」計算を取り、それを残りのシリーズに使用したいと考えています。

4

2 に答える 2

3

それを行う1つの方法は、シリーズを負で「遅らせる」ことです(とでは解釈が異なることに注意kしてください)。klag.xtslag.tslag.zoo

getSymbols("SPY")
spy <- ROC(Cl(SPY))
# note that k is interpreted differently from lag.ts and lag.zoo
spy$SPY.Lag <- lag(spy,-125)
# remove trailing NA
spy <- na.omit(spy)
rv <- runSD(spy$SPY.Lag,n=125)*sqrt(252)
于 2012-11-12T12:41:50.657 に答える
0

私はそれを解決しました。それは実際には非常に単純です。これについて完全に間違った方法で考えていたのです。

index.realized <- xts(apply(index.ret,2,runSD,n=125), index(index.ret))*sqrt(252)
index.realized <- lag(index.realized, -124)
index.realized <- na.locf(index.realized)

通常どおりに実現されたボラティリティを計算し、適切な数値だけ遅らせて「前向き」にします。

于 2012-11-13T04:33:09.817 に答える