Hierarchical Risk Parity (HRP): O Que a Árvore Revelou nos Meus 139 Robôs

O HRP de Marcos López de Prado monta portfólio por clustering hierárquico e bisseção recursiva, sem inverter a matriz de covariância. Veja os 3 passos e a evidência de menor variância fora da amostra.

Atualizado em 07/08/2026

O número: quando deixei um algoritmo de clustering hierárquico, o coração do Hierarchical Risk Parity, agrupar meus robôs de trading pela correlação dos resultados, a árvore que emergiu ignorou os pares de moeda e separou a carteira por comportamento: grids de um lado, tendência do outro, com correlação de −0,15 entre os dois galhos. Dentro do galho de tendência, um único fator, o dólar, explicava 67% da variância. Misturar os galhos levou o portfólio de 2,46 para 5,69 fatores de risco independentes. A árvore redescobriu sozinha, sem nenhuma instrução minha, a estrutura que eu tinha levado meses para enxergar na mão.

O Hierarchical Risk Parity, ou HRP, é o método de alocação que Marcos López de Prado publicou em 2016 com uma promessa específica: montar carteiras diversificadas usando a informação da matriz de covariância sem nunca inverter a matriz, que é o passo onde a otimização clássica quebra. Eu já contei em os limites do Markowitz por que a otimização de pesos prometeu +14% no meu portfólio e entregou +6,5% quando travei a cauda, e em paridade de risco na prática por que igualar volatilidade por linha maquia concentração de fator. Este texto fecha a trilogia com o algoritmo em si: como o HRP funciona por dentro, o que aconteceu quando rodei a etapa de clustering sobre meus 139 robôs reais, e por que, mesmo com a árvore acertando na mosca, meu deploy continua em 1/N.

O que a pesquisa mostra: no experimento de Monte Carlo do paper original, o HRP entregou variância fora da amostra 72,47% menor que a do CLA, o algoritmo exato de Markowitz, sendo que minimizar variância é o objetivo declarado do CLA (López de Prado, 2016).

O HRP existe porque inverter matriz de covariância amplifica erro

Para entender o que o HRP conserta, é preciso nomear o defeito. A otimização de Markowitz, e toda a família dela (mínima variância, máximo Sharpe, ERC analítica), precisa inverter a matriz de covariância dos ativos para calcular os pesos. Richard Michaud deu o apelido definitivo a esse processo em 1989: uma “máquina de maximizar erro”. A inversão é numericamente instável quando os ativos são correlacionados entre si, que é exatamente o caso de qualquer carteira real, e o efeito prático é perverso: os maiores pesos vão justamente para as estimativas mais erradas. Um ativo cuja covariância foi medida um pouco baixa demais, por ruído puro da amostra, vira o queridinho do otimizador e recebe posição gigante.

Pior: quanto mais ativos, mais grave. Com 50 ativos, a matriz tem 1.225 covariâncias para estimar; com meus 139 robôs, seriam 9.591 números, cada um com seu próprio erro amostral, e a inversão mistura e amplifica todos eles. É por isso que o resultado clássico de DeMiguel, Garlappi e Uppal (2009) segue de pé: em 14 comparações fora da amostra, nenhuma otimização sofisticada bateu consistentemente o ingênuo 1/N, porque o ganho teórico da otimização é menor que o custo do erro de estimação. Meu teste próprio, mínima variância com encolhimento de Ledoit-Wolf contra lote igual, deu a mesma resposta em miniatura, e o detalhe de onde o +14% ilusório vinha está no artigo do Markowitz linkado acima.

A sacada de López de Prado foi geométrica. A otimização clássica trata todos os ativos como substitutos potenciais de todos os outros: qualquer um pode compensar qualquer um, um grafo completo onde tudo se conecta com tudo. Mercados reais não são assim. Ativos têm parentesco: ações de bancos se parecem entre si antes de se parecerem com mineradoras, pares de moeda cotados contra o dólar compartilham um destino que um contrato de milho não compartilha. Existe uma hierarquia nos dados, e ignorá-la é jogar informação fora enquanto se amplifica ruído. O HRP substitui a inversão de matriz por três passos que respeitam essa hierarquia, e nenhum dos três inverte nada.

O algoritmo em três passos: árvore, reordenação, divisão recursiva

