Machine learning transformou visão computacional e linguagem. Em trading, ele entrega resultados espetaculares no backtest e decepcionantes ao vivo com uma frequência alarmante. Entender por quê é mais útil do que aprender mais um algoritmo — porque o problema raramente está no modelo, e quase sempre na natureza dos dados e na forma como você os validou.
A crença: mais dados + modelo poderoso = edge
A intuição vem de domínios onde o ML brilha — reconhecer um gato numa foto, traduzir uma frase — em que há sinal forte, dados praticamente ilimitados e regras estáveis. A suposição é que finanças é igual: “dados não faltam, e modelos modernos são poderosos”. O problema é que quase nenhuma dessas três condições vale nos mercados. Israel, Kelly e Moskowitz, em Can Machines “Learn” Finance? (vencedor do prêmio Harry M. Markowitz de 2020), colocam o dedo na ferida: o ML em finanças enfrenta um conjunto de desafios que difere radicalmente dos domínios onde ele venceu — sobretudo a razão sinal-ruído baixíssima dos retornos e a quantidade de dados que só parece grande.
As seis armadilhas que quebram o ML ao vivo
A maior parte dos fracassos cabe em seis categorias. As quatro primeiras são propriedades do mercado; as duas últimas são erros de processo — e justamente por isso evitáveis.
1. Vazamento de dados (look-ahead / leakage)
É a armadilha número um — e a mais sutil. Acontece quando informação do futuro entra no treino sem você perceber. Os clássicos: usar o preço de fechamento de um dia para “prever” o próprio dia; normalizar (z-score, min-max) com média e desvio calculados sobre todo o período, incluindo o que ainda não aconteceu; ou montar o label com uma janela que se sobrepõe à janela das features. O efeito é uma acurácia inflada que evapora ao vivo. Pior: em séries temporais financeiras, observações vizinhas são autocorrelacionadas — o rótulo de hoje “sabe” um pouco do amanhã. Por isso López de Prado, em Advances in Financial Machine Learning (2018), insiste que a validação cruzada padrão “viola a regra de não treinar no futuro” e propõe purging (remover do treino as observações que se sobrepõem ao teste) e embargo (abrir um intervalo de segurança entre treino e teste).
2. Baixa razão sinal-ruído
Em finanças, o sinal é minúsculo perto do ruído. Um R² de 1% num modelo de retorno mensal já é economicamente relevante — algo impensável em visão computacional. Com um sinal tão tênue, um modelo flexível faz o que foi treinado para fazer: encontra estrutura. Só que, quando quase tudo é ruído, a estrutura encontrada é o ruído. Daí a contradição que confunde iniciantes: aumentar a capacidade do modelo (mais camadas, mais árvores, mais features) piora o desempenho fora da amostra, porque dá mais liberdade para memorizar o que não se repete.
3. Poucos dados independentes e não-estacionariedade
“Tenho 20 anos de dados de 1 minuto, são milhões de barras.” Não são milhões de observações independentes. O que importa para inferência é o número de eventos não sobrepostos e independentes — e regimes de mercado duram meses ou anos. Vinte anos de dados diários são poucas centenas de ciclos econômicos distintos. Israel-Kelly-Moskowitz lembram que, para classes de ativos, dados mensais rendem apenas algumas centenas de pontos. E, pior que serem poucos, eles são não-estacionários: a distribuição que gerou o passado não é a que gera o futuro. A relação que o modelo aprendeu muda — e muda porque foi descoberta (ver armadilha 6).
4. Features sem economia nem causalidade
Jogar 500 indicadores num gradient boosting e deixar o modelo “escolher” é o caminho mais rápido para o overfitting. Sem uma hipótese econômica ex-ante de por que aquela feature carrega informação sobre o retorno futuro, qualquer correlação encontrada é candidata a espúria. Arnott, Harvey e Markowitz, em A Backtesting Protocol in the Era of Machine Learning (2019), fazem disso a primeira regra: comece por uma ideia com fundamento econômico anterior ao teste, não por uma mineração cega. Causalidade não é luxo acadêmico — é o que separa um edge que persiste de um padrão que existia só naquela amostra.
5. Custos e capacidade ignorados
Modelos de ML costumam gerar sinais de alta rotatividade — exatamente onde spread, slippage e impacto de mercado mais corroem. Um backtest sem custos realistas mede um produto que não existe. Pior: estratégias de alta frequência têm capacidade limitada; o que parece lucrativo com 0,01 lote some quando o tamanho cresce. Antes de comemorar a curva, desconte o que vimos sobre slippage e custos de execução.
6. Regime shift e adaptação do mercado
O mercado é um sistema adaptativo: outros agentes reagem ao seu edge. Quando um padrão é descoberto e explorado, ele é arbitrado e decai. Isso fecha o ciclo da não-estacionariedade — o próprio ato de operar o sinal acelera sua morte. ML para detecção de regime pode ajudar a medir a mudança, mas nenhum modelo treinado num regime sobrevive intacto à transição para outro.
Por que mercados são o pior caso para o ML
Reúna os ingredientes: dados não-estacionários, um sistema adaptativo, baixa razão sinal-ruído e amostras efetivamente pequenas. É quase o oposto das condições em que o deep learning prospera. Como alertou Longmore (Robot Wealth), o ML torna trivial gerar uma equity curve linda — então uma curva bonita produzida por ML é bandeira vermelha, não verde. É a mesma doença do Sharpe inflado por múltiplos testes, turbinada: o ML explora milhões de combinações de hiperparâmetros e features implicitamente, num único fit.
É aqui que entra a matemática mais desconfortável do tema. O Teorema da Estratégia Falsa (Bailey & López de Prado, 2018) mostra que, ao testar muitas variações independentes de uma estratégia sem skill nenhum, o melhor Sharpe esperado cresce só por sorte. Com N tentativas independentes e variância dos Sharpes estimados V, o máximo esperado é aproximadamente:
E\left[\max_n \widehat{SR}_n\right] \approx \sqrt{V}\left[(1-\gamma)\,\Phi^{-1}\!\left(1-\tfrac{1}{N}\right) + \gamma\,\Phi^{-1}\!\left(1-\tfrac{1}{N e}\right)\right]
onde \Phi^{-1} é a inversa da normal padrão e \gamma \approx 0{,}5772 é a constante de Euler-Mascheroni. A leitura prática: o resultado é ilimitado à direita — com tentativas suficientes, sempre existe um Sharpe alto o bastante para parecer real sem nenhum edge por trás. Como um modelo de ML embute um número gigantesco de tentativas, ele é uma máquina de produzir falsos positivos se você não corrigir por isso.
O erro de validação que arruína tudo: k-fold em série temporal
Mesmo quem desconfia do overfitting tropeça aqui. O k-fold cross-validation padrão embaralha as observações e usa pedaços do futuro para validar o passado — uma forma estrutural de vazamento. Em séries temporais financeiras, isso infla qualquer métrica. As correções de López de Prado:
- Purged K-Fold + embargo: remove do treino o que se sobrepõe ao teste (purging) e adiciona um intervalo morto entre eles (embargo), eliminando o vazamento por autocorrelação.
- CPCV (Combinatorial Purged Cross-Validation): em vez de um único caminho passado→futuro, gera múltiplos caminhos OOS combinando blocos, produzindo uma distribuição de desempenho fora da amostra em vez de um número solitário. É a base estatística da Probabilidade de Overfitting do Backtest (PBO).
- Triple-barrier & meta-labeling: rotular cada evento por três barreiras (stop, alvo, expiração) em vez de “subiu/desceu” no horizonte fixo; e usar um segundo modelo binário que decide se apostar (não a direção), separando o problema de “achar o sinal” do de “dimensionar a aposta”.
| Armadilha | Defesa |
|---|---|
| Vazamento / look-ahead | Purging + embargo; normalização só com dados passados |
| k-fold em série temporal | CPCV / walk-forward; nunca embaralhar o tempo |
| Muitas tentativas (Sharpe inflado) | Sharpe deflacionado (DSR) + PBO; contar os trials |
| Features sem economia | Hipótese econômica ex-ante; parcimônia de features |
| Custos / capacidade | Spread + slippage + impacto no backtest; testar por tamanho |
| Regime shift / adaptação | Walk-forward contínuo; monitorar degradação OOS por cluster |
As defesas que de fato funcionam
Nenhuma técnica isolada salva um modelo sem edge. O que funciona é uma esteira em camadas, na ordem certa:
- Mecanismo primeiro. Antes de qualquer
fit, escreva por que esse edge deveria existir (Arnott-Harvey-Markowitz). Sem isso, todo o resto é p-hacking sofisticado. - Validação que respeita o tempo. Walk-forward e CPCV com purga e embargo — nunca k-fold cego.
- Deflacionar pelo número de tentativas. Reporte o Sharpe deflacionado e a PBO. O haircut do Sharpe por múltiplos testes é não-linear (Harvey & Liu): Sharpes altos cortam pouco, marginais cortam muito — nunca use um desconto fixo de 50%.
- Intervalos de confiança, não pontos. Bootstrap de bloco estacionário sobre a métrica final; selecione pelo limite inferior do intervalo, que penaliza a incerteza de amostra curta.
- Parcimônia. Menos features, menos profundidade, regularização forte. Em sinal-ruído baixo, o modelo simples quase sempre generaliza melhor.
- Custos reais e teste por capacidade antes de comemorar qualquer curva.
O veredito: onde o ML ajuda de verdade
ML não é inútil em trading — é mal-empregado. Ele agrega valor em tarefas auxiliares, não como caçador autônomo de alpha:
- Engenharia de features e detecção de regime.
- Processamento de linguagem (classificar notícias, como vimos em análise de sentimento).
- Execução e modelagem de custos.
- Copiloto de pesquisa — o tema do artigo sobre LLMs na descoberta de estratégias.
E sempre com validação rigorosa: walk-forward, CPCV/PBO, custos reais e — antes de tudo — um mecanismo econômico que explique o edge. Vale tudo o que se aplica a qualidade de dados: lixo entra, lixo sai, agora com uma camada de verniz estatístico por cima. E vale a disciplina geral de teste de robustez que separa edge de coincidência.
Perguntas frequentes
Machine learning não serve para trading?
Serve — mas para tarefas auxiliares (features, regime, NLP, execução), não como gerador autônomo de sinais. A expectativa de “jogar dados e colher alpha” é que falha. Como ferramenta dentro de um processo disciplinado, com mecanismo econômico e validação que respeite o tempo, o ML agrega valor real.
Qual a armadilha de ML mais comum em finanças?
O vazamento de dados (leakage) — usar informação do futuro no treino sem perceber. É sutil (normalização global, features mal alinhadas no tempo, k-fold que embaralha a série) e infla a acurácia de forma que evapora ao vivo. Logo atrás vêm a não-estacionariedade e o overfitting por excesso de tentativas.
Por que k-fold cross-validation é perigoso em séries temporais?
Porque ele embaralha as observações e treina com pedaços do futuro para validar o passado — uma forma estrutural de look-ahead. Como retornos vizinhos são autocorrelacionados, o teste “enxerga” o treino. A correção é purging (remover sobreposições) + embargo (intervalo morto) e, idealmente, CPCV, que respeita a flecha do tempo e ainda entrega uma distribuição OOS em vez de um número único.
Como saber se meu modelo de ML está overfitando?
Sinais clássicos: acurácia/Sharpe altíssimos no treino que caem muito na validação; desempenho concentrado em poucos períodos; sensibilidade extrema a pequenas mudanças de parâmetro ou de janela. Quantifique com o PBO e o Sharpe deflacionado, e desconfie por princípio de qualquer curva “boa demais”.
Deep learning ou gradient boosting é melhor para o mercado?
A questão erra o alvo: nenhum modelo compensa baixa razão sinal-ruído, dados não-estacionários e ausência de mecanismo. Em sinal-ruído baixo, modelos mais simples e mais regularizados costumam generalizar melhor; árvores com boosting (LightGBM, XGBoost, CatBoost) são populares em finanças tabular por lidarem bem com poucas features e ruído, mas só se você controlar o número de tentativas e validar com purga. Capacidade extra de modelo, sem dados e sem economia, só acelera o overfitting.
Referências
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. (Purging/embargo, CPCV, triple-barrier, meta-labeling.)
- Israel, R., Kelly, B. T. & Moskowitz, T. J. (2020). Can Machines “Learn” Finance? Journal of Investment Management. SSRN 3624052. (Prêmio Harry M. Markowitz 2020.)
- Arnott, R., Harvey, C. R. & Markowitz, H. (2019). A Backtesting Protocol in the Era of Machine Learning. The Journal of Financial Data Science 1(1). SSRN 3275654.
- Bailey, D. H. & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. SSRN 2460551.
- Bailey, D. H. & López de Prado, M. (2018). The False Strategy Theorem. SSRN 3221798.
- Longmore (Robot Wealth). Brave New Backtest / More of the Disease, Faster.
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.
