Analisando correlação em estratégias de trading

Neste texto vou mostrar como analisar a correlação de estratégias automatizadas com exemplos práticos para composição de portfólios vencedores

Kaio Valente
devtrader
6 min readNov 23, 2020

--

Quando iniciamos no mundo de automação de estratégias nossa primeira preocupação é em desenvolver uma estratégia lucrativa no longo prazo, neste contexto, olhamos para métricas como: Fator de Lucro, Payoff, Expectativa Matemática, Drawdown, entre outras. Quando passamos de nível e começamos a ter uma série de estratégias lucrativas, nossa preocupação deve se voltar ao conjunto delas, é o que chamamos de portfólio de robôs. Cada vez mais as estatísticas isoladas de cada estratégia perdem importância e passamos a pensar no todo, com o objetivo de melhorar o desempenho do portfólio, sempre com o objetivo de diminuir o risco e maximizar o lucro. Para isso, devemos entender muito bem o conceito estatístico de correlação.

Em sua definição:

Correlação significa uma semelhança ou relação entre duas coisas, pessoas ou ideias. É uma semelhança ou equivalência que existe entre duas hipóteses, situações ou objetos diferentes.

No campo da estatística e da matemática a correlação se refere a uma medida entre duas ou mais variáveis que se relacionam.

No nosso contexto, queremos saber se uma estratégia é muito correlacionada com outra(s). Estratégias muito correlacionadas tendem a ganhar e perder juntas. Não é essa característica que buscamos em um portfólio de robôs, queremos que elas protejam-se entre si, enquanto uma estiver perdendo, quero que outras estejam ganhando, dessa forma, meu risco será mitigado.

Gosto muito de fazer a analogia com um time de futebol. Um portfólio balanceado de robôs é como um time muito bem equilibrado, cada um em sua posição. Imagine um time cheio de craques. Porém todos são atacantes, não há zagueiros, laterais, nem meios de campo, todos jogam de forma ofensiva, esse time provavelmente faria muitos gols. Em contrapartida também levariam muitos, já que não sabem se defender. Será que esse time seria vencedor jogando contra times mais equilibrados? Tenho minhas dúvidas.

O cenário é o mesmo quando falamos de robôs/estratégias. E como podemos montar um time (portfólio) equilibrado de robôs? Diversificando entre modelos operacionais: Seguidores de tendência; contra tendência; scalpers; etc.

Além de diversificar as estratégias, precisamos medir a correlação entre elas. Como podemos fazer isso?

Correlação no Excel

O jeito mais básico e simples, mas não tão eficiente, é usando o bom e velho Excel. Através da fórmula “CORREL”, podemos medir a correlação entre dois conjuntos de dados

Correlação calculada no Excel

Para isso, só precisamos ter conjuntos com a mesma quantidade de dados. Neste exemplo estamos comparando o resultado da Variável A com a Variável B. Em azul, temos baixa correlação, em cinza correlação inexistente e em laranja alta correlação. Utilizando coeficiente de Pearson, este valor vai de -1 até 1.

Utilizei nesse exemplo um range de valores de 1 a 50. Veja que no primeiro exemplo, os resultado são opostos, por conta disso, temos uma correlação negativa (-0,92). Já no segundo exemplo, os resultados mostram-se aleatórios, sem relação entre si (-0,03). Já no terceiro, são muito parecidos, resultados próximos em ambas as variáveis, caracterizando alta correlação (0,97).

Para trazer este exemplo pro nosso contexto, podemos pegar os resultados de vários trades e agrupá-los por estratégias: Estratégia A e Estratégia B, utilizando a função “CORREL(Conjunto 1; Conjunto 2)” saberemos a correlação entre elas. Lembre-se que os conjuntos precisam ter a mesma quantidade de dados. Exemplo: 500 trades para Estratégia A e 500 trades para Estratégia B, ou o resultado de 100 dias para a Estratégia A e Estratégia B.

