2012-11-12 44 views
0

我正在尋找一種快速計算滾動FORWARD查找基礎上的已實現波動率的方法。所以我想用今天的標準差作爲未來n天的第一次觀察。根據前瞻性基礎計算滾動實現的波動

此刻,我計算已實現波動率與下面的代碼的反方向:

​​

我試着設置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個觀察,我沒有足夠的數據來計算波動性,我希望它能夠進行最後的「正確」計算,並將其用於系列的其餘部分。

回答

0

OK我解決了它。其實很簡單,只是想着這是完全錯誤的方式。

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) 

只是計算實際波動率按正常,然後由適當數量的滯後,以便它是「前瞻性」。

3

一種方式來做到這一點是「滯後」的系列負面k(注意:klag.xts不同的解釋比lag.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) 
+0

感謝您的回覆。 我試過這個解決方案,但我不認爲它確實是我想要的。當我滯後-125時,我失去了前125個觀測值。所以當我運行runSD時,我得到了125個觀察值的NAs,因此錯過了前125個實現波動的讀數。 – mchangun