Estudo de caso · Financial Analytics · Séries temporais

Dá para prever o mercado?
O retorno, quase nunca. O risco, sim.

Seis ações da B3, oito anos e meio de pregões e um teste honesto: a carteira "ótima" de Markowitz é escolhida só com dados até 2023 e depois enfrenta 2024 a 2026 sem nenhum retoque. O retorno prometido evapora. A previsão de risco do GARCH, não.

vencedora oculta0,70Sharpe fora da amostra da carteira mínima variância
25,8% a.a. em 2024-2026, a "sem graça" que venceu
0,71 → -0,07Sharpe da carteira max Sharpe: treino → teste
a estrela do passado nem bateu o CDI no futuro
Kupiec aprovado25 / 626violações do VaR 95% vs 31 esperadas
o risco previsto pelo GARCH segurou o tranco real

2.113 pregões (jan/2018 a jul/2026, Yahoo Finance, proventos reinvestidos) · treino: 1.486 pregões até dez/2023 · teste: 626 pregões jamais usados na otimização · taxa livre de risco: CDI diário real do BCB · todos os números desta página saem dos artefatos gerados por src/analysis.py.

01 · O problema

Retornos não são bem-comportados

Finanças quantitativas começam com uma má notícia: retornos diários têm caudas gordas (extremos acontecem muito mais do que a curva normal admite) e a variância muda com o tempo, formando períodos calmos e períodos nervosos. Ignorar isso quebra tudo que vem depois: precificação de risco, tamanho de posição, VaR.

25,5
curtose em excesso da PETR4: a normal prevê 0. Um dia de -29,7% "não deveria existir", e existiu (mar/2020)
6 de 6
ações rejeitam homocedasticidade no teste de Ljung-Box sobre retornos ao quadrado (p < 0,001): volatilidade vem em cachos
4 de 6
ações pedem modelo assimétrico (EGARCH ou GJR): queda de preço agita o mercado mais que alta do mesmo tamanho
0,34-0,53
correlações entre os pares de ações: baixas o bastante para diversificação valer a pena de verdade
Heterocedasticidade condicional, o nome do fenômeno: a variância de hoje depende do que aconteceu ontem. Um choque grande é seguido por dias agitados; a calmaria também se agrupa. É exatamente essa estrutura que a família ARCH/GARCH (Engle 1982, Nobel 2003; Bollerslev 1986) transforma em previsão.

🎯 Teste sua intuição de mercado

Três perguntas que este estudo responde com dados. Escolha e veja se o mercado concorda com você.

A bolsa despencou ontem. O que esperar da volatilidade de hoje?
Não estamos perguntando a direção do preço, e sim o tamanho típico da oscilação.
✅ Maior. Volatilidade forma cachos: choque de ontem contamina hoje. E mais: nos nossos dados, 4 de 6 ações mostram efeito alavancagem, quedas agitam mais que altas do mesmo tamanho. É por isso que o grid de modelos inclui EGARCH e GJR-GARCH, que tratam retornos negativos de forma assimétrica.
Uma carteira foi otimizada para o máximo Sharpe usando 2018-2023. Quem rendeu mais de 2024 a 2026?
Sharpe: retorno em excesso do CDI por unidade de risco.
✅ A mínima variância, com folga: Sharpe 0,70 e 25,8% a.a., contra -0,07 da max Sharpe (que nem bateu o CDI). Otimizar médias históricas embute o erro de estimação dos retornos esperados; minimizar variância depende só das covariâncias, que são muito mais estáveis. A seção 05 mostra isso em detalhe.
O VaR 95% de 1 dia da carteira é cerca de 2,3%. O que isso promete?
VaR: Value at Risk, a fronteira de perda usada por bancos e fundos.
✅ 1 em 20. O VaR 95% é um limite que deve ser violado em ~5% dos dias; o teste é se as violações batem com a promessa. Nos 626 pregões de teste esperávamos ~31 furos e vieram 25, dentro da margem estatística (Kupiec, p=0,23). Um VaR sem violação nenhuma seria conservador demais, e caro.
A moral do quiz: intuição boa em finanças é saber o que é previsível. A direção do preço é quase ruído; a agitação ao redor dela tem memória e estrutura. Este projeto explora exatamente essa assimetria.
02 · Os dados

Seis ações, oito anos e meio, um split temporal sagrado

