1 votos

Interpretación y escalado de la Varianza Realizada con datos de la muestra

Tengo una pregunta sobre la varianza realizada (RV) y tengo algunos precios de muestra a continuación para trabajar. Puede ejecutar el código R a continuación para construir un vector de retornos de registro. Hay 78 cubos de 5 minutos en un día de negociación (desde la apertura hasta el cierre) por lo que el vector de retornos log tiene length(logreturns) = 78.

El cálculo de la RV es la suma de los rendimientos logarítmicos al cuadrado. Donde X es el log PRECIO y n es el número de cubos en un día RV es igual:
$$ RV = \sum\limits_{i=1}^{n} (X_{t_{i+1}} - X_{t_{i}})^2 $$

Así que a continuación calculo la RV, luego obtengo la volatilidad sacando root cuadrada, y luego la anualizo. .

RV = sum(logreturns^2)
RV
[1] 2.509554e-05
daily_volatility = sqrt(RV) 
daily_volatility 
[1] 0.005009545 # i.e. open to close volatility  = .49%
annualized_volatility = sqrt(260)*volatility
annualized_volatility
[1] 0.08033328  # on an annualized basis that is 8.03% 

Pregunta 0: Mi serie temporal de precios se construyó utilizando el último tick de cada cubo de 5 minutos. ¿Sería mejor utilizar el VWAP en cada cubo en lugar del último tick de cada cubo? El VWAP se definiría como el producto de los PRECIOS de todos los ticks (P) y el VOLUMEN de todos los ticks (V) en un cubo de 5 minutos dividido por la suma del volumen de todos los ticks en un cubo de 5 minutos. ie.VWAP = (P*V)/suma(V)

Pregunta 1: ¿Puede interpretarse entonces que la volatilidad de este día fue del 0,5%? o del 8,03% sobre una base anualizada?

Ahora estoy midiendo la RV para poder utilizarla en las regresiones posteriores a la negociación que analizan los costes comerciales. Mediré la volatilidad desde el momento de la apertura del mercado hasta el momento en que se realiza una operación. Por ejemplo, si una operación tiene lugar en el minuto 16, habrá 3 cubos de 5 minutos utilizados en el cálculo de RV. Si otra operación tiene lugar en el minuto 76, se utilizarán 15 cubos de 5 minutos. Creo que necesito escalar los RVs a un RV diario antes de poder utilizarlos en una regresión. Esto se debe a que, utilizando el ejemplo anterior, si el RV del minuto 16 y el RV del minuto 76 son iguales, eso sería engañoso porque el RV del minuto 16 no está en la misma escala de tiempo. Así que...

Pregunta 2: ¿Cómo se deben escalar adecuadamente los VR calculados a partir de un número diferente de cubos? Por ejemplo, utilizando el vector logreturns, digamos que una operación tiene lugar en el minuto 21, por lo que utilizaré los primeros 4 buckets de 5 minutos para calcular un RV:

RV = sum(logreturns[1:4]^2) # HERE ONLY USE 1st 4 BUCKETS
daily_volatility = sqrt(RV) 
daily_volatility 
[1] 0.001503846  # here the volatility using the first 4 buckets is .15%

¿Cómo debe escalarse este 0,001503846 para que pueda utilizarse en las regresiones posteriores a la operación con diferentes VR?

Estaba pensando en escalar por el número de cubos utilizados para obtener:

scaled_volatility = daily_volatility * sqrt(78/4)
[1] 0.006640803  #daily volatility would be .66%
scaled_volatility_annualized = daily_volatility * sqrt(78/4)*sqrt(260)
[1] 0.1070797  # annualized volatility would be 10.7%

¿Sería eso correcto?

Pregunta 3: ¿Tiene algún sentido cotejar la cifra de VR anualizada con una cifra de volatilidad de cierre? ¿Hay que esperar que sean similares o diferentes?