O primeiro passo é o clustering hierárquico. O algoritmo converte cada correlação entre dois ativos em uma distância (correlação alta vira distância curta, correlação baixa ou negativa vira distância longa) e vai juntando, de baixo para cima, os pares mais próximos: primeiro os dois ativos mais parecidos viram um grupinho, depois esse grupinho se junta ao vizinho mais parecido, e assim por diante até sobrar um único tronco. O resultado é um dendrograma, aquela árvore de parentesco que biólogos usam para espécies, só que aqui o parentesco é estatístico: quem sobe e desce junto fica no mesmo galho.

O segundo passo é a quasi-diagonalização. É só uma reordenação: as linhas e colunas da matriz de covariância são reorganizadas na ordem em que os ativos aparecem na árvore, de modo que ativos parecidos fiquem vizinhos. A matriz reordenada concentra os valores altos perto da diagonal, formando blocos visíveis. Nenhum número muda; o que muda é que a estrutura escondida na matriz original, onde os blocos estavam embaralhados, fica exposta. Quem já olhou uma matriz de correlação de 139 ativos em ordem alfabética sabe que ela não diz nada; a mesma matriz ordenada pela árvore conta a história inteira.

O terceiro passo é a bisseção recursiva, onde os pesos nascem. O algoritmo parte do topo da árvore com 100% do capital e vai descendo: em cada bifurcação, divide o capital entre os dois galhos em proporção inversa à variância de cada um (o galho mais arriscado recebe menos), e repete a divisão dentro de cada galho, até chegar aos ativos individuais nas pontas. Cada divisão é uma continha local entre dois grupos, sem sistema de equações global, sem inversão. É paridade de risco aplicada de cima para baixo na árvore, daí o nome. Um efeito colateral elegante: como cada peso nasce de uma cadeia de proporções, todos saem positivos por construção, sem precisar impor restrição de não alavancar.

E funciona? No experimento de Monte Carlo do paper original, o HRP entregou variância fora da amostra 72,47% menor que a do CLA (o algoritmo exato de Markowitz), sendo que minimizar variância é o objetivo declarado do CLA. Ele perde dentro da amostra, onde o otimizador é imbatível por definição, e ganha fora, onde o dinheiro de verdade vive. Raffinot (2017) testou variações da mesma ideia em três bases de dados distintas e confirmou: carteiras baseadas em clustering hierárquico saem mais robustas e genuinamente diversificadas que as otimizadas. A literatura, aqui, é rara: um método novo que sobreviveu à replicação.

Rodei a árvore nos meus 139 robôs e ela ignorou os pares de moeda

A parte que me interessava testar era o primeiro passo, antes de qualquer peso: o que o clustering enxerga quando olha um portfólio real de robôs. Meu pool tem 139 estratégias entre robôs de tendência (posição única, stop, carregam o movimento) e robôs de grid (acumulam ordens contra o movimento em ciclos curtos), espalhados por EURUSD, GBPUSD, USDJPY e USDCAD. Minha expectativa ingênua era uma árvore organizada por par: os EURUSD num galho, os GBPUSD noutro, geografia de planilha.

A árvore não quis saber de par. O primeiro corte, lá no topo do dendrograma, separou a carteira por comportamento: todos os grids de um lado, toda a tendência do outro, com correlação medida de −0,15 entre os dois blocos. E dentro do bloco de tendência, os galhos se misturavam entre pares alegremente, porque a semelhança dominante ali tem nome: o fator dólar, que sozinho explica 67% da variância do bloco. Um robô comprado em USDJPY e outro vendido em EURUSD moram no mesmo galho da árvore, porque nos dois casos a posição de fundo é a mesma, dólar comprado. Como eu conto em correlação num portfólio quant, multiplicar pares multiplica linhas, quase não multiplica fatores de risco: o bloco de tendência inteiro, medido por PCA, valia 2,46 fatores independentes. Foi juntar o galho dos grids que levou o portfólio a 5,69 fatores de risco independentes.

O que me impressionou foi o custo de chegar a cada versão dessa conclusão. Eu levei meses para aprender, na base do PCA, do teste condicional de dias ruins e de uma boa dose de prejuízo intuitivo, que a diversificação real da minha carteira vinha de misturar comportamentos e que par de moeda era cosmético. O clustering hierárquico chegou ao mesmo mapa em segundos, sem que eu dissesse a ele o que era grid, o que era tendência ou o que era dólar. A árvore redescobre a estrutura porque a estrutura está na correlação, e o algoritmo só sabe ler correlação. Essa é, na minha experiência, a utilidade mais subestimada do HRP: antes de alocar um centavo, o dendrograma é um raio-X da carteira que responde a pergunta que importa, “quantos fatores de risco de verdade existem aqui, e quais linhas são o mesmo fator de casaco trocado”.