Carteira de 6 papéis líquidos de setores diferentes: PETR4 (petróleo), ITUB4 (bancos), AXIA3 (energia), RENT3 (aluguel de carros), TIMS3 (telecom) e EMBJ3 (aeronáutica). Preços ajustados por proventos, de jan/2018 a jul/2026. E a regra de ouro herdada do machine learning: tudo que decide pesos e parâmetros enxerga só até dez/2023; 2024-2026 fica trancado para o teste.

R$ 100 em 2018 viraram quanto?

Preços em base 100 com proventos reinvestidos, semanais. Escala logarítmica: cada linha de grade dobra o valor, então inclinações iguais significam retornos percentuais iguais.

PETR4ITUB4AXIA3RENT3TIMS3EMBJ3IBOV
50100200400800201820192020202120222023202420252026PETR4 895EMBJ3 421AXIA3 386TIMS3 288ITUB4 279RENT3 234

O COVID (mar/2020) derrubou tudo de uma vez, RENT3 e EMBJ3 perderam ~70% em semanas. Dali em diante os destinos divergem: PETR4 multiplicou por quase 9 com dividendos, RENT3 anda de lado até hoje. É essa dispersão que a otimização de carteira tenta explorar, e é nela que mora a armadilha da seção 05.

🪤 Dados do mundo real mordem: entre a análise original (2024) e esta atualização, dois tickers simplesmente deixaram de existir. A Eletrobras virou Axia Energia (ELET3 → AXIA3) e a Embraer migrou de EMBR3 para EMBJ3. Um pipeline que baixa dados por código de ativo precisa sobreviver a empresas que mudam de nome, um lembrete de que reprodutibilidade em finanças inclui monitorar o próprio identificador do dado.

⚖️ Split temporal, não aleatório

Em séries temporais, embaralhar dados vaza o futuro para dentro do treino. Aqui o corte é uma data: 1.486 pregões de treino (2018-2023), 626 de teste (2024-2026). Nenhum parâmetro, peso ou hiperparâmetro enxerga o teste.

💰 CDI de verdade

Sharpe precisa de taxa livre de risco. Em vez de um número fixo, o pipeline baixa o CDI diário do BCB (série SGS 12): 7,48% a.a. médios no treino, 12,97% a.a. no teste. Régua alta: em 2024-2026, renda fixa pagou muito.

🔬 Retorno certo para cada uso

Retornos simples para agregar carteira (média ponderada exata) e log-retornos para o GARCH (aditivos no tempo). A análise original somava log-retornos ponderados, uma aproximação que este pipeline corrige.

03 · Modelando a volatilidade

GARCH: transformar nervosismo em número

Para cada ação, um grid de 48 especificações disputa por BIC: famílias GARCH, GJR-GARCH e EGARCH (as duas últimas capturam o efeito alavancagem), ordens (p,q) até 2, e quatro distribuições para os choques. O diagnóstico exige resíduos padronizados sem estrutura (Ljung-Box).

AçãoModelo vencedor (BIC)DistribuiçãoPersistênciaMeia-vida do choqueVol prevista (1 dia à frente, anualizada)
PETR4EGARCH(1,1)Student-t0,97629 dias24,9%
ITUB4GARCH(1,1)Student-t0,98545 dias21,1%
AXIA3EGARCH(1,1)Student-t0,98964 dias28,6%
RENT3GJR-GARCH(1,1)Student-t0,95214 dias32,9%
TIMS3GARCH(1,1)Student-t0,94312 dias28,4%
EMBJ3EGARCH(2,1)Student-t0,99177 dias40,7%

Três leituras: a Student-t venceu nas 6 (caudas gordas não são opcionais); modelos assimétricos venceram em 4 de 6 (efeito alavancagem); persistência entre 0,94 e 0,99 significa que um choque leva de 12 a 77 pregões para perder metade do efeito. Honestidade estatística: nos resíduos da PETR4 sobra estrutura (Ljung-Box p=0,005 nos quadrados), petróleo é difícil mesmo; nas demais o diagnóstico passa.

A volatilidade da carteira tem biografia

Volatilidade condicional anualizada da carteira otimizada, estimada por EGARCH(1,1)-t, médias semanais.

0%50%100%201820192020202120222023202420252026COVID: 139%2022: 39%

O eixo conta a história macro: pânico do COVID levou a vol da carteira a 139% a.a. (mar/2020), a eleição de 2022 aparece como um degrau de 39%, e 2024-2026 roda na faixa de 20-25%. É essa memória longa que o GARCH converte em previsão de risco do dia seguinte, e que a seção 06 põe à prova.

Por que Student-t?