# R code to build price vector
prices= c(69.354346196)
prices= rbind(prices,69.290432)
prices= rbind(prices,69.300752759)
prices= rbind(prices,69.219979108)
prices= rbind(prices,69.208148518)
prices= rbind(prices,69.246598516)
prices= rbind(prices,69.316969994)
prices= rbind(prices,69.382236297)
prices= rbind(prices,69.439047295)
prices= rbind(prices,69.303030426)
prices= rbind(prices,69.215724903)
prices= rbind(prices,69.235499743)
prices= rbind(prices,69.228075019)
prices= rbind(prices,69.226522461)
prices= rbind(prices,69.278545753)
prices= rbind(prices,69.279946134)
prices= rbind(prices,69.294667184)
prices= rbind(prices,69.325204623)
prices= rbind(prices,69.296794394)
prices= rbind(prices,69.271009358)
prices= rbind(prices,69.258763087)
prices= rbind(prices,69.230728678)
prices= rbind(prices,69.250976948)
prices= rbind(prices,69.275912906)
prices= rbind(prices,69.266953813)
prices= rbind(prices,69.275524358)
prices= rbind(prices,69.257009203)
prices= rbind(prices,69.248320494)
prices= rbind(prices,69.239413345)
prices= rbind(prices,69.169838829)
prices= rbind(prices,69.15291089)
prices= rbind(prices,69.181671655)
prices= rbind(prices,69.171275889)
prices= rbind(prices,69.149855396)
prices= rbind(prices,69.181647188)
prices= rbind(prices,69.116412877)
prices= rbind(prices,69.169805719)
prices= rbind(prices,69.17149549)
prices= rbind(prices,69.171311493)
prices= rbind(prices,69.150704259)
prices= rbind(prices,69.168990869)
prices= rbind(prices,69.167502639)
prices= rbind(prices,69.169828509)
prices= rbind(prices,69.136281414)
prices= rbind(prices,69.137206043)
prices= rbind(prices,69.108438269)
prices= rbind(prices,69.10342004)
prices= rbind(prices,69.165636224)
prices= rbind(prices,69.193646811)
prices= rbind(prices,69.2072143)
prices= rbind(prices,69.232462739)
prices= rbind(prices,69.255101895)
prices= rbind(prices,69.278061272)
prices= rbind(prices,69.33507867)
prices= rbind(prices,69.378308505)
prices= rbind(prices,69.373578935)
prices= rbind(prices,69.42822269)
prices= rbind(prices,69.433781902)
prices= rbind(prices,69.448787913)
prices= rbind(prices,69.441731914)
prices= rbind(prices,69.444092485)
prices= rbind(prices,69.440302981)
prices= rbind(prices,69.379244744)
prices= rbind(prices,69.430264889)
prices= rbind(prices,69.441485395)
prices= rbind(prices,69.492248013)
prices= rbind(prices,69.513478661)
prices= rbind(prices,69.567990492)
prices= rbind(prices,69.580500697)
prices= rbind(prices,69.51972368)
prices= rbind(prices,69.561692927)
prices= rbind(prices,69.563459496)
prices= rbind(prices,69.538617278)
prices= rbind(prices,69.58494135)
prices= rbind(prices,69.564894664)
prices= rbind(prices,69.548091511)
prices= rbind(prices,69.604420178)
prices= rbind(prices,69.574414993)
prices= rbind(prices,69.632808692)
head(prices)
logreturns = diff(log(prices))#log returns
head(logreturns)

0 votos

¿Puede definir VWAP?

1voto

Stephen Darlington Puntos 33587

Abordaré las cosas en orden según las encontré en la pregunta.

En primer lugar, su fórmula para la RV sólo tiene sentido si $X_{t_i}$ es el log- precio no log- devolver . Si se trata de un error tipográfico, lo mejor es que edites la pregunta para corregirlo. Si no es un error tipográfico, hágamelo saber, porque entonces tiene problemas mayores...

Respuesta 0: No tengo ni idea de lo que es el VWAP. Sin embargo, puedo decirle que la norma en la literatura académica es utilizar la observación más reciente en cada cubo. Suponiendo que el VWAP sea algún tipo de función suave sobre todas las observaciones en el cubo, podría encontrar que el VR calculado utilizando el VWAP es menor en promedio que el VR calculado utilizando la observación más reciente. Que esto sea bueno o no depende de la aplicación. Edición 2018: Bien, el VWAP es el precio medio ponderado por volumen. Probablemente debería haberlo adivinado. Nunca he mirado el VWAP. Una vez miré la mejor oferta y la mejor demanda ponderadas, es decir, en lugar del punto medio de la oferta y la demanda, ponderar la mejor oferta y la mejor demanda por los respectivos mejores volúmenes de oferta y de demanda. El uso de este proxy de precios resultó en estimaciones de varianza de alta frecuencia que fueron significativamente mayor que cuando se utilizan los datos del punto medio de la oferta y la demanda. Terminé por abandonarlo por completo ya que los números no parecían sensatos desde una perspectiva heurística.

Respuesta 1: Utilizando la notación que describe en la pregunta, la volatilidad realizada es una estimación de la verdadera volatilidad de un rendimiento que abarca el período de tiempo $[t_1, t_n]$ . Se puede escalar el número hacia arriba o hacia abajo, pero esto sólo cambia el unidades . Lo hace no cambiar la interpretación. Independientemente de la escala que se elija para el número, el estimador en sí sigue perteneciendo sólo al intervalo $[t_1, t_n]$ .

Dicho de otro modo, un estimador de RV que abarque $[t_1, t_n]$ puede no se puede interpretar como un estimador para un periodo de tiempo diferente, como por ejemplo $[t_1, t_{n+1}]$ excepto bajo el estricto supuesto de que la volatilidad real es constante (y este supuesto casi nunca es válido en los mercados financieros).

