Revisão de pesquisa · ensembles & feature importance · estudo 09
Ensembles & Feature Importance
Em 40 instrumentos de cripto, ações e câmbio, o bagging generaliza ~4,8× melhor que o boosting, e ainda assim não produz edge operável
López de Prado faz três afirmações nítidas e testáveis sobre machine learning em dados financeiros: o bagging generaliza melhor que o boosting em rótulos ruidosos e sobrepostos; a importância MDI medida in-sample tem viés de substituição, enquanto a MDA out-of-sample não tem; e um classificador deve ser ajustado por uma perda probabilística, não pela acurácia. Este estudo submete as três a um teste multimercado, integralmente custeado e com controle de vazamento em 40 instrumentos, 27 perpétuos de cripto, 5 ETFs de ações dos EUA e 8 majors de câmbio, com purged cross-validation e um filtro de Deflated Sharpe. As três se replicam de forma limpa. Nenhuma delas compra um edge operável.
Advances in Financial ML, Cap. 6 & 8
López de Prado (2018) · ensembles & feature importance
Código & dados
lopez-de-prado-work-review / projects / 09
the claim
O que diz López de Prado
- O bagging generaliza melhor que o boosting em dados financeiros: os rótulos são ruidosos e serialmente sobrepostos, então o boosting persegue esse ruído reponderando casos difíceis (muitas vezes mal rotulados) e sofre overfit, ao passo que o bagging faz a média de árvores descorrelacionadas e é mais robusto.
- A importância de feature MDI tem viés, é in-sample e mecanicamente inflada para features correlacionadas (o efeito de substituição); use a MDA out-of-sample baseada em permutação e agrupe (cluster) features correlacionadas, permutando clusters inteiros para remover o artefato. Ajuste classificadores por uma perda probabilística (log-loss), não pela acurácia.
our result
O que encontramos
- As três afirmações se replicam de forma limpa em 40 instrumentos de três mercados: o gap de generalização IS→OOS do bagging é ~5× menor que o do boosting (100% dos instrumentos, p=1,8e-12, o boosting literalmente leva o log-loss OOS para além do cara-ou-coroa); a MDA é essencialmente livre de viés (ρ 0,07 vs MDI 0,49); e ajustar por log-loss supera ajustar por acurácia (p=8,3e-6).
- Dois refinamentos honestos: neste conjunto de 10 features, a clustered-MDA compra estabilidade de seleção, não des-enviesamento (a MDA sozinha é a ferramenta de des-enviesamento), e o conjunto de features selecionado é apenas marginalmente mais estável que o aleatório.
- O veredito honesto: 0 de 40 instrumentos superam o DSR > 0,95. Generalizar melhor é necessário, mas não suficiente, para haver edge, esta é uma vitória metodológica limpa, com zero alfa operável.
O resultado em três linhas
40 instrumentos · 3 mercados
O bagging generaliza ~4,8× melhor que o boosting
Construído da forma canônica, um RandomForest mantém seu gap de log-loss do in-sample ao out-of-sample ~4,8× mais apertado que o HistGradientBoosting, e faz isso em 100% dos 40 instrumentos (Wilcoxon p = 1,8e-12). O boosting leva o log-loss in-sample a ~0,25 ao memorizar os rótulos ruidosos e sobrepostos, e paga por isso com um log-loss out-of-sample além do cara-ou-coroa (ln2 ≈ 0,693). A primeira prescrição se confirma sem ambiguidade.
MDI ρ 0,49 · MDA ρ 0,07
A MDI tem viés de substituição; a MDA não
A importância da Mean-Decrease-Impurity é correlacionada (em rank) com o quanto uma feature é correlacionada com as demais (ρ ≈ 0,49), o artefato de substituição. A medida de permutação out-of-sample, a MDA pontuada por log-loss, não mostra praticamente nada disso (ρ ≈ 0,07; menor que a MDI em 88% dos instrumentos, p = 1,2e-6). Várias features favorecidas pela MDI recebem MDA negativa, permutá-las melhora o log-loss out-of-sample. A reviravolta: a clustered-MDA compra estabilidade de seleção, não des-enviesamento, neste conjunto de 10 features.
0 / 40 superam DSR > 0,95
Generalizar melhor não é edge
O veredito honesto. Nenhum dos ensembles produz um Deflated Sharpe Ratio perto da barra publicável de 0,95 em qualquer dos 40 instrumentos, o Sharpe mediano por aposta é negativo para ambos, e o bagging vence o duelo de generalização de forma decisiva, mas não vence em nada o duelo de DSR (p pareado = 0,74). Uma replicação metodológica limpa com resultado de edge nulo; essa separação é justamente o ponto.
Afirmação 1, bagging vs boosting, em 40 instrumentos
O boosting memoriza o conjunto de treino e depois paga por isso out-of-sample
A primeira prescrição se confirma sem ambiguidade. Um RandomForest construído da forma canônica mantém seu gap de log-loss do in-sample ao out-of-sample cerca de 4,8× mais apertado que o HistGradientBoosting, e faz isso em 100% dos 40 instrumentos nos três mercados (Wilcoxon pareado p = 1,8e-12).
O mecanismo é exatamente o do livro-texto. Nos dois mercados genuinamente ruidosos, cripto e câmbio, a capacidade extra do boosting é gasta ajustando os rótulos ruidosos e serialmente sobrepostos: seu log-loss in-sample desaba para ~0,25, muito abaixo do teto do cara-ou-coroa, mas seu log-loss out-of-sample é pior que um cara-ou-coroa (~0,81 > ln2 ≈ 0,693). A floresta com bagging nunca memoriza, mantém o in-sample em ~0,57 e o out-of-sample em ~0,68, ficando no nível ou abaixo do cara-ou-coroa fora da amostra. As ações ficam baixas para ambos os modelos por outra razão: um rótulo com classes desbalanceadas (taxa-base ~0,17) que a floresta consegue prever trivialmente in-sample.
gap IS→OOS do bagging
0.114
RandomForest, ajustado por NLL
gap IS→OOS do boosting
0.539
HistGradientBoosting
razão dos gaps
4.8×
boosting sofre mais overfit
RF < HGB
100%
dos 40 instrumentos
Wilcoxon pareado
1.8e-12
valor-p
DSR > 0,95
0 / 40
qualquer dos ensembles
| mercado | RF IS | RF OOS | HGB IS | HGB OOS |
|---|---|---|---|---|
| Cripto27 perpétuos | 0.569 | 0.680 | 0.255 | 0.809 |
| Ações5 ETFs | 0.134 | 0.557 | 0.153 | 0.659 |
| Câmbio8 majors | 0.569 | 0.677 | 0.277 | 0.808 |
Log-loss mediano por mercado, ajustado por NLL. O log-loss out-of-sample do boosting ultrapassa o cara-ou-coroa (ln2 ≈ 0,693) em cripto e câmbio, pior que um cara-ou-coroa. O do bagging permanece no nível ou abaixo dele em toda parte.
Explore o overfit
O mesmo efeito, um instrumento ou um mercado por vez. Cada número é o resultado real do painel por instrumento, ajustado por NLL, purged-CV, custeado.
Escolha um mercado para ver a mediana do seu painel, ou aprofunde em um único instrumento. O gráfico à esquerda contrasta o log-loss in-sample e out-of-sample da floresta com bagging e das árvores com boosting, contra a linha do cara-ou-coroa; o gráfico à direita mostra o viés de substituição das três medidas de importância. A barra in-sample do boosting fica muito abaixo do cara-ou-coroa, ele memorizou os rótulos, enquanto sua barra out-of-sample tipicamente o ultrapassa.
Demo, explorador de overfit bagging vs boosting
O boosting leva o log-loss in-sample para muito abaixo do cara-ou-coroa (ele memoriza o conjunto de treino), mas seu log-loss out-of-sample o ultrapassa. A floresta com bagging mantém in-sample e out-of-sample próximos. Painel à direita: só a importância da MDA é livre de viés de substituição.
Cripto: mediana sobre 27 instrumentos. O log-loss in-sample do boosting é 0.255 (bem abaixo do cara-ou-coroa ln2 ≈ 0,693, ele memorizou os rótulos), mas seu log-loss out-of-sample é 0.808, além do cara-ou-coroa. A floresta com bagging mantém o in-sample em 0.569 e o out-of-sample em 0.680, um gap 4.9× menor. Viés de substituição ρ(importância, |corr|): MDI 0.491, MDA 0.115, clustered-MDA 0.552, só a MDA fica perto de zero.
O painel se reproduziu de forma bit-idêntica entre execuções (random_state = 0 em tudo, BLAS/OMP fixados em uma thread por processo). Os hot loops fora do sklearn, o sorteio do sequential-bootstrap e a contagem de coeventos / unicidade média dos rótulos, são compilados por JIT e verificados como bit-idênticos contra referências em Python puro.
Afirmação 2, a MDI tem viés, a MDA não
A Mean-Decrease-Impurity é calculada in-sample e é mecanicamente inflada para features correlacionadas: a importância de um método acaba correlacionada (em rank) com o quanto cada feature é correlacionada com as demais (ρ ≈ 0,49, máxima no câmbio em 0,67). O bloco de momentum e o bloco de volatilidade dividem o crédito de impureza e inflam um ao outro. A medida de permutação out-of-sample, a MDA pontuada por log-loss, praticamente não mostra nada disso (ρ ≈ 0,07; menor que a MDI em 88% dos instrumentos, p = 1,2e-6). De modo marcante, várias features que a MDI classifica como importantes ganham MDA negativa: permutá-las melhora o log-loss out-of-sample, ou seja, o modelo estava se apoiando demais no ruído. A MDI as mantém; a MDA as sinaliza como prejudiciais.
A reviravolta honesta é que a clustered-MDA não remove o viés neste conjunto de features. Com apenas 10 features colapsando em ~5 clusters, as features correlacionadas caem no mesmo cluster, então a permutação de cluster inteiro ainda atribui grande importância a esse cluster correlacionado, e reexpandi-lo de volta às features reintroduz a associação com |corr| (ρ ≈ 0,52, estatisticamente indistinguível da MDI, p = 0,22). O que o clustering de fato compra é estabilidade de seleção: colapsar substitutos eleva o Jaccard do top-3 entre os caminhos CPCV de 0,26 (da MDA) para 0,46 (p = 1,8e-12). A própria seleção da MDA está genuinamente acima da baseline aleatória (0,20) em 98% dos instrumentos, mas só marginalmente estável, não se deve superinterpretar “as features do topo” nesta tarefa.
| método | viés ρ | estabilidade | nota |
|---|---|---|---|
| MDI | 0.485 | 0.582 | baseline in-sample, com viés |
| MDA | 0.073 | 0.263 | permutação out-of-sample, sem viés |
| clustered-MDA | 0.517 | 0.463 | estabilidade, não des-enviesamento |
| random baseline | , | 0.201 | 3 de 10 features ao acaso |
Mediana sobre o painel de 40 instrumentos. O viés ρ é a correlação de Spearman entre a importância de um método e a |correlação| média de cada feature; a estabilidade é o Jaccard médio do top-3 entre os 15 caminhos CPCV. A lição: com um conjunto de features pequeno e moderadamente correlacionado, a MDA, e não a clustered-MDA, é a ferramenta de des-enviesamento; o clustering importa mais quando há muitas features fortemente correlacionadas a absorver.
A correção, medida do jeito certo
Pontue a importância por cluster, não por feature
O painel anterior media a clustered-MDA do jeito que ela costuma ser mal usada, agrupar features correlacionadas em clusters e depois expandir os escores de volta para cada feature. Feito assim, ela ainda acompanha a |corr|. Mas não é para isso que serve a clustered feature importance de López de Prado. A correção é ler o escore no nível do cluster: agrupar features correlacionadas, permutar ou somar o bloco inteiro e nunca reatribuir aos membros. Na mesma tarefa de triple-barrier do BTCUSDT, 351 eventos, 10 features colapsando em 6 clusters por linkage Ward sobre 1−|ρ|, é exatamente isso que cura o efeito de substituição.
O bloco correlacionado de momentum/side (C1: side, mom6, mom12, rsi) parece apenas moderado por feature, seu melhor membro isolado ganha MDI flat de 0,148. Pontuado como um único cluster, ele é o driver dominante isolado, em 0,385, cerca de 2,6× o seu melhor membro: o crédito de impureza que o efeito de substituição vinha dividindo em quatro é reunido. A des-diluição é concreta, o Gini do vetor de importância sobe de 0,205 (flat) para 0,337 (clusterizado). E o ranking no nível do cluster é bem mais estável entre os folds purgados: a estabilidade da clustered-MDA é de ~0,30 contra ~0,12 flat, cerca de 2,5×, então o clustering funciona no eixo para o qual foi feito.
| cluster | MDI clusterizado | MDI do melhor membro | MDA clusterizado |
|---|---|---|---|
| C1 | 0.385 | 0.148 | 0.074 |
| C5 | 0.213 | 0.113 | 0.032 |
| C2 | 0.153 | 0.153 | 0.024 |
| C3 | 0.094 | 0.094 | 0.004 |
| C4 | 0.086 | 0.086 | 0.009 |
| C6 | 0.069 | 0.069 | -0.000 |
Importância no nível do cluster, BTCUSDT (RF ajustada por neg-log-loss, CV purgada). O MDI clusterizado soma a impureza dentro do cluster; o MDA clusterizado permuta o bloco inteiro. Para clusters unitários (C2–C4, C6) o escore do cluster é igual ao seu único membro. O efeito de substituição só aparece onde um cluster reúne várias features correlacionadas (C1, C5): aí o escore do cluster supera o de seu melhor membro, reunindo o crédito dividido. O C1 é o driver dominante isolado, em 0,385, cerca de 2,6× sua melhor feature individual.
Afirmação 3, ajuste por log-loss, não por acurácia
O controle metodológico atravessa todo o estudo: cada modelo é ajustado tanto por log-loss negativa quanto por acurácia. Ajustar por log-loss produz um gap de overfit significativamente menor (média agrupada 0,331 vs 0,421, Wilcoxon p = 8,3e-6), e o efeito se mantém por modelo para ambas as famílias (RF p = 4,4e-4, HGB p = 1,3e-4). Os dois objetivos escolhem a mesma configuração apenas ~60% das vezes para o RF e ~52% para o HGB, ou seja, em cerca de metade dos instrumentos a escolha da métrica troca o modelo selecionado, e quando troca, a escolha por log-loss generaliza melhor.
…e ainda assim, sem edge (a parte honesta)
Esta é a nuance que as prescrições não cobrem: generalizar melhor é necessário, mas não suficiente, para haver edge. Nesta tarefa de meta-rotulação por cruzamento de EMA, nenhum dos ensembles produz um Deflated Sharpe Ratio perto da barra de 0,95, o Sharpe mediano por aposta é negativo para ambos, e uma vez que o Sharpe é deflacionado contra a busca em grade agrupada, o DSR colapsa para ~0. O bagging vence o duelo de generalização de forma decisiva e o de DSR em nada (p pareado = 0,74). Em todos os 40 instrumentos, 0 superam claramente o DSR > 0,95; o único quase-acerto é o USDJPY (DSR HGB 0,92), seguido do EURUSD (DSR RF 0,56), ambos câmbio, onde a tarefa custeada é menos adversarial. Uma replicação metodológica limpa com resultado de edge nulo, e essa separação é exatamente a contribuição.
Método
- Uma tarefa estrutural fixa, um cruzamento primário de EMA(20/60) define o lado; uma tripla barreira (take-profit 1,5σ, stop 1,0σ, max-hold 50 barras, σ = volatilidade EWMA causal) varrida no OHLC intrabar completo dá o desfecho; o meta-rótulo é y = 1[P&L líquido > 0] após custo realista de ida e volta. Dez features causais (side, vol, ma_gap, mom3/6/12, rsi, vol_ratio, ofi, range_atr). Este é um estudo de modelo/importância, não uma varredura de rótulos.
- Dois ensembles, construídos fielmente: o bagging é um RandomForest à maneira do AFML, max_features baixo para descorrelacionar as árvores, folhas regularizadas sob ponderação, sample-weights por unicidade de rótulo e max_samples igual à unicidade média de rótulo (o análogo do sequential-bootstrap). O boosting é o HistGradientBoosting sobre uma pequena grade de iterações, taxa de aprendizado, nós-folha e L2.
- Toda a validação cruzada é purged k-fold com embargo, com o span de cada rótulo mapeado do espaço de barras para o espaço de eventos, de modo que linhas de treino que se sobrepõem a um fold de teste são descartadas. A estabilidade da importância é medida entre os caminhos CPCV (C(6,2) = 15 caminhos).
- Cada modelo é hiperajustado duas vezes, por log-loss negativa (a manchete, AFML 9.4) e por acurácia (controle), para comparar os gaps de overfit resultantes. A P(lucro) purged out-of-fold dimensiona cada aposta; o P&L custeado alimenta uma série de retornos por barra cujo Sharpe é deflacionado contra a dispersão da grade agrupada RF+HGB.
- Importância de três formas: MDI a partir de um único ajuste em toda a amostra (a baseline in-sample com viés), MDA como permutação purged out-of-fold pontuada por log-loss e clustered-MDA permutando clusters de correlação inteiros. O viés de substituição é o ρ de Spearman entre a importância de um método e a |correlação| média de cada feature; a estabilidade de seleção é o Jaccard médio pareado do top-3 entre os caminhos CPCV contra uma baseline de seleção aleatória.
- Barras orientadas por informação em todo o estudo, dollar bars para cripto e ações, count bars para câmbio, com custos não nulos em toda aposta (cripto: flat 7 bp/lado; ações e câmbio: meio-spread causal por horário do dia mais comissão/swap, ≈1–2 bp/lado). Dois ETFs (XLF, XLV) foram descartados por um piso mínimo de classe orientado por dados, não à mão.
Notas & limitações
O estudo separa deliberadamente “generaliza melhor / menos enviesado” (que se replicam) de “edge” (que não aparece), e o veredito honesto, 0/40 acima da barra de 0,95, é a integridade do trabalho. As ações são a perna mais fraca: suas apostas por cruzamento de EMA superam o limiar de custo-e-barreira apenas ~17–23% das vezes, então seu baixo log-loss in-sample é em parte um artefato de desbalanceamento de classes, e dois ETFs reprovaram de imediato num piso mínimo de classe. O max_samples do RandomForest é igualado à unicidade média de rótulo como um análogo de primeira ordem do verdadeiro sequential bootstrap (fiel à intenção, não ao procedimento exato). A contagem de tentativas do Deflated Sharpe é modesta, 14 configurações, então a deflação é, no máximo, generosa , e o DSR ainda é ~0.
Reprodutibilidade
Toda feature e todo rótulo usam apenas dados até a barra atual; toda aposta é líquida de um custo realista por lado; todo fold é purged e com embargo. O harness, seus autotestes e o painel multimercado completo estão reunidos no projeto 09 de lopez-de-prado-work-review. O explorador desta página é autocontido: os números do painel por instrumento estão codificados no componente, de modo que o mecanismo que ele ilustra se reproduz exatamente a cada carregamento.
Como citar
Referências
As fontes primárias das prescrições aqui revisadas:
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. (Cap.6 ensembles, Cap.8 feature importance, Cap.9 ajuste de hiperparâmetros.)
- López de Prado, M. (2020). Machine Learning for Asset Managers. Cambridge University Press. (Cap.6 importância de features por clustering.)
- Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality. Journal of Portfolio Management, 40(5).
Ver também
O aparato de testes múltiplos do qual depende o filtro de Deflated Sharpe deste estudo é revisado em Backtest Overfitting & the Deflated Sharpe Ratio; o tema da disciplina de seleção é desenvolvido em O edge está no processo; e o conjunto mais amplo de trabalhos está em Pesquisa.