Com curtose de 5,7 a 25,5, choques "impossíveis" para a normal são rotina. A t estimada engorda as caudas e evita que o modelo trate crise como erro de medição.

Por que EGARCH/GJR?

Nos dois, retorno negativo pesa mais na variância de amanhã que retorno positivo igual. É o efeito alavancagem, marca registrada de ações, e os dados escolheram esses modelos sozinhos, via BIC.

Vol prevista < vol média

Hoje, a previsão 1 passo à frente (21% a 41% a.a.) roda abaixo da vol incondicional de cada papel: o mercado de meados de 2026 está mais calmo que a média da era 2018-2026, e o modelo sabe disso.

04 · A promessa de Markowitz

A fronteira eficiente, calculada de verdade

Com médias e covariâncias do treino, a otimização (SLSQP, sem venda a descoberto, teto de 35% por papel) encontra as carteiras que nenhuma combinação aleatória domina. A análise original sorteava 5.000 carteiras e escolhia a melhor; aqui o sorteio vira só a nuvem de fundo, e o otimizador acha a fronteira exata.

Risco vs retorno na janela de treino (2018-2023)

Nuvem: 600 carteiras aleatórias. Curva preta: fronteira eficiente exata. Reta tracejada: linha do mercado de capitais partindo do CDI (7,5% a.a.). Formas pretas: as três carteiras que vão para o teste.

10%20%30%40%30%35%40%45%50%risco (volatilidade anualizada)PETR4: vol 46,4%, retorno 42,0% a.a. (treino)PETR4ITUB4: vol 32,4%, retorno 13,0% a.a. (treino)ITUB4AXIA3: vol 51,9%, retorno 30,0% a.a. (treino)AXIA3RENT3: vol 45,1%, retorno 29,9% a.a. (treino)RENT3TIMS3: vol 31,1%, retorno 15,2% a.a. (treino)TIMS3EMBJ3: vol 49,0%, retorno 13,6% a.a. (treino)EMBJ3Max Sharpe: vol 35,2%, retorno 32,4% a.a., Sharpe 0,71 (treino)Max SharpeMin Variância: vol 27,2%, retorno 18,3% a.a., Sharpe 0,40 (treino)Min VariânciaCarteira inicial: vol 30,6%, retorno 23,5% a.a., Sharpe 0,52 (treino)Carteira inicial

Repare que a nuvem aleatória nem encosta na fronteira: com 6 ativos, o acaso raramente produz uma carteira eficiente, e a distância cresce com mais ativos. O triângulo (max Sharpe) toca a reta tracejada: é a carteira tangente, "a melhor do passado". Guarde essa frase.

O que cada carteira comprou

Pesos por papel. A max Sharpe abraça os campeões do treino; a mínima variância abraça os estáveis; a inicial é a alocação ingênua do estudo original.

Max Sharpe · ret. esperado 32,4% · vol 35,2% (treino)
ITUB4 e EMBJ3: 0%. Concentra nos maiores retornos passados, teto de 35% ativado duas vezes.
Mínima variância · ret. esperado 18,3% · vol 27,2% (treino)
Ignora retornos: só covariâncias. Prefere os papéis de menor beta e menor vol (ITUB4, TIMS3).
Carteira inicial · ret. esperado 23,5% · vol 30,6% (treino)
Quase 1/N: a alocação "sem opinião" do estudo original de 2024. Spoiler: ela se defende muito bem.

Risco sistemático: beta de cada papel vs IBOV

Regressão dos retornos diários contra o índice (2018-2026). A linha marca β = 1, o próprio mercado.

PETR4R² 0,50
β 1,27
AXIA3R² 0,43
β 1,30
RENT3R² 0,48
β 1,29
EMBJ3R² 0,24
β 0,99
ITUB4R² 0,59
β 0,97
TIMS3R² 0,29
β 0,70

A mínima variância carregou justamente os betas baixos (TIMS3 0,70 e ITUB4 0,97): beta da carteira min var fica perto de 0,85, contra ~1,26 da max Sharpe. Metade da história de 2024-2026 está aqui: quem dependia menos do mercado sofreu menos quando a régua do CDI subiu.

05 · A prova real

Fora da amostra, a carteira "ótima" tropeça

Os pesos congelam em 31/12/2023. Daí em diante, cada carteira só coleta o que o mercado der. É o equivalente financeiro do conjunto de teste em ML, e o resultado desmonta a intuição de que otimizar o passado garante o futuro.

R$ 1 investido em 2018: treino à esquerda, veredito à direita

