揮發性
在計算 R 中的 Garman-Klass 波動率時,為什麼會遺漏前十個值?
我在 R 中執行了這段程式碼
vGK <- volatility(ohlc, n = 10, calc="garman", N = 260, mean0 = FALSE)
前十個值如下所示:
[1] NA NA NA NA [5] NA NA NA NA [9] NA
是因為 TTR 包估計了過去 10 天的平均值(因此 n=10)?這就是為什麼要平滑這些值?
使用源盧克:
> library(TTR) > volatiliy function (OHLC, n = 10, calc = "close", N = 260, mean0 = FALSE, ...) { OHLC <- try.xts(OHLC, error = as.matrix) calc <- match.arg(calc, c("close", "garman.klass", "parkinson", "rogers.satchell", "gk.yz", "yang.zhang")) <snip> if (calc == "garman.klass") { s <- sqrt(N/n * runSum(0.5 * log(OHLC[, 2]/OHLC[, 3])^2 - (2 * log(2) - 1) * log(OHLC[, 4]/OHLC[, 1])^2, n)) } <snip> reclass(s, OHLC) }
顯然,該
TTR
軟體包正在使用runSum
它本身似乎相當複雜。但是,我們可以簡單地做> runSum(1:11, n = 10) NA NA NA NA NA NA NA NA NA 55 65
看到確實
runSum
呼叫 with的前 9 個值n = 10
生成了 9 個NA
值。在 R 中,那些NA
’s 將傳播。由於您在問題中建議的原因,這在直覺上是有道理的。