Dendrograma dos 139 robôs: dois galhos por comportamento (grid vs tendência, corr -0,15), com o fator dólar (67%) dominando o galho de tendência

O que o HRP herda do problema que ele não resolve

Aqui entra a honestidade que falta na maioria dos textos sobre o método. O HRP elimina a inversão de matriz, e isso é um avanço real, mas a matéria-prima continua a mesma: a correlação e a variância históricas, estimadas nos dias que o histórico contém, que são majoritariamente dias calmos. A árvore que me encantou foi construída com a correlação média de 2024 a 2026. E eu já sei, por teste próprio, o que a correlação média esconde: quando otimizei pesos por covariância, metade do ganho aparente vinha de concentrar lote em robôs que pareciam independentes na média e despencavam juntos nos dias de estresse. Co-crashers. O ganho de +14% virou +6,5% quando travei a cauda por fora. O HRP olha a mesma matriz que enganou a mínima variância; ele a lê com mais respeito à estrutura e menos amplificação de ruído, mas dois robôs que só se abraçam no pânico continuam morando em galhos separados da árvore, como se fossem diversificação um do outro.

A bisseção recursiva também carrega uma escolha silenciosa: dividir por inverso da variância pune o galho volátil, e volatilidade medida em janela curta e calma diz pouco sobre a cauda. No meu caso é gritante: o galho dos grids parece o comportado da família na variância diária, mas o pior dia dele foi −$47 contra −$6 do pior dia da tendência, porque grade presa contra um movimento longo sangra de um jeito que a volatilidade média não anuncia. Um HRP ingênuo sobre meus dados daria mais capital justamente ao bloco cuja cauda é mais gorda. Nada disso é defeito exclusivo do HRP; é a herança de tudo que se alimenta de covariância histórica. Mas convém saber o que se está comprando: o HRP resolve o problema de estimação (não amplifica erro), e não resolve o problema de informação (a matriz não contém a cauda).

Por que, mesmo assim, meu deploy continua em 1/N

Diante da árvore, a pergunta prática era: substituo meu lote igual de 0,01 por pesos HRP? Minha resposta, por enquanto, foi não, por um motivo que o próprio dendrograma deixou claro. O trabalho pesado da diversificação, no meu processo, é feito antes da alocação: o pool passa por curadoria estatística, os quase-clones (robôs com correlação altíssima entre si, que a árvore mostra como galhos colados) são removidos, e a mistura de comportamentos é uma decisão de construção, com o bloco de grid entrando deliberadamente como contrapeso do bloco de tendência. Sobre um pool já curado e de-clonado, os componentes têm riscos da mesma ordem de grandeza e a estrutura de blocos já está equilibrada por desenho. Nesse cenário, o 1/N captura quase toda a diversificação disponível sem estimar um único parâmetro, e portanto sem errar um único parâmetro. Foi a mesma conclusão do duelo com a mínima variância: +6,5% líquido não paga a complexidade nem o risco de os pesos estarem calibrados para o regime que acabou.

O HRP entra no meu radar em dois cenários concretos. Primeiro, quando o pool crescer a ponto de a curadoria manual de estrutura ficar impraticável: com algumas centenas de estratégias, deixar a árvore separar as famílias e distribuir capital entre galhos vira a alternativa barata a estimar 9.591 covariâncias e invertê-las. Segundo, e mais importante, quando o portfólio virar multi-classe, que é a direção do projeto: misturando moedas, índices e commodities, as escalas de risco entre blocos deixam de ser parecidas, o 1/N puro passa a subalocar ou sobrealocar classes inteiras, e uma divisão hierárquica por galho, com a cauda medida e travada por fora, começa a pagar o que custa. Até lá, uso o HRP pela metade: a árvore como instrumento de medição, os pesos com o 1/N. A metade que uso já valeu o estudo.

Os números deste artigo

Métrica Valor Contexto
Robôs no pool clusterizado 139 Tendência e grid em 4 pares
Correlação entre os dois galhos −0,15 Primeiro corte separou por comportamento
Variância do bloco de tendência 67% Explicada só pelo fator dólar
Fatores de risco independentes 2,46 → 5,69 Depois de juntar o galho dos grids
Pior dia: grid vs tendência −$47 vs −$6 Cauda que a variância diária esconde
Ganho da otimização com cauda travada +14% → +6,5% Não paga a complexidade sobre o 1/N