Riqueza acumulada (proventos reinvestidos, rebalanceamento diário, sem custos). A faixa azul-clara é o período de teste: pesos fixados antes de ela começar.

Max SharpeMínima variânciaCarteira inicialIBOV
0x2x4x6x201820192020202120222023202420252026treino (define os pesos)teste (avalia sem retocar)Max Sharpe 5,8xCarteira inicial 5,2xMin Variância 4,2xIBOV 2,2x

No treino, a max Sharpe (azul) esmaga: 4,66x contra 2,36x da min var. Na faixa de teste os papéis se invertem: a min var avança +77% e a max Sharpe, +24%. A inicial (quase 1/N) cresce +73% e o IBOV, +30%. A vantagem "ótima" era, em boa parte, ajuste fino ao passado.

2024-2026 (teste)Max SharpeMín. variânciaCarteira inicialIBOVCDI
Retorno anualizado8,9%25,8%24,7%11,1%13,0%
Volatilidade anualizada20,8%17,7%18,0%15,2%~0%
Sharpe (vs CDI)-0,070,700,64-0,030,00
Máx. drawdown-20,5%-17,7%-18,0%-15,3%*0%
Pior dia-5,1%-3,6%-4,0%-4,3%·
Sharpe no treino (2018-23)0,710,410,530,210,00

* O IBOV tem o menor drawdown por ser o mais diversificado, mas rendeu menos que o CDI no período. Leitura completa: só as carteiras com Sharpe positivo criaram valor acima da renda fixa em 2024-2026, e nenhuma delas é a max Sharpe.

📐 Por que a estrela cai?

Máximo Sharpe depende de retornos esperados estimados por médias históricas, e médias de 6 anos têm erro enorme. O otimizador amplifica exatamente esse erro: compra o que subiu por sorte. Covariâncias, base da min var, são ordens de grandeza mais estáveis.

🌀 Reversão setorial

PETR4 e RENT3 (70% da max Sharpe) vinham do melhor ciclo da década: petróleo caro e juro baixo. Em 2024-2026 o ciclo virou: juro alto puniu RENT3 e segurou PETR4, e os "sem graça" ITUB4 e TIMS3 lideraram.

🧪 O paralelo com ML

É overfitting em versão financeira: desempenho de treino não é promessa de teste. A diferença é que em finanças o "dataset novo" custa dinheiro de verdade, por isso a validação temporal precisa vir antes da alocação.

⚠️ O que a comparação original escondia: o notebook de 2024 otimizava os pesos em 2018-2024 e media o retorno acumulado no mesmo período: 155% da carteira otimizada contra 69% da inicial. O número era verdadeiro e a conclusão, inevitavelmente otimista: dentro da amostra, a carteira escolhida pelo máximo é campeã por construção. Bastou separar as janelas para o ranking inverter. Nenhum backtest sem essa separação deveria orientar dinheiro real.
06 · Onde o modelo entrega

VaR: a previsão de risco que sobreviveu ao teste

Se prever retorno é quase impossível, prever risco não é. O EGARCH(1,1)-t da carteira, com parâmetros congelados em 2023, gera a cada dia do teste uma fronteira de perda: o VaR 95% de 1 dia. A pergunta de auditoria: a realidade respeitou a fronteira na frequência prometida?

626 pregões sem retocar o modelo

Cinza: retorno diário da carteira max Sharpe em 2024-2026. Azul: fronteira de perda (-VaR 95%) prevista na véspera. Pontos vermelhos: as violações, dias em que a perda furou a previsão.

retorno diário-VaR 95% (previsto na véspera)● violação (25 em 626)
-6%-4%-2%0%2%4%202420252026violação: retorno -1,8% abaixo do VaR do diaviolação: retorno -2,3% abaixo do VaR do diaviolação: retorno -2,9% abaixo do VaR do diaviolação: retorno -2,2% abaixo do VaR do diaviolação: retorno -2,8% abaixo do VaR do diaviolação: retorno -2,0% abaixo do VaR do diaviolação: retorno -2,0% abaixo do VaR do diaviolação: retorno -5,1% abaixo do VaR do diaviolação: retorno -2,2% abaixo do VaR do diaviolação: retorno -2,8% abaixo do VaR do diaviolação: retorno -3,7% abaixo do VaR do diaviolação: retorno -3,3% abaixo do VaR do diaviolação: retorno -2,6% abaixo do VaR do diaviolação: retorno -3,2% abaixo do VaR do diaviolação: retorno -2,3% abaixo do VaR do diaviolação: retorno -1,6% abaixo do VaR do diaviolação: retorno -5,2% abaixo do VaR do diaviolação: retorno -3,9% abaixo do VaR do diaviolação: retorno -4,6% abaixo do VaR do diaviolação: retorno -3,2% abaixo do VaR do diaviolação: retorno -3,2% abaixo do VaR do diaviolação: retorno -2,7% abaixo do VaR do diaviolação: retorno -1,9% abaixo do VaR do diaviolação: retorno -3,6% abaixo do VaR do diaviolação: retorno -4,1% abaixo do VaR do diafronteira de perda: -VaR 95%

