Cointegración en Acciones

📲 La cointegración es un fenómeno estadístico que se da cuando de dos series que no son estacionarias podemos obtener una combinación lineal entre ellas que sí lo sea.

⬆️ Este hecho en sí puede tener una aplicación práctica en muchos ámbitos, pero centrándonos en los mercados, nos puede servir para crear una estrategia de arbitraje para invertir en acciones,forex, materias primas etc.

📌La idea es usar esa combinación lineal que representa una estabilidad a largo plazo entre los activos para aprovechar los desequilibrios puntuales que existan y entrar al mercado con mayor probabilidad de éxito. En el gráfico de abajo podemos ver la relación existente entre dos acciones españolas. Bankinter y Santander. Ese spread de cointegración creado podemos usarlo para entrar al mercado usando el arbitraje.

🤗 En este vídeo hago un ejemplo en R ampliando este concepto y usando el mercado de acciones españolas como base. 👇🏻👇🏻

CODIGO EN R DEL VÍDEO



## CODIGO PARA COINTEGRACION PARA 2 activos ####


## Recordar Cointegracion será entre dos series NO ESTACIONARIAS

## Obtendremos una Combinación Lineal que sí sea Estacionaria

## Eso nos permitirá tener mayor probablidad de éxito 

### crear una estrategia de arbitraje

#######################################

####  #######

#install.packages("quantmod")
library(quantmod)
#install.packages("tseries")
library(tseries)
#install.packages("fImport")
library(fImport)



# DESCARGA DE DATOS
# UTILIZAMOS 2 acciones


getSymbols("REP.MC",quote="Close",from ="2018-01-01",periodicity = "daily")
REP= REP.MC[,4]
getSymbols("BBVA.MC",quote="Close",from ="2018-01-01",periodicity = "daily")
BBVA= BBVA.MC[,4]
getSymbols("BKT.MC",quote="Close",from ="2018-01-01",periodicity = "daily")
bkt= BKT.MC[,4]
getSymbols("SAN.MC",quote="Close",from ="2018-01-01",periodicity = "daily")
SAN= SAN.MC[,4]





# CODIGO DE MULTICOINTEGRACION

# 1 Hacemos los logaritmos de las series

y = log(bkt)
x = log(SAN)

plot(y,type="l")
plot(x,type="l")

library(tseries)


## 2. Creación del modelo 

mod_cointegracion=lm(y~x)         # regresión lineal

# sacamos betas del modelo de regresión

beta=coef(mod_cointegracion) 

beta

#res<-residuals(mod_cointegracion)

#res1<-data.frame(res)
#adf.test(res1$res)

#modelo y la betas

## Creamos el Spread para hacer arbitraje

pendient =x*beta[2]+beta[1]   #se podría poner más solo añadiendo betas

quant_spread= pendient - y    ### Es el spread que vamos a operar

plot(quant_spread,type="l",main="BANKINTER-SANTANDER")


# 4. COMPORBACION DE COINTEGRACIÓN CON EL TEST DE DICKEY FULLER

dickey=adf.test(quant_spread)   
dickey            ### Pronto lo podréis tener en indicador



plot(quant_spread,type="l")
abline(mean(na.omit(quant_spread)),0,col="orange")
abline(mean(na.omit(quant_spread))+sd(na.omit(quant_spread)),0,col="blue")
abline(mean(na.omit(quant_spread))-sd(na.omit(quant_spread)),0,col="blue")

abline(mean(na.omit(quant_spread))+1.5*sd(na.omit(quant_spread)),0,col="violet")
abline(mean(na.omit(quant_spread))-1.5*sd(na.omit(quant_spread)),0,col="violet")




## comprar de x(santander) y vender y(bankiter)



## beta

cantidad<- beta[2]
cantidad


### Probar con Indices por ejemplo sp500 y dow 
### Incluso probar con EURUSD/Indices o materias primas(brent,crudo)
## maiz,cerdo--- maiz- trigo- soja


6 comentarios en “Cointegración en Acciones”

  1. Alguna aplicacion en el que se pueda solo incluir los datos por ejemplo numéricos dia a dia históricos, y no haya que programar.

    1. Hola!! Puedes hacer el modelo en excel. Aunque con el código que yo os he creado en el post ya podrías ir actualizando cada día. Si no quieres usar R tendrías que hacerlo desde Excel

    1. Hola! Lo que pasa es que normalmente al hacer la primera diferencia ya las dos series se vuelven estacionarias, de manera que ya no tiene razón de ser la idea de cointegración porque por lógica la relación lineal que te te salga va a ser estacionaria al usar esas diferencias. AHora, si al hacer las primeras diferencias esas series siguen siendo NO estacionarias necesitarían quizá una segunda diferencia para volverse estacionarias. De forma que serían I(2), entonces si tendría sentido la idea. Pero comúnmente la idea es que de dos series NO estacionarias saques 1 que si lo es. No que de dos series estacionarias saques una estacionaria.

  2. Que tal! De que forma se pueden encontrar pares integrados de entre tantas acciones o divisas?
    Por ejemplo, encontrar integración en las acciones de un indice…
    He buscado info en internet pero no he encontrado mucho al respecto, ojala me puedas ayudar…
    Saludos!

    1. La única forma que conozco es probando. Es decir, eliges dos acciones y haces la prueba de dickey fuller como en mis videos. Y luego cambias esas acciones por otras y así sucesivamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio