1 votos

Gráfico GBM 3d con R

Quiero trazar la densidad del GBM en un gráfico 3d. Así que tengo en un eje el precio de las acciones, en el otro el tiempo y en el eje z la densidad. Al final quiero producir esto gráfico .

La fórmula que he intentado aplicar se puede encontrar en Wikipedia .

Este es mi enfoque:

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"
)

Pero se ve claramente mal. Entonces, ¿dónde está mi error?

2voto

Charles Chen Puntos 183

Creo que no hay ningún error por su parte, si establece sigma <- 0.0045 y

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

tendrás esto: enter image description here

Con estos parámetros la densidad tiene aproximadamente el mismo pico y el máximo de la función de densidad también tiene una dirección similar. Por desgracia, en este gráfico hay varias cosas que no funcionan: el parámetro sigma se ha cambiado y el máximo de la función de densidad parece disminuir más lentamente. Sin embargo, el código producido es correcto, ya que podemos asumir que plnorm está implementado correctamente y el parámetro sdlog es obviamente correcto. El parámetro de la media también es correcto, la prueba de ello se deja como ejercicio ;)

Me imagino que no estás satisfecho con el argumento anterior, pero la trama de la Wikipedia debe estar equivocada. La volatilidad de una lognormal viene dada por $\sqrt{(e^{\sigma^2}-1) e^{2 \mu + \sigma^2}}$ . Para $t=1$ esto se evalúa como $11.08$ En el caso de la bolsa de valores, es evidente que es mucho más amplia que la que aparece en la Wikipedia, tal vez el autor se olvidó de incluir el precio de las acciones en su cálculo de $\mu$ . Compara con esto enter image description here generado por

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"
)

0voto

Kyle Cronin Puntos 554

Parece que el gráfico de la wikipedia se hizo con un valor mucho menor para la volatilidad $\sigma$ . Prueba 0,01.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X