A fronteira azul respira com o mercado: aperta nos períodos calmos (perto de -2%) e abre nos nervosos (até -4,0%, em maio/2026). É isso que um limite de risco estático não faz, e é por isso que mesas de risco usam VaR condicional, não desvio-padrão histórico.

25 vs 31 esperadas
violações do VaR 95%: 4,0% observado contra 5% prometido. Teste de Kupiec: LR 1,43, p = 0,23, cobertura compatível com a promessa
5 vs 6,3 esperadas
violações do VaR 99%: 0,8% observado contra 1% prometido. Kupiec: LR 0,28, p = 0,60. As caudas da Student-t seguraram até os extremos
2,3%
VaR 95% médio do período: em um dia típico de 2024-2026, a carteira "reservava" 2,3% como perda plausível de 1 dia, com o limite diário variando de ~1,5% a 4,0%
Para que isso serve na prática? O VaR condicional dimensiona posição, margem e alavancagem: se a mesa tolera perder no máximo R$ 23 mil num dia "normal de 95%", pode operar R$ 1 milhão desta carteira. E como o teste foi out-of-sample com parâmetros congelados, o número tem lastro: não é o modelo se elogiando dentro da amostra.
07 · Conclusões

O que fica quando o hype passa

Um resumo executivo da disputa entre as carteiras, e as lições de modelagem que valem para qualquer série temporal.

CritérioMax SharpeMín. variânciaCarteira inicial (1/N)
O que usa do passadomédias + covariânciassó covariânciasnada
Sensível a erro de estimaçãomuito (amplifica)poucozero
Sharpe treino → teste0,71 → -0,070,41 → 0,700,53 → 0,64
Concentração2 papéis = 70%2 papéis = 70%, nos defensivosmáx. 20%
Quando faz sentidocom views robustas de retorno (ex.: Black-Litterman, shrinkage)quase sempre: é o "piso de risco" da fronteiracomo baseline obrigatório

🎓 O que este estudo ensina

  1. Volatilidade é previsível; retorno esperado, quase nada.

    O mesmo dataset que aprovou o VaR-GARCH no Kupiec reprovou a carteira otimizada por médias históricas. Modele o que tem estrutura (a variância) e seja humilde com o que não tem (a média).

  2. Backtest sem split temporal é marketing, não evidência.

    Dentro da amostra, a carteira de máximo Sharpe vence por construção. A conclusão só virou conhecimento quando 2024-2026 ficou trancado fora da otimização, a mesma disciplina de treino/teste do machine learning.

  3. Otimizadores amplificam erro de estimação.

    Maximizar uma função de médias ruidosas seleciona exatamente o ruído mais favorável (o "vencedor por sorte"). Minimizar variância usa momentos mais estáveis, e por isso a min var e a 1/N são tão difíceis de bater fora da amostra.

  4. Caudas gordas não são detalhe.

    A Student-t venceu a normal nas 6 ações e nos dois modelos de carteira. Com curtose de até 25, dimensionar risco pela normal subestima exatamente os dias que quebram gestoras.

  5. Quedas assustam mais que altas animam.

    O efeito alavancagem (EGARCH/GJR em 4 de 6 papéis) é mensurável e melhora a previsão de vol. Um GARCH simétrico ignora a assimetria emocional do mercado.

  6. Reprodutibilidade inclui os dados.

    Dois tickers mudaram de nome no meio do caminho (ELET3 → AXIA3, EMBR3 → EMBJ3), o CDI virou insumo diário e o pregão parcial de hoje precisa ser descartado. Pipeline de finanças se escreve para o dado que muda embaixo de você.

Reproduza em casa: python src/analysis.py refaz tudo (dados, grid GARCH, otimização, backtest, VaR) e grava os artefatos; python src/build_charts.py --splice regenera os gráficos desta página. O notebook original de 2024 (avaliação do PADS/Insper) segue no repositório como ponto de partida histórico.