Auditoria adversarial independente — Germany XETRA Momentum
Datas: 2026-08-25/26 · Motor auditado: germany_final_locked.py + backtest.py partilhado · Duas auditorias independentes (a segunda sem confiar na primeira), mais a bateria completa re-corrida sobre a variante live (só empresas alemãs).
Método: reprodução exacta, reimplementação independente, forense de survivorship com verificação externa, placebos, stress de custos com spreads reais medidos, falsificação.
A. Veredicto executivo
Investiria em tamanho pequeno (sub-EUR 1-2M), tratando ~18-19%/0.9 como o número real — não os 26 anos de headline. O dataset EODHD para a XETRA não tem nenhuma história de preços a terminar antes de 2015: todos os delistings de 2000-2014 estão ausentes, incluindo o colapso inteiro do Neuer Markt (16 dos 18 cadáveres célebres procurados — EM.TV, Comroad, Brokat, CargoLifter, Holzmann, MobilCom… — não existem nos dados). O período 2000-2014 é uma amostra de sobreviventes e presume-se inflacionado.
A diferença crítica face a mercados que chumbaram esta auditoria (Indonésia): a janela limpa não colapsa. 2015-2026 standalone entrega o mesmo nível do headline, as convenções são conservadoras (cash a 0% nos meses defensivos; benchmark DAX é um índice de performance/total-return; rf=3% já dentro do Sharpe), os placebos falham como devem, e a cobertura de delistings foi verificada externamente: 54 delistings alemães documentados 2015-2026 cruzados com os dados — 49/54 (91%) presentes com a história a terminar no ano certo; os 5 em falta concentram-se todos em 2015-2017. Cobertura efectivamente completa de 2018 em diante.
Score de confiança: 85/100. Os 15 restantes: magnitude do survivorship pré-2015 inquantificável, spreads medidos num só dia, e o primeiro dado quase-live de 2026 é negativo.
B. Tabela de riscos
| # | Problema | Severidade | Impacto | Estado |
|---|---|---|---|---|
| 1 | Survivorship estrutural pré-2015 (zero mortes no dataset antes de 2015; Neuer Markt ausente) | CRÍTICA | 2000-2014 inquantificável; mitigante: 2015-26 ≈ headline | Irresolúvel com estes dados; janela limpa verificada |
| 2 | Capacidade/custos: ADV mediano ~€0.4M; spreads reais IBKR medidos para o universo inteiro (283 nomes): mediana 35bps, cauda até 245bps | ALTA | 100bps→18.1%/0.82; 200bps→14.4%/0.62; filtro de elegibilidade a spread real ≤30bps→17.9%/0.84 | Sub-EUR-2M ok; não escala |
| 3 | Selecção in-sample da config (grelha conjunta; Alemanha escolhida de pesquisa multi-mercado) | ALTA | Winner's curse; mitigado por plateau (Sharpe sobe monotonicamente MA50→MA200; N=20 domina N=5-15 em tudo) | Mitigado, não eliminado |
| 4 | Linhas duplicadas da mesma empresa detidas em simultâneo (230 ticker-meses; Vestas em peso duplo 40 meses) | MÉDIA | Corrigir melhora: 20.7%/0.96 | Quantificado; sem direcção anti-conservadora |
| 5 | Exclusão US incompleta (464 tickers sem ISIN escondiam 8 nomes US detidos, 1.9% dos ticker-meses) | BAIXA | Remover melhora: 20.7%/0.96 | Quantificado |
| 6 | Convenção "morte = dinheiro de volta" (34 posições com preço de venda desaparecido recebem 0%) | MÉDIA | Se fossem -50/-100%: ~-0.25 a -0.5pp CAGR | Estimado |
| 7 | 2021-2026 é o período mais fraco (variante live: Sharpe 0.43; 2023 falhou +20% do DAX — momentum crash pós-bear, não resolúvel por regime: nenhuma das 18 variantes de regime testadas o recupera) | MÉDIA | Expectativa recente 10-16%/0.4-0.8 | Estrutural do momentum; a vigiar live |
C. Resultados auditados
C.1 Config do relatório (com estrangeiras não-US) — reproduzida a 10-16
| Variante | CAGR | Sharpe | MaxDD |
|---|---|---|---|
| Original (locked) | +20.41% | 0.945 | -28.2% |
| Reimplementação independente (convenções próprias) | +19.46% | 0.904 | -26.8% |
| Cash rende rf=3% nos meses defensivos | +21.54% | 1.011 | -28.0% |
| Custos 100 / 200 bps | 18.1 / 14.4% | 0.82 / 0.62 | — |
| Sem regime (sempre investido) | +19.96% | 0.758 | -52.3% |
| 2015-2026 standalone (janela com mortes no dataset) | +19.58% | 0.96 | -28.2% |
| DAX TR no mesmo período (alpha +15.4pp) | +5.03% | 0.10 | -68.3% |
| Placebo invertido (bottom-20) | +3.83% | 0.04 | -48.3% |
| Placebo aleatório ×30 (mesma pipeline) | 4.6% [0.9–8.8] | 0.13 [máx 0.47] | — |
| Placebo sinal +1 mês | +17.88% | 0.83 | -23.0% |
| Top-5 contribuidores removidos | +18.38% | 0.84 | -28.3% |
C.2 Variante LIVE (só empresas alemãs) — bateria re-corrida
O sinal em produção corre um universo restrito a empresas de domicílio alemão (ver secção E). Números próprios, auditados com a mesma bateria:
| Variante (DE-only) | CAGR | Sharpe | MaxDD |
|---|---|---|---|
| Baseline — reimpl. independente (motor: 19.16/0.911) | +19.00% | 0.899 | -27.8% |
| 2015-2026 standalone | +18.62% | 0.92 | -27.8% |
| 2021-2026 (pior subperíodo) | +10.60% | 0.43 | -27.8% |
| Placebo invertido | +1.11% | -0.11 | -52.5% |
| Placebo aleatório ×15 | 5.0% [0.2–7.4] | 0.15 [máx 0.34] | — |
| Top-5 contribuidores removidos (SZG, ADL, EVD, AIXA, RHM) | +17.28% | 0.81 | -28.6% |
| N=5 / N=10 / N=15 (N=20 domina em tudo) | 10.8 / 19.1 / 18.0% | 0.27 / 0.72 / 0.79 | -60 / -39 / -33% |
22 de 27 anos com excesso positivo sobre o DAX; protecção real nas crises (2002: 0% vs -44%; 2008: -16% vs -40%; 2018: -1% vs -18%). Pior ano relativo: 2023 (-3.5% vs DAX +20%) — momentum crash pós-bear clássico, comum a todas as variantes de regime testadas (MAs 50-250, histerese entrada/saída, cruzamentos, bandas).
D. Verificação externa do survivorship (o teste decisivo)
54 delistings alemães documentados 2015-2026 — de Wirecard, Audi e Osram a small-caps como Aves One, Stemmer Imaging, USU, EQS — cruzados com as datas de fim de história de preços no dataset:
- 49/54 (91%) presentes, com a história a terminar no ano certo (±1) — incluindo Wincor sob "Diebold Nixdorf AG"; 2 aparentes falhas eram erros da data esperada, não do dataset (Biotest e MeVis ficaram listadas mais tempo).
- 5 genuinamente ausentes, todos 2015-2017: Sky Deutschland, GAGFAH, Postbank, DVB Bank, McKesson Europe/Celesio.
- Conclusão: cobertura de delistings completa de 2018 em diante, parcial 2015-2017, zero antes — exactamente por isso a janela 2015+/2018+ é a fiável, e é ela que sustenta o veredicto.
E. A saga do sinal live (v1 → v3) e o bug das linhas dormentes
A construção do sinal de produção encontrou uma classe de bug de dados nova, documentada aqui porque afecta qualquer estratégia live em bolsas com cross-listings:
- v1: universo
is_primary(só listagens primárias) — excluía as ~250 estrangeiras não-US que o backtest do relatório mantinha. - v2: universo alargado a todas as não-US para casar com o backtest — e o
Perf.Ydo TradingView encheu o top-20 de retornos fictícios (+300% a +1100%: Trane, Chubb, Danske, KBC…) vindos de linhas XETR dormentes/recém-reactivadas com 46-233 dias de cotações reais: o "preço de há 12 meses" era um print velho de anos, não um preço de mercado. Overlap medido entre o ranking TradingView e um ranking Yahoo dividend-adjusted com exigência de 12 meses de história real: 1/20. O backtest é imune por construção (sem preço há 12 meses → momentum NaN → inelegível). - v3 (live actual): universo só de empresas alemãs — listagens primárias vivas, onde as duas fontes concordam 19/20 (única divergência: convenções de ajuste de um spin-off). TradingView voltou a ser a autoridade do ranking; o Yahoo ficou como diagnóstico diário publicado na página (overlap dos dois top-20, tabela comparativa). Custo da troca: ~1.2pp de CAGR de backtest (19.2 vs 20.4) pela integridade estrutural dos dados.
Validação cruzada do mesmo diagnóstico noutros mercados live (dia 1): EUA 7/7 de overlap entre fontes, Canadá 8/10 — universos de listagens primárias concordam; o problema é exclusivo das linhas convidadas.
F. Custos reais medidos e diversificação
Spreads bid/ask reais (IBKR, medidos live para o universo elegível inteiro, 283 nomes cotados): mediana 35bps, média 80bps; carteira detida: mediana 22bps com cauda a 118/245bps. A hipótese de 40bps do backtest é realista em tamanho pequeno; ordens limitadas obrigatórias nos nomes finos.
Correlação com as outras estratégias live (mensal, 2006-2026): 0.21 com Canadá, 0.29 com EUA — e 26% dos meses têm regimes divergentes com o Canadá (uma perna em cash enquanto a outra rende, +3.8%/mês do Canadá quando a Alemanha dorme). Equal-weight 1/3 Alemanha+Canadá+EUA: CAGR 27.0%, Sharpe 1.54, MaxDD -15.2% — contra Sharpe standalone de 0.88/1.27/0.92.
G. O que continua incerto
- Magnitude do survivorship 2000-2014 — inquantificável; os anos dourados 2003-2006 devem ler-se com desconto.
- Spreads medidos num só dia; profundidade e impacto de mercado não medidos.
- mcap histórico usa adjusted_close (subestima o mcap de pagadores de dividendos no passado); robustez ao corte de percentil testada, nível não fiável.
- 2026 YTD da variante live: -1.9% (a variante larga estava -15% — as estrangeiras eram a dor deste ano). Primeiro ano quase-live, a vigiar.
H. Próximas auditorias mais valiosas
- Paper-trading com a regra congelada — comparar fills reais vs fechos do backtest; único teste que nenhum histórico falsifica.
- Dedup por empresa + passe nominal anti-US nos sem-ISIN + morte a -50% no motor — três correcções baratas, efeito líquido esperado ≈ 0 a +0.3pp, eliminam três objecções.
- Cruzar 2015-2017 com a lista completa da Deutsche Börse para fechar a janela parcial.
Artefactos: ~/eodhd_data/audit2_de/ (scripts, posições, preços de execução, baterias de regime e placebos). Página do sinal live: /germany-momentum · Relatório da estratégia: germany_momentum_report · Sensibilidade: germany_momentum_sensitivity.