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?