R

帶 R 的 GBM 3d 繪圖

  • December 5, 2012

我想在 3d 圖中繪製 GBM 的密度。所以我在一個軸上是股票價格,在另一個軸上是時間,在 z 軸上是密度。最後我想製作這張

我嘗試實現的公式可以在Wikipedia上找到。

這是我的方法:

mu <- 0.1
sigma <- 0.1
S0 <- 100

color <- rgb(85, 141, 85, maxColorValue=255)

x <- seq(100, 112, length=40)
y <- seq(0.25, 1.1, length=25)

f <- function(s, t) {
 dlnorm(s, meanlog=log(S0) + ((mu - 1/2 * sigma^2) * t), 
        sdlog=sigma * sqrt(t))
}

z <- outer(x, y, f)

persp(x, y, z, theta=160, phi=25, expand=0.75, col=color,
     ticktype="detailed", xlab="s", ylab="time", zlab="density"
)

但它看起來顯然是錯誤的。那麼我的錯誤在哪裡?

我認為你沒有錯誤,如果你設置sigma <- 0.0045

x <- seq(100, 112, length=100) // Lower values produce jagged edges
y <- seq(0.25, 1.1, length=60)

你會得到這個:在此處輸入圖像描述

使用這些參數,密度具有大致相同的峰值,並且密度函式的最大值也具有相似的方向。唉,這個圖有很多問題:sigma 參數已更改,密度函式的最大值似乎下降得更慢。但是,生成的程式碼是正確的,因為我們可以假設 plnorm 正確實現並且 sdlog 參數顯然是正確的。平均參數也是正確的,其證明留作練習;)

我可以想像您對上述論點不滿意,但維基百科的情節一定是錯誤的。對數正態的波動性由下式給出 $ \sqrt{(e^{\sigma^2}-1) e^{2 \mu + \sigma^2}} $ . 為了 $ t=1 $ 這評估為 $ 11.08 $ ,這顯然比維基百科上的情節要廣泛得多,也許作者忘記在計算中包括股票價格 $ \mu $ . 與此在此處輸入圖像描述生成的比較

mu <- 0.1
sigma <- 0.1

S0 <- 100

color <- rgb(85, 141, 85, maxColorValue=255)

x <- seq(80, 130, length=100)
y <- seq(0.25, 1.1, length=60)

f <- function(s, t) {
 dlnorm(s, meanlog=log(S0) + ((mu - 1/2 * sigma^2) * t), 
        sdlog=sigma * sqrt(t))
}

z <- outer(x, y, f)

persp(x, y, z, theta=180, phi=25, expand=0.75, col=color,
     ticktype="detailed", xlab="s", ylab="time", zlab="density"
)

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