Direto ao ponto. Rodei um walk-forward da metodologia inteira: escolher o portfólio numa era e medir o resultado dele na era seguinte, cinco vezes entre 2019 e 2026, com 300 portfólios sorteados do mesmo tamanho como comparação em cada rodada. Em 4 das 5 dobras o meu drawdown fora da janela de seleção ficou melhor que 75% a 100% dos sorteios, com percentil mediano 90. As duas construções de controle de risco que eu já tinha descartado voltam para perto do percentil 50, que é o número do acaso. E a folga que eu chutava em 1,5 saiu do teste medida em 1,75.
A pergunta que eu carrego desde o primeiro capítulo é se essa metodologia controla risco de verdade ou se ela apenas desenha um portfólio bonito em cima do passado que eu já conheço. O walk-forward respondeu com número. O controle de risco sobrevive fora da janela em que a seleção foi feita, em 4 das 5 dobras, com percentil mediano 90 contra portfólios sorteados do mesmo tamanho.
A resposta tem um limite. O que passou foi o risco. O retorno cru ficou no fundo do percentil em duas dobras. Continuo sem prova de que ganho mais que o acaso fora da amostra. O que ficou provado é outra coisa: eu perco bem menos por dólar de risco corrido.
O capítulo nove deixou o portfólio rodando em conta simulada. O capítulo anterior contou a auditoria que revirou o código que já estava no ar. Sobrou uma máquina de montar portfólio e uma régua de risco consertada, sem nenhuma medição feita fora da janela de dados em que os robôs foram escolhidos.
Tudo o que eu tinha até aqui era medido dentro da amostra
O termo é in-sample. A esteira escolhia os robôs olhando a janela de 2019 a 2026. E me devolvia a qualidade do portfólio medida naquela mesma janela de 2019 a 2026. Quem escolhe e mede no mesmo pedaço de história já viu o resultado antes de escolher. Dentro dessa janela o Sharpe do conjunto deu 6,07, e eu não levo esse número a sério nem por um minuto, porque a doutrina do projeto trata como honesto algo perto de 0,5 e todo o resto é efeito de eu ter garimpado muita estratégia até sobrarem as que passaram.
O caminho padrão para descontar esse excesso é o Deflated Sharpe Ratio. Ele corrige o Sharpe pelo número de tentativas até você chegar naquela estratégia. Não uso ele como veredito aqui. Não sei quantas tentativas foram. Há filtro em toda etapa do garimpo, e a contagem se perdeu no caminho. Então a deflação que decide virou o próprio walk-forward, que mede o excesso de ajuste direto no resultado, sem depender de eu saber quantas vezes tentei.
Como o teste foi montado, e por que o comparador é um sorteio
O desenho é o clássico de walk-forward, aplicado à metodologia inteira em vez de a um robô só. Seleciono com tudo o que existe até uma data de corte e congelo a escolha. Meço o que aquele portfólio fez no período seguinte, que a seleção nunca viu. Empurro o corte para frente. Repito. Foram cinco dobras entre 2019 e 2026. Cada uma usa toda a história disponível até o seu próprio corte.
Em cada dobra eu sorteio 300 portfólios do mesmo tamanho, tirados da mesma lista de robôs. O percentil que eu reporto é a posição do meu drawdown dentro dessa distribuição de 300. Percentil 50 é o acaso.
Comparo com sorteio da mesma lista em vez de um índice de fora, e isso resolve um problema que eu não tenho como remover. A lista carrega viés de sobrevivência, porque o Monte Carlo do gerador roda no período inteiro e quem explodiu em 2024 a 2026 nunca chegou a entrar nela. Só que o comparador nasce da mesma lista enviesada. O viés está dos dois lados da conta e some na comparação relativa. Fica sólida a posição no percentil. Fica otimista o valor em dólar.
Os critérios de aprovação foram escritos antes de a primeira dobra rodar, com nome, limiar e número. Isso se chama pré-registro (Nosek et al., 2018) e existe para tirar de mim a chance de olhar o resultado e depois inventar o critério que ele passa. Guarde essa frase. Ela volta duas seções abaixo e me custa caro.
O resultado: percentil 90 no risco, medido fora da janela
Em 4 das 5 dobras o drawdown do meu portfólio, medido no período que a seleção não viu, ficou melhor que 75% a 100% dos 300 sorteios daquela rodada. O percentil mediano das cinco é 90. Nas duas dobras mais recentes ele foi melhor que 100% dos sorteios. Nenhum dos 300 portfólios aleatórios daquelas rodadas caiu menos que o meu.
Duas construções anteriores minhas não sobrevivem a esse mesmo teste. No primeiro capítulo eu testei a ponderação de mínima variância. Ela distribui o capital de modo a minimizar a variância da carteira. Rendia 14% a mais fora da amostra. Cerca de metade desse ganho era concentração escondida em robôs que afundam juntos. Depois tentei impor um teto de cauda na hora do corte, barrando os pares de robôs que tinham afundado juntos dentro da amostra. O teste justo foi cruel. O portfólio capado ficou com a cauda pior que 92% dos sorteios do mesmo tamanho, medido no pedaço de dado que ele não viu.
A lição atravessa os dois casos. Selecionar para minimizar um risco medido dentro da amostra reintroduz esse mesmo risco fora dela, porque a estrutura fina de quem quebra junto é ruído que não persiste: a correlação de posto entre o coeficiente de cauda de um par de robôs numa metade do período e o mesmo par na outra metade deu 0,06.
A dobra que falhou foi 2022
Uma das cinco reprovou. Em 2022 o meu percentil de risco foi 35, quer dizer, dois terços dos sorteios aleatórios se saíram melhor que o portfólio que a minha metodologia escolheu. O ano foi o da alta violenta do dólar contra o mundo, com o banco central americano subindo juro na frente de todos os outros, e a seleção montada com dados de 2019 a 2021 não descreveu aquele mercado.
Isso é a assinatura de uma tese que o projeto repete desde o capítulo quatro. A vantagem de um conjunto de robôs é condicional ao regime que os gerou. Uma virada de regime derruba a seleção junto. É para esse cenário que existem o disjuntor de drawdown e a troca de robô, e o walk-forward acabou de dizer, com número, que a seleção sozinha não segura um chicote desses. Ela precisa do disjuntor atrás dela.
O retorno ficou no fundo do percentil, e o teste de retorno estava errado
Aqui vem a parte incômoda. Pelo piso de retorno que eu tinha pré-registrado, o portfólio fura. Os percentis de retorno das cinco dobras foram 13, 69, 33, 2 e 0. Nas duas dobras mais recentes, quase todo sorteio ganhou mais dinheiro que eu.
Coloquei os dois vetores lado a lado. Percentil de risco 90 contra retorno 13. Risco 100 contra retorno 2. Risco 100 contra retorno 0. Os dois números são quase espelhos um do outro, e isso é a troca entre risco e retorno aparecendo crua, porque quem minimiza drawdown entrega menos retorno bruto. Os sorteios que ganharam mais nas duas últimas dobras carregavam 2 a 3 vezes o meu drawdown, entre 771 e 1.296 dólares contra 458 a 602 dos meus.
Foi aí que eu troquei a métrica de julgamento pelo Calmar. Ele divide o retorno do período pelo maior drawdown do mesmo período.
\text{Calmar} = \dfrac{\text{retorno do período}}{\text{maior drawdown do período}}O numerador é quanto a carteira ganhou naquela dobra. O denominador é o pior tombo que ela levou na mesma dobra, medido do topo até o fundo. A razão responde quanto retorno cada dólar de risco comprou. Quem a popularizou foi Terry Young, em 1991, para comparar fundos com apetite de risco diferente. Escolhi o Calmar em vez do Sharpe porque o meu limite é medido em drawdown. O disjuntor dispara em queda acumulada, e volatilidade para cima nunca me tirou de uma posição.
Com o Calmar, o retrato inverte. O portfólio fica acima da mediana dos sorteios em 4 das 5 dobras, com percentil mediano 87, e nas duas dobras em que o retorno foi percentil 2 e 0 o Calmar foi percentil 99 e 100. Ele rendeu menos porque arriscou muito menos.
O veredito formal saiu indeterminado, e ele continua impresso no log
Lembra do pré-registro? O Calmar entrou depois. Eu vi a primeira rodada. Achei o critério de retorno estranho. E só então adicionei a métrica que me favorece. Métrica escolhida depois de ver o resultado não tem autoridade para mudar veredito pré-registrado, e essa regra existe exatamente para conter o que eu acabei de fazer. Então o veredito formal que saiu foi indeterminado. O critério de risco passou em 4 das 5 dobras. O critério de retorno, como estava escrito, furou.
O que eu fiz com isso foi o mínimo honesto. O critério de retorno estava mal especificado na origem, e dá para mostrar isso sem apelar ao resultado, porque exigir um piso de retorno absoluto contra sorteios do mesmo tamanho, num portfólio cujo mandato é minimizar drawdown, pune mecanicamente o comportamento que o outro critério premia. Os dois critérios que eu pré-registrei eram contraditórios entre si. Os percentis espelhados são a evidência disso.
Reescrevi o critério de retorno como um bloco datado, abaixo do original, sem apagar linha nenhuma. Ele passou a exigir retorno positivo em todas as dobras e Calmar acima da mediana dos sorteios em pelo menos 3 das 5. Os mesmos dados atendem aos dois pedidos, sem rodar nada de novo: os retornos das cinco dobras foram 4.887, 1.790, 1.463, 4.154 e 1.718 dólares, todos positivos, e o Calmar passou em 4 das 5. Sob o critério emendado, aprovado no risco. Sob o critério original, indeterminado. As duas frases ficam no log, na ordem em que aconteceram.
A folga que eu chutava era 1,5, e a medida deu 1,75
Esse teste entregou de brinde a única coisa que eu vinha chutando. Eu monto a carteira contra um teto de drawdown e aplico uma folga sobre o drawdown medido dentro da amostra, para cobrir o fato de que escolher os robôs olhando aquele período infla o que eu medi ali. A folga que eu usava era 1,5. Ela nunca teve conta atrás.
O teste dá a conta. Para cada dobra eu tenho o drawdown medido dentro da janela de seleção e o drawdown medido no período seguinte, e a razão entre os dois é a inflação que o viés de seleção provoca, isolada de qualquer outra causa. Deu 1,75 · 0,73 · 1,07 · 1,01 · 2,88. O percentil 75 desses cinco números é 1,75.
Um detalhe de método quase estragou essa medida. A primeira versão comparava os 6 meses de 2026 que ficaram fora da amostra com os 12 meses do último ano da seleção. Janela desigual dos dois lados. O drawdown cresce com o tempo de exposição, então comparar 6 meses contra 12 subestima a inflação, e subestimar folga é o erro que machuca. Igualando o comprimento das duas janelas, a dobra de 2026 saltou de 1,44 para 2,88, e o percentil 75 saiu de 1,44 para 1,75. O diff do log prova que só a folga mudou, porque risco, retorno e Calmar saíram idênticos byte a byte.
A conclusão é desconfortável. O 1,5 que eu vinha usando não cobre nem o viés de seleção sozinho, que pede 1,75. E o 1,75 é piso. A lista de robôs tem viés de sobrevivência, e numa lista sem esse viés a inflação real seria maior. O portfólio que subi para o simulado está com almofada menor do que precisa.
O que este teste não prova
Prefiro escrever os limites. O que foi medido aqui é risco. O critério de retorno original furou, e mesmo o emendado só diz que o retorno é positivo e eficiente por unidade de risco. Se a pergunta for se essa metodologia bate o mercado em retorno fora da amostra, a resposta continua indeterminada.
Cinco dobras é pouco, uma delas reprovou, e o percentil mediano 90 é a mediana de cinco números. E os valores absolutos em dólar são otimistas por causa do viés de sobrevivência da lista. Só a posição relativa contra o sorteio é limpa. Quando eu escrevo 458 dólares de drawdown, o número honesto é maior.
O que vem no próximo capítulo
A folga de 1,75 cobre o viés de escolher os robôs. Ela não cobre o buraco do fim de semana, quando o mercado reabre longe de onde parou e o stop simplesmente não existe naquele intervalo. Essa é a outra metade da conta de dimensionamento, aberta desde o começo do projeto por falta de dado. O dado apareceu. O próximo capítulo mede quanto um gap de fim de semana custa a uma carteira posicionada quase toda do mesmo lado do dólar, e conta a decisão que sai daí, que mexe no tamanho do portfólio ou no tamanho da conta.
Acompanhe a série para não perder. O diário continua.
Perguntas frequentes
O que é um walk-forward de portfólio?
É escolher o portfólio usando só os dados até uma data de corte e congelar essa escolha. Depois se mede o desempenho no período seguinte, que a seleção nunca viu. E o corte anda para frente. A diferença para o walk-forward clássico de Robert Pardo é que aqui o objeto testado é a metodologia de seleção inteira.
O teste prova que a metodologia rende mais?
Não. Ele prova controle de risco fora da amostra. O retorno cru ficou no fundo do percentil em duas dobras, e o critério de retorno como estava escrito reprovou. O que passa é retorno positivo em todas as dobras e eficiência por unidade de risco.
Por que o retorno ficou no fundo do percentil?
Porque a metodologia minimiza drawdown, e correr menos risco entrega menos retorno bruto. Nas duas dobras mais recentes, os sorteios que renderam mais carregavam 2 a 3 vezes o meu drawdown. Medido pelo Calmar, que divide retorno por drawdown, o mesmo portfólio aparece em percentil 99 e 100 nessas mesmas dobras.
O que significa a folga de 1,75?
Significa que o drawdown real fora da janela de seleção fica em torno de 1,75 vez o drawdown medido dentro dela, só por causa do viés de ter escolhido os robôs olhando aquele pedaço de história. É o percentil 75 das cinco razões medidas nas dobras. E é piso, porque a lista de origem tem viés de sobrevivência.
Referências
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies. 2ª edição, Wiley.
- Bailey, D. H.; Borwein, J. M.; López de Prado, M.; Zhu, Q. J. (2016). The Probability of Backtest Overfitting. SSRN 2326253, Journal of Computational Finance, 20(4), 39-69. Por que o desempenho medido dentro da amostra sobe com o número de tentativas.
- Young, T. W. (1991). Calmar Ratio: A Smoother Tool. Futures Magazine, outubro de 1991.
- Nosek, B. A.; Ebersole, C. R.; DeHaven, A. C.; Mellor, D. T. (2018). The preregistration revolution. PNAS, 115(11), 2600-2606. Por que escrever o critério antes de ver o resultado muda o que a evidência significa.
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.
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
