Estoy mirando algunos datos de alta frecuencia y me gustaría saber cómo interpretar y comparar la volatilidad realizada (RV) y la volatilidad realizada a dos escalas (TSRV). Referencias a continuación. Dado que X es la rentabilidad logarítmica de una acción
$$ [X,X]_{T}^{all} = \sum\limits_{i=1}^{n} (X_{t_{i+1}} - X_{t_{i}})^2 $$
Aquí el subíndice "todos" significa utilizar todos los datos. En mi caso mis datos son segundo a segundo por lo que sería la suma de las diferencias de los retornos logarítmicos al cuadrado con 1 segundo de diferencia.
Para calcular RV en R tengo una función que toma los precios, toma el logaritmo, luego las diferencias, las eleva al cuadrado y las suma:
RV<-function(prices)
{
logprices = log(as.numeric(prices))
logreturns = diff(logprices)
return(sum(logreturns^2))
}
La Volatilidad Realizada a Dos Escalas (TSRV) divide la muestra completa de 1 a n en K submuestras. En mi caso K= 300. Así que habrá una ventana móvil tiempo301-tiempo1, tiempo302-tiempo 2...y se promediará la VCR de esas ventanas.
$$[X,X]_{T}^{K} = \dfrac 1K\sum\limits_{i=1}^{n-K+1} (X_{t_{i+K}} - X_{t_{i}})^2 $$ Entonces $$ \text{TSRV} = \Big(1- \dfrac zn\Big)^{-1}\Big([X,X]_{T}^{K} - \dfrac zn [X,X]_{T}^{all}\Big)$$ donde $z = (n-K+1)/K$ .
Tomando la diferencia entre $$[X,X]_{T}^{K}$$ y $$[X,X]_{T}^{all}$$ anula el efecto del ruido de la microestructura. El factor $(1-z/n)^{-1}$ es un coeficiente para ajustar el sesgo de la muestra finita.
En R existe una función para calcular el TSRV:
myTSRV<-function (pdata, K = 300, J = 1)
{
#pdata contains prices for a stock
#K the slow time scale = 300 seconds
#J is the fast time scale = 1 second
logprices = log(as.numeric(pdata))
n = length(logprices)
nbarK = (n - K + 1)/(K)
nbarJ = (n - J + 1)/(J)
adj = (1 - (nbarK/nbarJ))^-1 #adjust for finite sample bias
logreturns_K = logreturns_J = c()
for (k in 1:K) {
sel = seq(k, n, K)
logreturns_K = c(logreturns_K, diff(logprices[sel]))
}
for (j in 1:J) {
sel = seq(j, n, J)
logreturns_J = c(logreturns_J, diff(logprices[sel]))
}
TSRV = adj * ((1/K) * sum(logreturns_K^2) - ((nbarK/nbarJ) * (1/J) * sum(logreturns_J^2)))
return(TSRV)
}
Tomé datos de garrapatas para IBM durante aproximadamente $2$ horas y calculó el RV y el TSRV con $K= 300$ segundos y $J= 1$ segundo durante aproximadamente $2$ horas.
Tengo algunas preguntas.
- El VR está en el rango de 0,00002 a 0,00005. ¿Cómo lo interpreto? En la literatura, RV también se llama varianza integrada. Quiero la volatilidad así que ¿necesito hacer root cuadrada de este número para llegar a .0044 a .007?
- Incluso si hago root cuadrada, ¿qué significa 0,0044 o 0,007? ¿La volatilidad para IBm durante esas 2 horas fue de .44% a .7%?
- ¿Es necesario normalizar los 0,0044 y 0,007 a un número anual o diario de alguna manera? ¿Puede sugerir cómo?
- ¿Cómo se puede comparar el RV o el TSRV de diferentes intervalos de longitud? Digamos que tengo un RV que se calcula utilizando 2 horas de datos. ¿Cómo lo comparo con un VR que utiliza 6 horas de datos?
Referencias
Todo mi post es de: https://lirias.kuleuven.be/bitstream/123456789/282532/1/AFI_1048.pdf
documento original para el TSRV: http://wwwf.imperial.ac.uk/~pavl/AitSahalia2005.pdf
Código R getAnywhere("TSRV")