Correlação em Python

Se você tem alguma familiaridade com linguagens de programação, podemos fazer isso de forma bem simples utilizando Python. Carregando um pandas dataframe com os dados das estratégias que seja comparar e usando a função corr()

Nesta matriz de correlação, a análise é feita comparando Eixo X com Eixo Y: CONTRA TENDENCIA x TREND; CONTRA TENDENCIA x SCALPER, e assim em diante.

Correlação no BotSpot

Para facilitar a vida de quem deseja analisar a correlação de várias estratégias, mas não quer ter o trabalho de organizar todo esse conjunto de dados, é possível analisar a correlação de vário robôs simulando um portfólio no BotSpot.

Para exemplificar a importância da correlação na composição de um portfólio, vou simular 2 portfólios, com apenas 2 estratégias cada. Neste cenário, vamos usar a métrica “Fator de Recuperação” como medida de avaliação para estabelecer a melhor estratégia/portfólio.

Fator de Recuperação é a relação entre Lucro / Drawdown. Em outras palavras, mede o nível de lucro em relação ao risco. Quanto maior seu valor, significa que a estratégia lucrou mais em relação ao sua perda máxima.

Para compor os portfólios, vamos usar 3 estratégias diferentes, todas com dados carregados de 10/15 até 10/2020:

Scorpion 15 — Fator de Recuperação: 11.90
Fisherman — Fator de Recuperação: 14.84
Trench — Fator de Recuperação: 13.25
  • Scorpion 15 — Fator de recuperação 11.90
  • Fisherman — Fator de recuperação: 14.84
  • Trench — Fator de recuperação: 13.25

A composição dos portfólios, será a seguinte:

  • Portfólio 1: Scorpion 15 e Fisherman
  • Portfólio 2: Scorpion 15 e Trench

Note que a estratégia Fisherman tem um Fator de Recuperação (FR) maior que o da estratégia Trench. Então, esperamos que o Portfólio 1 apresente um resultado melhor que o Portfólio 2. Vamos aos resultados:

Portfólio 1 — Scorpion 15 x Fisherman — Fator de recuperação: 19.15
Portfólio 2 — Scorpion 15 x Trench — Fator de recuperação: 19.69

Podemos observar alguns pontos importantes:

  • O Portfólio 1 lucrou mais que o Portfólio 2. (R$ 35.132 x R$ 30.996)
  • O Portfólio 1 correu mais risco (Drawdown) que o Portfólio 2. (R$ -1.835 x R$ -1.574)

Entretanto, como estamos levando o Fator de Recuperação como métrica principal de comparação, o Portfólio 2 ganha do Portfólio 1, por uma pequena diferença: FR 19.69 x FR 19.15

Mas como isso foi possível, já que no Portfólio 1, está a estratégia Fisherman, que tem melhores resultados que a estratégia Trench do Portfólio 2?

Resposta: por conta da correlação. Vamos analisá-las:

Correlação do Portfólio 1

Veja que a estratégia Scorpion 15 é altamente correlacionada com a estratégia Fisherman. Isso indica que quando uma está perdendo a outra também tende a perder. Dessa forma, aumentando o Drawdown do portfólio.

Correlação do Portfólio 2

Já no Portfólio 2, a estratégia Scorpion 15 não tem correlação com a estratégia Trench. Logo, em períodos de drawdown, elas não costumam perder juntas, gerando uma curva de capital mais suavizada.

Conclusão

Fazer esse tipo de análise para um portfólio de robôs é essencial para a construção de times vencedores no longo prazo. Para isso, a diversificação de estratégias é o ponto chave.

Você pode executar 50 robôs em um portfólio e ter resultados melhores rodando apenas 5. Tudo vai depender da correlação entre eles.

Se você gostou desse tipo de conteúdo e gostaria de acompanhar, siga @devtrader no instagram.

--

--