O que é Hierarchical Risk Parity em uma frase?

É um método de alocação de carteira, publicado por Marcos López de Prado em 2016, que agrupa os ativos por semelhança estatística numa árvore hierárquica e distribui o capital de cima para baixo, dividindo em cada bifurcação por inverso da variância, sem nunca inverter a matriz de covariância, que é o passo numericamente instável da otimização clássica de Markowitz.

O HRP rende mais que Markowitz?

Dentro da amostra, não: o otimizador clássico é imbatível nos dados em que foi ajustado, por definição. Fora da amostra, que é onde o dinheiro vive, o Monte Carlo do paper original mostrou o HRP com variância 72,47% menor que a do CLA de Markowitz, mesmo sendo variância mínima o objetivo declarado do CLA. O ganho vem de não amplificar erro de estimação, e Raffinot (2017) confirmou a robustez do enfoque em três bases de dados independentes.

Vale usar HRP num portfólio de robôs de trading?

A etapa de clustering vale sempre: no meu pool de 139 robôs, o dendrograma separou a carteira por comportamento (grids contra tendência, correlação −0,15) e expôs que 67% da variância do bloco de tendência era um fator só, o dólar. É um raio-X que a intuição não entrega. A etapa de pesos, num pool já curado e de-clonado com riscos parecidos, agrega pouco sobre o lote igual; ela ganha relevância quando o pool cresce muito ou mistura classes de ativos com escalas de risco diferentes.

O HRP protege contra risco de cauda?

Não. O HRP usa a mesma correlação histórica de dias calmos que alimenta os outros métodos; ele a lê melhor, mas robôs ou ativos que só caem juntos nos dias de estresse continuam parecendo diversificação na árvore. No meu portfólio, o bloco de menor volatilidade diária é o de pior dia isolado (−$47 contra −$6). Qualquer peso vindo de covariância, HRP incluído, precisa da dependência de cauda medida e travada por fora antes de ir para produção.

Referências

  • López de Prado, M. (2016). Building Diversified Portfolios that Outperform Out-of-Sample. The Journal of Portfolio Management, 42(4), 59-69. ssrn.com.
  • Raffinot, T. (2017). Hierarchical Clustering-Based Asset Allocation. The Journal of Portfolio Management, 44(2), 89-99. ssrn.com.
  • Michaud, R. O. (1989). The Markowitz Optimization Enigma: Is ‘Optimized’ Optimal? Financial Analysts Journal, 45(1), 31-42. tandfonline.com.
  • DeMiguel, V.; Garlappi, L.; Uppal, R. (2009). Optimal Versus Naive Diversification: How Inefficient is the 1/N Portfolio Strategy? The Review of Financial Studies, 22(5), 1915-1953. academic.oup.com.
  • Ledoit, O.; Wolf, M. (2004). Honey, I Shrunk the Sample Covariance Matrix. The Journal of Portfolio Management, 30(4), 110-119. pm-research.com.

Presente para Leitores: Robô de Gradiente Linear Gratuito

Estou liberando o acesso ao meu setup pessoal de Gradiente Linear sem custo nenhum. É só clicar e me pedir o arquivo.

Quero meu Robô Gratuito
🔒 Acesso Direto no WhatsApp
⚠️ Aviso de risco: O conteúdo do Invista Já é educacional e informativo sobre algotrading e estratégias quantitativas e não constitui recomendação ou consultoria de investimento, nem oferta ou solicitação de compra ou venda de qualquer ativo. Operações no mercado financeiro envolvem risco de perda, inclusive do capital investido, e resultados passados não garantem resultados futuros. Avalie seu perfil de risco e, se necessário, consulte um profissional certificado antes de investir.

Quem escreve: Flávio Araújo

Trader algorítmico há mais de 13 anos, MBA em Mercado de Capitais e Derivativos. Mantém um laboratório próprio que já rodou mais de 20 milhões de backtests e analisou mais de 20 mil estratégias, e opera um portfólio de robôs acompanhado publicamente no blog. LinkedIn · Instagram · YouTube

Flávio Araújo
Flávio Araújo

Engenheiro com MBA em Mercado de Capitais e Derivativos. Atua há mais de 10 anos no Mercado Financeiro, com 6 anos dedicados ao Algotrading e estratégias quantitativas. Especialista em validação de robustez e automação de investimentos.

Artigos: 171