揮發性

在計算 R 中的 Garman-Klass 波動率時,為什麼會遺漏前十個值?

  • March 13, 2017

我在 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 將傳播。

由於您在問題中建議的原因,這在直覺上是有道理的。

引用自:https://quant.stackexchange.com/questions/33002