1 votos

Cointegración por etapas

Esto es más una pregunta general en este punto, pero si mi proceso de pensamiento tiene sentido voy a seguir con una implementación de R. He leído una serie de artículos sobre el análisis de cointegración para el comercio de pares. Mi idea era aplicar la cointegración a un análisis de los rendimientos de los gestores de inversiones. Normalmente, los rendimientos de los gestores de inversiones se regresan sobre los rendimientos de los factores para estimar la exposición al riesgo y el alfa (intercepción). En cambio, me gustaría utilizar el análisis de cointegración para estimar la exposición al riesgo y el alfa en función del nivel de riqueza acumulada invertida en la estrategia de un gestor frente a diversas exposiciones al riesgo.

Estoy utilizando R. Mi idea era utilizar un procedimiento de tipo regresión por pasos basado en el AIC para encontrar un buen ajuste para los rendimientos de los gestores con un modelo parsimonioso. Básicamente, la idea era crear una función que pasara por varios vectores de cointegración y llegara al vector probado con el AIC más bajo que resultara en residuos estacionarios basados en una prueba ADF. A continuación, podría probar para alfa significativa utilizando los errores estándar de Newey-West. Tengo algunas preguntas:

  1. ¿Es esto algo razonable?

  2. Dado mi conocimiento de las exposiciones al riesgo y de los gestores de inversión, creo que sólo existe un vector de cointegración. Teniendo en cuenta esto, ¿tiene sentido utilizar el método de Engle-Granger? Esto es mucho más fácil de trabajar en R para lo que estoy tratando de hacer.

  3. Si es razonable utilizar el método Engle-Granger con lm() Para estimar alfa (una deriva positiva/negativa en el nivel de riqueza a lo largo del tiempo), ¿puedo simplemente añadir un vector de longitud N a la regresión, donde cada valor es igual a t? Entonces el peso estimado de este término sería igual a la riqueza añadida por período no explicada por el riesgo (habilidad del gestor).

Editar El código de ejemplo está abajo. No he incluido un algoritmo para pasar por diferentes factores de regresión, ya que sólo incluí un simple gestor de renta variable, y añadir y eliminar factores se vuelve más útil, creo, a medida que se profundiza en las alternativas y se observan muchos más factores de riesgo posibles.

require(tseries)
require(sandwich)
require(lmtest)

#---------------- Data--------------------------------------------------------------

managerReturns<-ts(c(-0.008,0.022,0.061,0.013,-0.076,-0.041,0.063,-0.030,0.071
                    ,0.036,-0.010,0.055,0.018,0.039,0.002,0.036,0.003,-0.014
                    ,-0.033,-0.018,-0.055,0.069,0.004,0.019,0.028,0.018,0.028
                    ,-0.008,-0.037,0.048,0.003,0.019,0.025,-0.020,0.013,0.007),
                    start = c(2010,01),frequency=12)

mkt<-ts(c(-0.0336,0.034,0.0632,0.02,-0.0789,-0.0556,0.0692,-0.0477,0.0954,0.0388,
       0.0061,0.0682,0.0201,0.0349,0.0048,0.029,-0.0127,-0.0175,-0.0234,-0.06,
       -0.076,0.1134,-0.0026,0.0074,0.0506,0.0443,0.0311,-0.0084,-0.062,0.0388,
       0.0079,0.0256,0.0274,-0.0175,0.0077,0.0118),start = c(2010,01),frequency=12)

value<-ts(c(0.0019,0.0142,0.0157,0.0493,-0.0009,-0.0212,0.0013,-0.0289,0.0383,
         0.0103,0.0366,0.0075,-0.0246,0.0165,0.0259,-0.003,-0.0066,-0.0008,
         -0.0144,-0.0329,-0.0371,0.0357,-0.0025,-0.0055,0.0253,-0.0161,-0.0022,
         -0.0061,-0.0009,0.0083,-0.0257,0.0073,0.0045,-0.0104,0.0069,0.0165),
          start = c(2010,01),frequency=12)

size<-ts(c(0.0061,0.0273,0.0206,0.0314,-0.0234,-0.0427,0.002,-0.017,-0.0305,
        -0.0228,-0.0051,0.036,0.0084,0.0167,-0.0119,-0.0227,-0.0214,-0.0045,
        -0.0112,-0.0146,-0.0091,-0.0102,-0.001,0.0154,-0.0221,-0.0003,-0.0003,
        -0.0019,0.0017,0.0039,-0.0003,0.0056,0.0159,0.0408,-0.0112,0.0329),
         start = c(2010,01),frequency=12)

rf<-ts(c(0,0,0.0001,0,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,
      0.0001,0.0001,0.0001,0,0,0,0,0.0001,0,0,0,0,0,0,0,0,0.0001,0,0,0.0001,
      0.0001,0.0001,0.0001,0.0001),start = c(2010,01),frequency=12)

mangerReturns<-log(managerReturns+1)
mkt<-log(mkt+1)
value<-log(value+1)
size<-log(size+1)
rf<-log(rf+1)
managerExcess<-managerReturns-rf

# ----------------------------------- Returns based Factor Analysis----------------

fit<-lm(managerExcess~mkt+value+size)
summary(fit)

# ----------------------------------- Cointegration Analysis ----------------------

lvlManager<-cumsum(managerExcess)
lvlMkt<-cumsum(mkt)
lvlValue<-cumsum(value)
lvlSize<-cumsum(size)
alpha<-seq(1,length(lvlManager))

fit2<-lm(lvlManager~lvlMkt+lvlValue+lvlSize+alpha)
#Coefficient test with Newey-West Standard Errors
coeftest(fit2,NeweyWest(fit2))
#Check for stationarity
adf.test(residuals(fit2))

1voto

Zac Puntos 89

Yo recomendaría utilizar el procedimiento de Johansen para determinar el vector de cointegración, el ca.jo -función de library(urca) . Después de determinar el rango de cointegración, se produce un vector de cointegración normalizado estimando un VECM restringido con el comando cajorls() .

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