3 votos

Regla de actualización de la volatilidad mediante r

Estoy tratando de programar una regla de actualización de la volatilidad utilizando la iteración. Empiezo con el conocido modelo Heston-Nandi donde la dinámica de los retornos es :

enter image description here

con enter image description here es una variable randome normal iid, donde enter image description here es la volatilidad cuadrada variable en el tiempo, enter image description here , enter image description here y enter image description here .

Lo que quiero hacer es escribir el código asociado a la regla de actualización de la volatilidad, explicar en este algoritmo :

  1. Definir enter image description here es igual a la varianza incondicional dada que es constante,
  2. Iteración para enter image description here :

enter image description here

para obtener la aproximación basada en los rendimientos de las desviaciones al contado enter image description here . Lo que da lugar a una función de actualización que implica exclusivamente la observación :

enter image description here

Mi programa (código r) es el siguiente:

library(fGarch)

T=3000
    # For the example I simulate a GARCH
    #process parameters
    eta = 0.2 #eta = 0 is equivalent to Geometric Brownian Motion
    mu = 100 #the mean of the process

    #GARCH volatility model
    specs = garchSpec(model = list(omega = 0.000001, alpha = 0.5, beta = 0.4)) 
    sigma = garchSim(spec = specs, n = T)

    P_0 = mu #starting price, known
    P = rep(P_0,T)

    for(i in 2:T){
      P[i] = P[i-1] + eta * (mu - P[i-1]) + sigma[i] * P[i-1]
    }

    # Set the parameters :
para<-c(0.1,0.2,0.3,0.4,0.5,0.7) # (beta_0,beta_1, beta_2, beta_3, r, gamma) 
    # Iteration to obtain the volatility associate to the model :

vol = c()
vol[1]=sd(P)
for (i in 2:length(P)){
      para_vol <- para[1:6]
      vol[i]=para_vol[1]+ (para_vol[2]*vol[i-1])+ (para_vol[3]/vol[i-1])*(P[i-1]-para_vol[5]-(para_vol[4]+para_vol[6])*vol[i-1])
      }
vol

Este es un ejemplo donde simulo un GARCH (como conjunto de datos), el estoy tratando de extraer la volatilidad asociada al modelo Heston-Nandi.

Lo sé, estoy usando un montón de cosas malas para r, pero no pude encontrar una solución mejor. Así que mi pregunta es correcta?

Cualquier corrección y sugerencia para mejorar este proceso! por favor, siéntase libre de compartir su código existente en R.

¡Muchas gracias!

2voto

sujith1406 Puntos 113

Hay dos respuestas a su pregunta

  1. Si quieres usar el modelo Neston-Nandi, puedes usarlo directamente con los parámetros que ya muestras arriba:

model = list(omega = 0.000001, alpha = 0.5, beta = 0.4)

En r, el paquete fOptions tiene un modelo HN que puede utilizarlos:

HNGOption(TypeFlag, model, S, X, Time.inDays, r.daily)

  1. Si quiere calcular su propio precio de la opción utilizando los parámetros de garch, necesita simular el proceso del precio al contado (o de la acción) así como el proceso de la volatilidad. Su primer conjunto de ecuaciones muestra cómo se actualiza el Retorno (el cambio en el precio spot) para cada período.

El mejor libro o referencia que he visto que explica la aplicación del modelo HN es 'Option Pricing Models and Volatility' de Rouah y Vainberg. El código es VBA, pero la explicación es muy buena..

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