Tag

trading python Archives - Análise Macro

Cointegração e Pair Trading no Python

By | mercado financeiro

Pair Trading é uma estratégia de trading amplamente conhecida, que utiliza métodos estatísticos para obter pares de ativos que sejam neutros em relação ao mercado. Um método para criar a estratégia de Pair Trading é através do teste de cointegração, de forma que se possa obter uma relação entre os pares, no caso ações de empresas listadas na bolsa. Neste post de hoje, ensinaremos a como realizar esse procedimento utilizando o Python.

Para utilizar o Pair Trading, devemos encontrar ativos que se relacionam de alguma forma, afinal, se eles possuem uma forte relação (principalmente estatística), qualquer desvio da diferença de seus preços pode ser considerada uma anomalia, possibilitando um ganho, seja comprando ou entrando vendido na ação, a depender da situação.

Mas como podemos encontrar ativos que se relacionam e exprimem relações estatísticas entre si? E como podemos criar sinais de forma que possamos saber quando comprar ou vender os ativos? Existem diferentes métodos, entretanto, um amplamente conhecido é a utilização do Teste de Cointegração para saber se as ações possuem uma forte relação estatística.

A partir dessa relação, podemos criar um modelo de regressão linear, que possibilite expressar a estimativa do preço de uma ação a partir de sua relação com outra ação. A diferença do resultado da estimativa de um ativo com o preço do outro resultará no spread (o desvio entre o preço das duas ações). Para construir os sinais de compra e venda, transformamos os desvios (spread) em um Escore Z, de forma que possamos mensurá-los em distâncias de desvio padrão.

Abaixo, mostramos o passo a passo deste método, utilizando os preços das ações JOPA3 e MDIA, no período entre janeiro de 2021 e janeiro de 2022. Deve-se salientar que a tarefa de encontrar ativos que possuem uma relação de cointegração não é algo fácil, sendo necessário uma investigação profunda de ativos que façam parte de setores iguais e tenham uma estrutura similar. Outro ponto a se observar é a amostra do tempo, que por vezes, pode não ser significativa em períodos diferentes, mesmo que com os mesmo ativos.

O primeiro passo será capturar os preços de fechamentos das empresas JOPA3 e MDIA3 durante o período citado.

Visualizamos a relação entre os dois ativos durante o período.

Em seguida, queremos saber se de fato as ações possuem alguma relação, e para isso, utilizamos a função coint() para realizar um Teste de Engle & Granger. No resultado, vemos que encontramos um valor abaixo de 5%, o que nos leva a rejeitar a Hipótese Nula de não cointegração.

Com a confirmação da cointegração entre as duas ações, podemos modelar os spreads entre as duas variáveis de forma que possamos criar os sinais de comprar e venda. Realizamos esse procedimento através de uma regressão linear entre as duas ações. Calculamos o spread pela diferença do preço do MDIA3 em relação ao preço do JOPA3, ponderado pelo coeficiente encontrado no modelo.

Transformamos esse spread, calculando o z score, de forma que possamos medir as variações em termos de desvio padrão.

Por fim, criamos os sinais através do ratio entre as duas ações transformados em z score com os limites de desvio padrão para entrar comprado ou vendido nas ações.  Com efeito, construímos uma simulação de investimento com um capital de 1000 para cada ação e visualizamos o resultado da estratégia durante o período.


__________________________________________________

Quer saber mais?

Veja nossos cursos da trilha de Finanças Quantitativas.

_________________________________________________

Referências

QuantRocket, Introduction to Pairs Trading

Sabir Jana, Statistical Arbitrage with Pairs Trading and Backtesting

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente