Otimização de investimentos com Inteligência Artificial

Lucas Leme
Turing Talks
Published in
8 min readFeb 14, 2021

Utilizando paridade de risco hierárquica para montar uma carteira.

Texto escrito por: Lucas Leme Santos.
O código do projeto está no Google Colab

Otimizar é um conceito natural do ser humano. Queremos otimizar nosso tempo, nossa produtividade, nossa vida. E por que não: Otimizar nossos investimentos?

Otimização de investimentos é o processo de selecionar a melhor composição de carteira de ativos possível. Não existe carteira perfeita, mas a elaboração de estratégias que maximizem retornos a um dado risco é a prioridade dos investidores modernos. Embora essa ideia pareça simples, apenas na metade do século passado Harry Markowitz desenvolveu um algoritmo — A Fronteira Eficiente — que permite a otimização de investimentos.

Balança retorno x risco

O maior pressuposto desse algoritmo é que investidores são avessos a risco. Então, dada uma carteira com um certo nível de retorno esperado, a combinação dos ativos com o menor risco possível será a escolhida pelo investidor. Sob essa premissa, investidores só realizarão operações financeiras de alto risco se puderem esperar altíssimos ganhos.

A maldição da fronteira eficiente

Algoritmos de otimização como Markowitz são muito sensíveis a pequenas variações nas entradas do modelo, e esses pequenos erros podem resultar em grandes diferenças nas alocações de uma carteira ideal.

Matriz de covariâncias

Um objeto fundamental para o encontro da fronteira eficiente é a matriz de covariâncias. Com ela é possível analisar as correlações entre todos os ativos e estimar o risco da carteira.

Matrizes de covariâncias são muito complexas para serem analisadas pois levam em conta toda a composição da carteira. Isso significa que erros na entrada do modelo acabam afetando o portfólio como um todo. Uma matriz de covariâncias também pode ser visualizada como um grafo totalmente conectado:

Representação de grafos de uma carteira 50 ativos

Para reduzir a complexidade do grafo o ideal é eliminar conexões entre ativos pouco correlacionados e focar apenas nas relações relevantes. Para isso pode-se utilizar uma estrutura topológica conhecida como árvore. Tal estrutura além de reduzir a interferência de erros de estimativa, melhora significativamente a interpretação do grafo.

Caso queira saber mais detalhes a respeito da maldição da fronteira eficiente leia o apêndice no fim do texto.

Hierarchical risk parity

O Hierarchical Risk Parity (HRP) é um algoritmo de otimização de portfólios desenvolvido por Marcos Lopez de Prado. Esse otimizador combina teoria de grafos e machine learning para construir uma carteira diversificada com soluções estáveis.

O HRP pode ser dividido em 3 grandes passos:

  • Hierarchical Tree Clustering: Processo de agrupamento de ativos semelhantes utilizando inteligência artificial.
  • Matrix Seriation: Reorganização de linhas e colunas da matriz de covariança.
  • Recursive Bisection: Atribuição de pesos dos ativos.

Hierarchical Tree Clustering

Nesta etapa, iremos aplicar uma técnica de aprendizado não supervisionado que é a clusterização hierárquica. Esse tipo de algoritmo visa construir agrupamentos (clusters) segundo um métrica de semelhança entre os dados.

Para isso iremos realizar a aquisição dos preços históricos, para montar uma carteira para ser otimizada. Caso queira saber mais sobre aquisição e análise de dados financeiros, leia nosso texto:

A clusterização hierárquica será realizada sobre os retornos históricos do ativos da carteira. Para efetuar essa operação temos dois principais hiperparâmetros: método e métrica.

Método: Algoritmo utilizado para a clusterização, iremos utilizar ‘ward’ que computa os agrupamentos a partir de suas variâncias.

Métrica: Tipo de medida que avalia a semelhança entre os dados, iremos utilizar a distância euclidiana.

Dendograma de ativos brasileiros

Apenas a partir dos retornos históricos, o algoritmo conseguiu identificar e segmentar diversos setores do mercado:

  • Renda Fixa: Selic
  • Fundos de investimentos: Constellation, ARX Income FIA.
  • Setor bancário: Bradesco e Itaú
  • Fundos imobiliários: HGLG11 e KNRI11
  • Setor de telefonia: Tim e Vivo

Matrix Seriation

No artigo original, essa técnica é mencionada como Quasi-Diagonalization. Com a utilização de aprendizado não supervisionado essa técnica pode ser simplificada em um Matrix Seriation, que é um método estatístico de reordenação de matrizes.

O objetivo dessa etapa é preparar a matriz de covariâncias para a atribuição de pesos. Utilizando os clusters gerados na etapa anterior, podemos recombinar as linhas e colunas da matriz de covariância, a fim de que ativos semelhantes estejam posicionados proximos.

Clustermap da matriz de covarinças

Recursive Bisection

Essa é a última e mais importante etapa do algoritmo, momento no qual os pesos serão atribuídos. A matriz de covariâncias gerada na etapa de Seriation é fundamental, pois ela será utilizada para realizar a iteração nos nós do grafo do dendograma. O algoritmo pode ser representado pelos seguintes passos:

1) Inicialização dos pesos

Todos os ativos recebem peso igual a 1.

2) Iteração entre os nós da árvore

Com a matriz de covariâncias, percorre-se a árvore selecionando os sub-clusters e sub-matrizes respectivos. O objetivo é realizar a diversificação de pesos entre ativos semelhantes.

Olhando o dendograma do passo 1 pode-se exemplificar um hipotético par de carteiras:

Carteira 1: Fundos de investimentos. Que são compostos por 2 ativos, ou seja, tem uma matriz de covariâncias V1, com dimensão 2 x 2.

Carteira 2: Setor bancário. Que também é composta por 2 ativos, resultando em uma matriz de covariâncias V2.

3) Atribuição de pesos pares

Com o objetivo de calcular o risco de cada cluster, iremos atribuir pesos temporários para os ativos do cluster. Dado que cada cluster tem uma matriz de covariâncias (Vi), podemos calcular os pesos da seguinte forma:

4) Determinação das volatilidades

A partir da fórmula clássica de volatilidade de um portfólio:

5) Aplicação do fator de peso absoluto

O fator de alocação funciona como uma fator de escala entre a sub-carteira e a carteira completa.

O fatores de alocação tem um valor entre 0 e 1.

O ativos presentes nas sub-carteiras, que foram inicializados com 1, terão seus valores atualizados pelos fatores de alocação.

6) Repetição dos passos 2 a 5 para todos os clusters gerados

Backtesting da otimização

E na prática? Como essa estratégia performaria no passado?

Essas são as perguntas que queremos responder com o backtesting. Vale ressaltar que rentabilidade passada, não é garantia de rentabilidade futura. Porém ao simular uma estratégia de investimento, podemos obter boas informações de como a estratégia performaria em diversos cenários. Além de analisar a performance, o backtesting é importante para comparação entre diferentes estratégias.

Em nosso backtesting, iremos comparar 3 otimizadores de investimento:

  • Equal Weight: Alocação de carteira que atribui peso igual para todos os ativos.
  • Markowitz: A Fronteira eficiente, algoritmo clássico de otimização.
  • HRP: Hierarchical risk parity, otimizador que utiliza machine learning e teoria de grafos.

O princípio da estratégia aqui utilizada é simples: mensalmente rebalancear a carteira com os otimizadores citados acima.

Segundo o gráfico de rentabilidades, podemos perceber que o hierarchical risk parity teve a melhor performance. Os principais destaques estão no “bull market” de 2019, e no período pós crise da COVID-19 em 2020. Tais resultados não implicam que o hierarchical risk parity é melhor que o Markowitz. Mas sim, que em períodos conturbados, o HRP consegue processar melhor as informações do mercado.

Em períodos de grande volatilidade, os dados tendem a ter um menor grau de confiança. A fronteira eficiente por considerar a correlação entre todos os dados, com muito erros de estimativa, tende a convergir em uma solução não ótima. Fato que pode ser observado no período pós crise, momento no qual o Markowitz performou pior que os outras duas estratégias.

Conclusão

Nesse texto conseguimos estudar mais um algoritmo de otimização de investimentos, que é o HRP. Ele utiliza inteligência artificial e teoria de grafos para lidar com erros de estimativas dos dados de entrada. O HRP utiliza apenas dados do passado para otimizar sua carteira: e se adicionássemos previsões de dados com machine learning? Isso fica para um próximo Turing Talks…

Não deixe de acompanhar o Grupo Turing no Facebook, Linkedin, Instagram e nossos posts do Medium =)

Bons estudos e até a próxima!

Apêndice: A maldição da fronteira eficiente

Utilizando multiplicadores de Lagrange podemos expressar essa instabilidade: O objetivo e a restrição de uma otimização podem ser matematicamente definidos da seguinte maneira:

Calculando as condições de primeira ordem com derivadas parciais chegamos na seguinte solução para a otimização:

E o principal problema que podemos destacar é a necessidade da inversão da matriz de covariânças (V). Para exemplificar considere uma carteira com apenas 2 ativos:

A partir do determinante da matriz podemos perceber que quanto mais correlacionados são os ativos da carteira, maior é a chance da inversa ter valores extremos. E portanto as soluções da otimização não convergem. Para solucionar esse problema o HRP estima os pesos da carteira sem a necessidade de uma otimização clássica.

Referências

--

--

Lucas Leme
Turing Talks

Computer Engineer, interested in Artificial Intelligence and Quantitative Finance.