Ojo, no estoy diciendo que no puedas escalar tus estimadores de RV para que estén todos en unidades anualizadas. Siéntase libre de hablar de su estimador de VR como si fuera ~8% en unidades anualizadas. No hay nada malo en ello. Lo único que digo es que no hay que olvidar nunca que el propio estimador se ha obtenido sólo a partir de datos que abarcan $[t_1, t_n]$ .

Respuesta 2: Esta es una pregunta difícil de responder sin saber exactamente lo que intenta hacer con sus regresiones. Por ejemplo, si sólo le interesa la significación estadística de sus coeficientes estimados, la cuestión de la escala es irrelevante, ya que no tendrá ningún efecto sobre la significación estadística de sus estimadores. Esto se debe a que escalar una secuencia de variables aleatorias por una constante no tiene ningún efecto sobre la correlación con otras variables aleatorias. (Nota: estoy asumiendo que estás haciendo un método de estimación relativamente común como OLS - puedo pensar en algunos métodos de estimación exóticos donde podría hacer una diferencia).

Por otro lado, si quiere hacer comparaciones ad hoc entre los magnitud de sus coeficientes estimados, entonces sí, podría resultar útil escalar todos sus estimadores de varianza realizados a las mismas unidades. Puede hacerlo utilizando root cuadrada del tiempo, como se ha comentado en la pregunta, pero tenga en cuenta mis advertencias sobre la interpretación de Respuesta 1 .

ACTUALIZACIÓN: Basándome en el problema de regresión que el OP describe en los comentarios, mi análisis es el siguiente: Si se quiere utilizar estimadores de volatilidad realizada de muchos periodos de tiempo diferentes para estimar el coeficiente (término beta) en la regresión descrita entonces es muy es importante que usted escale las volatilidades realizadas para que todas estén en las mismas unidades, por ejemplo, anualizadas. Esto se debe a que su regresión parece estar intentando aislar el efecto de la volatilidad "spot" (estoy usando este término de forma imprecisa aquí - disculpas a cualquier purista que lea) en los costes de negociación. Pero si no escalas todas las VR a las mismas unidades, también estarás midiendo el efecto de la hora del día en los costes de negociación, porque las VR de las primeras horas del día se miden en un periodo más corto y, por tanto, serán más pequeñas. Supongo que el objetivo es aislar el efecto de la volatilidad en los costes de negociación, lo que significa que queremos eliminar cualquier otro efecto. Así que en este caso, escalar las varianzas realizadas para que se midan en las mismas unidades me parece bien.

Respuesta 3: No estoy muy seguro de lo que quiere decir con la cifra de volatilidad cercana. Supongo que te refieres a la estimación de la varianza de la muestra calculada a partir de los rendimientos de cierre que, en conjunto, abarcan un año. Si este es el caso, entonces como dije en Respuesta 1 La comparación sólo tiene sentido si la volatilidad real es constante a lo largo de todo el año (lo que nunca ocurriría en los mercados financieros).

0 votos

Gracias, Colin. Sí, X es el precio del registro. He editado la pregunta. En cuanto a la pregunta 2 estoy midiendo RV para tener una idea de las condiciones del mercado antes de un comercio. La volatilidad es una condición del mercado. Es decir, ¿cuán volátil es el mercado hoy antes de operar? Utilizo la VR para responder a esa pregunta. Voy a aplicar el RV en una regresión como trade cost = Beta_0 + Beta_1*Volatilidad donde Volatilidad es root cuadrada del RV como se ve en el código. (continuación)

0 votos

Pensaba que ahí sería necesario escalar. Mi razonamiento fue que si usted tiene trade1 que tiene lugar en el momento n1 (por lo que el RV1 es de [t1,t_n1]) y trade2 que tiene lugar en el momento n2 (por lo que el RV2 es de [t1,t_n2]) Y n1<n2 Y si usted asume RV1 = RV2 entonces la regresión interpretaría RV1 y RV2 como teniendo el mismo RV. es decir, las mismas condiciones de mercado existieron antes de que negociara trade1 como antes de que negociara trade2.(continuación)

0 votos

No pensé que tenía sentido porque, obviamente, hubo más variación en un período más corto de tiempo para el comercio1 en comparación con el comercio2 así que iba a escalar todos los RV a RV diario o anualizado para que en este caso la escala-RV1 sería mayor que la escala-RV2 entendiendo que la escala hace una suposición de que la volatilidad es constante como usted ha señalado. Mi pensamiento aquí es que el tiempo importa de alguna manera cuando se comparan RVs de [t1,t_n1] vs. [t1, t_n2]. ¿Puede aclarar si el intervalo de tiempo es irrelevante en este caso? (continuación)

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