Montar portfólio invertendo a matriz de covariância é frágil: pequenos erros de estimativa viram pesos absurdos, e a carteira “ótima” no backtest desmancha fora da amostra. O Hierarchical Risk Parity, proposto por Marcos López de Prado, troca a inversão da matriz por clustering hierárquico — uma ideia de machine learning aplicada à montagem de portfólio para algotrading. Ele dialoga diretamente com a paridade de risco clássica, expõe os limites da otimização de Markowitz, depende da estrutura de correlação entre os ativos e tem implicações para quem se preocupa com risco de cauda. Este guia abre os três passos do método e a evidência que o sustenta.
Por que Markowitz e mínima variância falham fora da amostra
Markowitz e a mínima variância falham fora da amostra porque amplificam o erro de estimativa ao inverter a matriz de covariância. A otimização de média-variância é, nas palavras de Stefan Jansen (2018), “muito sensível às estimativas” de retornos esperados e de covariância. O problema é que essas estimativas vêm de uma amostra finita de retornos ruidosos; ao inverter a matriz, o otimizador multiplica esse ruído e produz pesos extremos — comprado pesado em um ativo, vendido pesado em outro quase idêntico — que não sobrevivem ao período seguinte.
López de Prado batiza essa fragilidade de “maldição de Markowitz” (Markowitz curse): quanto mais correlacionados são os ativos — exatamente quando a diversificação seria mais necessária — mais instável fica a solução do otimizador. A inversão da matriz exige que ela seja bem-condicionada e invertível; com ativos muito correlacionados, ela fica quase singular, e a inversão explode. O resultado prático é conhecido: carteiras de média-variância e mínima variância frequentemente perdem fora da amostra para o 1/N ingênuo (peso igual), um benchmark difícil de bater documentado por DeMiguel, Garlappi e Uppal (2009).
Vale entender o mecanismo, porque ele é a razão de existir do HRP. Quando dois ativos têm correlação de, digamos, 0,95, a matriz de covariância tem duas linhas quase idênticas. Matematicamente, isso significa que ela está perto de não ter inversa (determinante perto de zero). O otimizador, ao calcular a inversa, encontra uma maneira “ótima” de explorar a minúscula diferença entre os dois ativos — tipicamente comprando muito de um e vendendo muito do outro para “cancelar” o risco comum. No papel, a variância despenca. Na prática, essa diferença minúscula era ruído de estimativa, não sinal; no período seguinte, ela muda de sinal, e a aposta alavancada que parecia perfeita vira prejuízo. Quanto maior o número de ativos em relação ao histórico disponível, pior: com 50 ativos e 60 meses de dados, há covariâncias demais para estimar com tão pouca informação, e o otimizador encontra “diversificações” que são puro overfitting da amostra.
Mais constrangedor: a mínima variância e a média-variância costumam perder até para regras que nem olham os dados. Por isso o 1/N é o teste de fogo de qualquer otimizador sério — se o seu método sofisticado não bate peso igual fora da amostra, ele não está adicionando informação, está adicionando ruído. O HRP nasce justamente da pergunta: dá para usar a estrutura da matriz de covariância sem cair na armadilha de invertê-la?
O que é o Hierarchical Risk Parity
O Hierarchical Risk Parity é um método de alocação que usa clustering hierárquico da matriz de correlação para distribuir risco sem nunca inverter a matriz de covariância. López de Prado o apresentou em “Building Diversified Portfolios that Outperform Out-of-Sample” (Journal of Portfolio Management, 2016, v. 42, p. 59–69). A ideia central: mercados financeiros têm estrutura hierárquica — ações de um mesmo setor se parecem entre si mais do que com ações de outro setor, e setores se agrupam em blocos maiores. A matriz de correlação crua ignora essa hierarquia e deixa os pesos variarem livremente, de formas não intencionais.
O HRP impõe a hierarquia antes de alocar. Em vez de tratar todos os ativos como concorrentes diretos por capital (o que a inversão faz), ele organiza os ativos numa árvore e só deixa “competir” quem está no mesmo galho. Por isso López de Prado descreve o HRP como tratar ativos correlacionados como complementos, não substitutos. E como nunca inverte nada, o HRP funciona até sobre uma matriz singular ou degenerada — uma tarefa impossível para qualquer otimizador quadrático.
Passo 1: clustering hierárquico (a árvore de ativos)
O primeiro passo transforma a matriz de correlação numa árvore de ativos por clustering hierárquico. O procedimento, conforme López de Prado (2016) e descrito por Jansen (2018), é:
- Definir uma distância a partir da correlação, de modo que ativos altamente correlacionados fiquem “perto” e ativos descorrelacionados fiquem “longe”. A distância usada é derivada da correlação (algo como distância = raiz de [(1 − correlação) / 2]).
- Aplicar clustering de ligação simples (single-linkage) sobre essas distâncias para encontrar quais ativos se unem primeiro, depois quais pares de grupos se unem, e assim por diante.
- O resultado é um dendrograma — uma árvore que mostra a hierarquia: os ativos mais parecidos no fundo, os blocos maiores no topo.
Esse é o coração “machine learning” do método: aprendizado não supervisionado descobrindo a estrutura latente dos retornos, sem rótulos e sem chutar setores à mão.
Passo 2: quasi-diagonalização (reorganizar a matriz)
A quasi-diagonalização reordena as linhas e colunas da matriz de covariância seguindo a árvore, agrupando os ativos parecidos lado a lado. Depois desse reordenamento, os maiores valores de covariância se concentram em blocos ao longo da diagonal — a matriz fica “quase diagonal”. Ativos que se movem juntos passam a ficar adjacentes; ativos pouco relacionados ficam distantes.
Isso não muda nenhum número da matriz, só a ordem. Mas a nova ordem é o que permite o passo 3 funcionar: ao caminhar pela árvore de cima para baixo, o HRP sempre divide grupos que fazem sentido econômico (todas as ações de tecnologia de um lado, todos os títulos de renda fixa do outro), em vez de cortes arbitrários. É a estrutura hierárquica entrando na conta sem precisar de inversão.
Passo 3: bisseção recursiva (a alocação de pesos)
A bisseção recursiva distribui o capital descendo a árvore de cima para baixo, dividindo o portfólio em sub-portfólios e alocando por variância inversa em cada divisão. O algoritmo:
- Começa com 100% do capital no portfólio inteiro.
- Divide o conjunto de ativos em dois sub-grupos, seguindo a árvore (a quasi-diagonalização garante que a divisão respeita os clusters).
- Calcula a variância de cada sub-grupo e reparte o capital entre os dois na proporção inversa da variância — o lado menos arriscado recebe mais.
- Repete recursivamente dentro de cada sub-grupo até sobrar um ativo só.
O peso final de cada ativo é o produto de todas as frações que ele recebeu no caminho do topo até a folha. Como a variância inversa é aplicada localmente, dentro de cada galho, o método reduz drasticamente os graus de liberdade e nunca produz aquelas apostas extremas e alavancadas da inversão de matriz. É paridade de risco, mas guiada pela hierarquia.
Repare no que isso muda na prática. Imagine três ações de tecnologia muito parecidas e um título de renda fixa descorrelacionado. Um otimizador ingênuo de variância inversa trataria os quatro no mesmo nível e daria peso a cada ação de tecnologia individualmente — somando, o bloco de tecnologia acabaria com peso desproporcional, porque há três ativos quase idênticos puxando capital. O HRP, ao dividir primeiro entre o cluster de tecnologia e o cluster de renda fixa, reparte o capital entre os dois blocos antes de descer aos ativos individuais. As três ações parecidas então dividem entre si a fatia do bloco de tecnologia, em vez de cada uma reivindicar sua própria fatia do bolo inteiro. É essa hierarquia que impede a concentração disfarçada — e é por isso que o HRP termina muito menos concentrado que o CLA no experimento de López de Prado.
A evidência: menor variância fora da amostra
A evidência central do HRP é variância fora da amostra menor que a do próprio otimizador de mínima variância. No experimento de Monte Carlo de López de Prado (2016), comparando o HRP com o CLA (Critical Line Algorithm de Markowitz) e com o portfólio de variância inversa (IVP):
- A variância fora da amostra do CLA excedeu a do HRP em 72,47% — mesmo sendo a mínima variância o objetivo de otimização do CLA.
- A variância do IVP ficou 38,24% maior que a do HRP.
- O HRP melhorou o Sharpe fora da amostra de uma estratégia CLA em cerca de 31,3%.
Há também uma diferença gritante de concentração: no exemplo numérico do paper, o CLA colocou 92,66% do peso total nos cinco maiores ativos, enquanto o HRP alocou 62,57% ao mesmo grupo. Ou seja, o HRP diversifica de verdade. Jansen (2018) registra que, em testes do JPMorgan sobre vários universos de ações, o HRP produziu retornos ajustados ao risco e Sharpe iguais ou superiores à diversificação ingênua, aos portfólios de máxima diversificação e às carteiras de variância mínima global (GMV).
Quando o HRP ajuda (e quando o 1/N basta)
O HRP ajuda mais quando há muitos ativos, correlações altas e instáveis, e poucos dados de retorno em relação ao número de ativos — exatamente onde a inversão de matriz mais sofre. Em algotrading, é o caso típico de uma carteira de robôs correlacionados: dezenas de estratégias no mesmo símbolo ou em pares que co-movem, com histórico curto. Ali, a maldição de Markowitz morde forte e o HRP entrega a estrutura que a inversão destruiria.
Mas honestidade importa: quando o universo é pequeno e os ativos são pouco correlacionados, o 1/N (peso igual) costuma empatar ou bater qualquer otimização, e é imbatível em simplicidade e robustez. O HRP não promete retorno maior — promete risco mais bem distribuído e mais estável fora da amostra. Trate-o como ferramenta para domar correlação e cauda, não como gerador de alpha. E sempre valide em cenários de estresse e cauda: clustering protege contra concentração na média, não garante proteção num crash de correlação 1.
Há ainda três cuidados práticos que separam um HRP útil de um exercício de papel. Primeiro, a árvore depende da matriz de correlação estimada — se o histórico é curto ou contaminado por um regime específico, os clusters podem estar errados; rodar o HRP sobre janelas e checar a estabilidade dos agrupamentos vale o esforço. Segundo, a escolha do método de ligação (single-linkage, no paper original) e da métrica de distância afeta a árvore; variantes posteriores, como a de Raffinot (2016), usam outros critérios de clustering e podem agrupar de forma diferente. Terceiro, o HRP precisa de rebalanceamento, e cada rebalanceamento custa: como o método é mais estável que a inversão de matriz, os pesos tendem a mexer menos entre períodos — uma vantagem secundária que reduz custo de transação frente ao Markowitz, que reage a cada solavanco de estimativa.
Para quem opera dezenas de robôs, o caminho prático costuma ser: estimar a matriz de correlação dos retornos diários das estratégias, montar a árvore, ver se os clusters fazem sentido (robôs do mesmo par e mesma lógica deveriam cair juntos) e então deixar a bisseção recursiva repartir o capital. O resultado quase sempre é uma carteira menos concentrada do que a intuição entregaria à mão — e mais estável do que qualquer tentativa de otimizar pesos invertendo uma matriz de covariância estimada com histórico curto e ruidoso.
O HRP precisa inverter a matriz de covariância?
Não — essa é a sua principal vantagem. O HRP usa clustering hierárquico e bisseção recursiva, operações que só leem a matriz, nunca a invertem. Por isso ele funciona até sobre matrizes singulares ou mal-condicionadas, onde os otimizadores quadráticos (Markowitz/CLA) simplesmente falham ou explodem em pesos absurdos.
Qual a diferença entre HRP e risk parity tradicional?
A risk parity tradicional iguala a contribuição de risco entre ativos individuais, tratando todos no mesmo nível e ignorando a hierarquia. O HRP primeiro descobre os clusters de ativos parecidos (a árvore) e só então distribui risco galho a galho, tratando ativos correlacionados como complementos. Isso evita que vários ativos quase idênticos sequestrem o orçamento de risco.
O HRP rende mais que o Markowitz?
O HRP entrega menor variância e maior Sharpe fora da amostra, não necessariamente maior retorno bruto. López de Prado (2016) mostrou variância 72,47% menor que o CLA e Sharpe ~31,3% melhor em Monte Carlo. O ganho vem de estabilidade e diversificação, não de previsão de retorno — o HRP nem usa retornos esperados, só a estrutura de covariância.
Dá para usar HRP numa carteira de robôs de trading?
Sim, e é um dos casos onde mais brilha. Carteiras de robôs costumam ter muitas estratégias correlacionadas e histórico curto — terreno fértil para a maldição de Markowitz. O HRP agrupa robôs parecidos e impede que um cluster de estratégias quase idênticas domine a alocação, mantendo a diversificação efetiva mais alta que a inversão de matriz permitiria.
O HRP elimina o risco de cauda?
Não. O HRP reduz concentração e melhora a variância fora da amostra, mas clustering baseado em correlação histórica pode falhar num crash, quando as correlações convergem para 1. Combine o HRP com hedge de cauda explícito e teste de estresse; ele controla o risco médio melhor que a inversão de matriz, não a catástrofe rara.
Referências
- López de Prado, M. (2016). Building Diversified Portfolios that Outperform Out-of-Sample. Journal of Portfolio Management, 42(4), 59–69.
- Jansen, S. (2018). Hands-On Machine Learning for Algorithmic Trading (Cap. 5: Strategy Evaluation). Packt Publishing.
- DeMiguel, V.; Garlappi, L.; Uppal, R. (2009). Optimal Versus Naive Diversification: How Inefficient is the 1/N Portfolio Strategy? Review of Financial Studies, 22(5), 1915–1953.
- Raffinot, T. (2016). Hierarchical Clustering-Based Asset Allocation. Journal of Portfolio Management.
- Ledoit, O.; Wolf, M. (2003). Improved Estimation of the Covariance Matrix of Stock Returns. Journal of Empirical Finance.
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.
