Classificação setorial — 10 macro-setores
A B3 tem centenas de empresas e o cadastro da CVM as classifica em 70 setores
de atividade (SETOR_ATIV) — granular e ruidoso demais para comparar setores,
e cheio de rótulos como "Emp. Adm. Part. - Energia Elétrica" (holdings) e
"Securitização de Recebíveis" (veículos). Para os rankings e a visão por setor,
dobramos esses 70 em 10 macro-setores padrão (linha GICS/B3):
Financeiro · Petróleo e Gás · Materiais Básicos · Bens Industriais · Consumo Cíclico · Consumo não-Cíclico · Utilidade Pública · Saúde · Tecnologia e Comunicação · Holdings/Diversificado.
Como (auditável): o mapeamento é por palavra-chave sobre o SETOR_ATIV
do cadastro (robusto às abreviações que a CVM usa), com regra explícita e ordem
definida — a primeira que casa vence. Está aberto em dados_b3/setores.py. Cada
empresa carrega o setor de origem, então dá para conferir a classificação uma a
uma.
Regras de curadoria declaradas: - Holdings de setor-fim ("Emp. Adm. Part. - Energia Elétrica") caem no setor-fim (Energia → Utilidade Pública). Só as "Sem Setor Principal" viram Holdings/Diversificado. - Construção Civil entra em Consumo Cíclico (segue a B3: incorporadoras são consumo cíclico), não num setor imobiliário à parte. - Petroquímicos entram em Materiais Básicos (químicos), separados de Petróleo e Gás (exploração e produção).
Setor que aparecer no cadastro e não casar nenhuma regra fica sem classificação de propósito — a ausência reprova o teste de cobertura, em vez de cair num balde errado em silêncio. É a mesma disciplina do resto do banco: número (ou rótulo) que não passou fica de fora, não é chutado.
Índice setorial de retorno total (a "corrida dos setores")
Este índice foi retirado do ar e reconstruído em 15/08/2026. O que estava publicado antes dessa data estava errado. A seção "O erro de 15/08/2026", no fim desta página, conta o que aconteceu, por que os testes não pegaram e o que passou a existir para não acontecer de novo. Está aqui de propósito: um produto que promete auditabilidade tem de deixar o próprio erro auditável.
Para cada macro-setor, um índice semanal base 100, ponderado por valor de mercado e com dividendos reinvestidos (retorno total — não o preço puro, que subestima setor de dividendo alto).
- Semana = último pregão de cada semana ISO. A série começa na primeira semana com cobertura real e vai até hoje; a janela (1 / 3 / 5 anos / máximo) é escolhida na página.
"Cobertura real" tem dois pisos, e os dois foram aprendidos errando. O primeiro é do mercado: ao menos 30 empresas com preço e peso na semana. O segundo é de cada setor: ao menos 3 empresas — e ele vale para toda a série, não só para o começo, porque uma média de duas empresas não é setor.
Por que a série não começa em 2010, embora haja preço desde 2010: o peso é o valor de mercado, que exige DFP publicada + preço + nº de ações. Antes de ~2021 o conjunto completo não existe para gente suficiente. Uma versão anterior desta página estendia a série até 2010 assim mesmo, e o resultado foram 364 das 865 semanas paradas em exatamente 100,0: semana sem nenhum membro devolvia fator 1,0, ausência de dado virava "o mercado não andou", e o índice depois "corria atrás" em saltos. O acumulado que saía dali era ficção. Preferimos uma série mais curta e verdadeira a uma longa e torta — e um invariante agora reprova a publicação se qualquer semana vier congelada. - Fator semanal do setor = média dos retornos totais das ações do setor, ponderada pelo market cap. Entram só os membros com preço na semana e na anterior (ação que abriu capital depois entra quando listou — não encurta o setor). - Retorno total da ação na semana = (preço_fim × multiplicador de evento societário + proventos com data-com na semana, da classe do ticker principal, sem flag) ÷ preço_início.
O multiplicador é o conserto do erro de 15/08/2026. O COTAHIST publica o
preço como negociado, sem ajuste retroativo: num desdobramento 1:4 o preço cai
75% num pregão e o acionista não perdeu nada. Ingerimos a série de
desdobramentos, grupamentos e bonificações da B3
(GetListedSupplementCompany) e conferimos cada evento contra a queda de
preço observada no próprio COTAHIST. São três desfechos, e todos ficam
gravados:
| desfecho | o que fazemos |
|---|---|
| o multiplicador declarado explica a queda observada | aplica |
| evento pequeno demais para o preço distinguir de um pregão comum (bonificação de ~10%) | aplica, marcado como declarado pela fonte, não confirmado por nós |
| a fonte declara e o preço contradiz | não aplica e não ignora: a ação sai do cálculo naquela semana |
Eventos do mesmo dia se compõem antes do veredito (a B3 registra "desdobra 100x e agrupa 0,01x" como duas linhas — juntas dão 1,0). E quando a B3 omite um evento, uma segunda fonte independente o encontra: a quantidade de ações declarada no balanço. Sozinha ela não serve (não distingue grupamento de emissão de ações), mas exigindo que as duas concordem — a quantidade mudou por um fator e o preço deu o salto inverso num único pregão — ela achou 13 eventos que não estavam no cadastro da B3, entre eles os grupamentos de OIBR3 e SEQL3, que sozinhos valiam saltos de +669% e +1.779% numa semana. - Peso = market_cap anual (o mesmo já usado nos múltiplos, com a escala corrigida), do ano ≤ o da semana. - "Mercado (B3)" = o mesmo cálculo sobre TODAS as empresas cobertas. NÃO é o Ibovespa oficial — não usamos a série do índice; construímos o nosso, com a mesma régua, para comparar maçã com maçã (o índice oficial mistura outra metodologia). É o benchmark honesto do nosso próprio universo.
Fonte 100% nossa (COTAHIST + proventos B3 + CVM); nenhuma série de índice
externa. É um mapa descritivo — "isto foi o que aconteceu" — e não uma regra
de decisão: setor que subiu não é sinal de compra. Ver multiplos.md e
dividendos.md.
Limitações declaradas (leia antes de tirar conclusão)
1. Viés de sobrevivência — agora MEDIDO. Esta é a limitação mais séria do índice. O universo são as companhias ativas hoje no cadastro da CVM: quem faliu, foi comprada ou fechou capital não está na série, nem no trecho em que ainda negociava.
Ficou declarada aqui por semanas sem número, o que não ajuda ninguém. Medimos:
para cada ano, quanto do volume financeiro negociado em ações ON e PN
pertenceu a papéis que hoje não estão no banco. Volume é o melhor proxy
disponível — valor de mercado dessas empresas não existe aqui, justamente
porque elas sumiram. O script está em testes/medir_sobrevivencia.py.
| ano | papéis fora | % do volume do ano |
|---|---|---|
| 2016 | 30,9% | 10,1% |
| 2018 | 25,5% | 8,0% |
| 2020 | 20,6% | 8,7% |
| 2022 | 17,1% | 4,8% |
| 2024 | 10,7% | 2,9% |
| 2026 | 5,2% | 1,0% |
Dentro da janela publicada (a partir de 2016), o índice deixa de enxergar entre 10% do mercado no início e 1% no fim. É o tamanho do buraco, não o erro em pontos percentuais: uma empresa que valia 3% do volume e caiu 80% antes de sumir puxaria o índice por bem menos que 3%.
E a direção do viés não é a que se supõe. O senso comum diz que sobrevivente puxa o índice para cima, porque quem sai da bolsa sai depois de cair. No Brasil a maior parte das saídas do período não foi falência: Cetip, Souza Cruz, Redecard, Linx, EDP, Hering e Intermédica saíram por compra ou fusão, tipicamente com prêmio — retorno alto pouco antes de desaparecer. Falências de peso houve (OGX, MMX). Ou seja, o viés soma um componente para cima e outro para baixo, e não afirmamos qual domina, porque não medimos o retorno das ausentes — para isso seria preciso o preço de papel que não existe mais.
Parte do que já foi chamado de "sumiu" era buraco nosso: BRF, Neoenergia, Santos Brasil, Serena e Zamp estavam fora do universo por serem Categoria B no cadastro, embora publiquem DFP completa e negociem todo dia. Foram incorporadas em 16/08/2026, e a tabela acima já é a versão limpa (antes da correção, 2010 media 29,7% em vez de 26,4%).
2. Agregado esconde dispersão. "Petróleo e Gás" são poucas empresas, e o peso por valor de mercado faz a maior dominar o setor: o número é, na prática, próximo do retorno dela. Já um setor grande e heterogêneo (Consumo Cíclico) tem varejo em queda e educação em alta dentro da mesma linha. Por isso a página mostra o número de empresas de cada setor ao lado do nome — média de dois é uma coisa, média de setenta é outra.
3. Escala. No gráfico, a escala linear compara níveis; a logarítmica compara taxas — nela, mesma inclinação significa mesmo retorno percentual, e um setor que multiplicou por cinco deixa de achatar todos os outros. Use log para comparar trajetórias; linear para ver o tamanho do resultado final.
4. Eventos que não sabemos quantificar. Cinco grupos de eventos societários na janela publicada são declarados pela B3 mas contraditos pelo preço, e um punhado de cisões (o acionista recebe ação de outra companhia) não tem ajuste possível sem precificar o ativo recebido. Nesses casos a ação sai da semana. Isso introduz um viés pequeno e conhecido: a semana perde um membro. É melhor que as duas alternativas — publicar um −59% que não aconteceu, ou aplicar um fator que o próprio preço desmente.
O erro de 15/08/2026
Esta seção existe porque o produto vende auditabilidade. Esconder o próprio erro seria vender o oposto do que se entrega.
O que estava publicado e estava errado. Até 15/08/2026 esta página mostrava um índice setorial "desde 2010" com o mercado em +518%. Nenhum desses números era real. Havia três defeitos empilhados, e o terceiro só apareceu porque fomos atrás do primeiro:
- Cobertura fantasma. 364 das 865 semanas estavam paradas em exatamente 100,0, porque antes de ~2021 quase nenhuma empresa tinha valor de mercado e a semana sem membro devolvia fator 1,0. O índice ficava reto e depois corria atrás em saltos.
- Evento societário não tratado. O COTAHIST não é ajustado por desdobramento. Petróleo e Gás aparecia com −89,6% numa única semana; o próprio "Mercado" com −42,4%. Para calibrar: na semana do crash da COVID, o setor mais atingido fez −17,5% — e esse é um movimento real.
- Valor de mercado impossível. Investigando o peso que produzia o −42,4%, achamos a AZUL com R$ 1,67 quadrilhão de valor de mercado: as 54,7 trilhões de ações do balanço de 31/03/2026 multiplicadas por um preço de 20/04 — já depois do grupamento de 1:150.000 do dia 17. Uma empresa valendo mais de cem vezes o PIB do país atravessou o banco inteiro sem disparar nada.
O remendo que não funcionou, e por que isso importa. A primeira tentativa foi um filtro de amplitude: descartar da semana qualquer ação com retorno fora de −50%/+100%. Falhou, e a falha é instrutiva — amplitude não distingue desdobramento de crash de verdade. Seis séries continuaram com artefato e o acumulado de Petróleo e Gás passou de errado-para-baixo a errado-para-cima (+1.429%). Filtro estatístico não substitui o dado que falta. Foi nesse ponto que o índice saiu do ar, e ficou fora até o dado existir.
Por que os testes não pegaram. Os invariantes verificavam identidades (cobertura, recomputação, ausência de nulo) mas nenhum perguntava "esse número é possível?". Um acumulado grande não dispara alarme — grande é o que se espera de um índice de longo prazo. E a contraprova que existia comparava a série "desde 2010" com a "desde 2021" e batia; batia porque só olhava os últimos cinco anos, ou seja, checava a parte que não tinha o defeito.
O que passou a existir. Quatro invariantes novos, todos escritos a partir de um defeito que aconteceu de verdade:
- nenhuma semana congelada ao centavo, em nenhum setor (antes: até 2%);
- nenhuma semana de setor além de ±35% — a régua vem do próprio dado (−17,5% no pior setor na semana da COVID);
- nenhum valor de mercado maior que o PIB do Brasil — grosseiro de propósito; teria pego a AZUL no primeiro build;
- preço de múltiplo dentro da janela após a publicação da demonstração.
Este último veio de brinde e é o achado mais sério de todos: ao investigar o
valor de mercado da AZUL, descobrimos que a busca do preço ponto-no-tempo era
data >= dt_receb sem teto. Quando o ticker atual não tinha preço na época
(empresa que trocou de código, migrou de classe ou só passou a negociar depois),
a consulta caía para a frente até achar preço — e o P/L de 2010 da EMBRAER saía
calculado com preço de 2025. Look-ahead de quinze anos, em 22% das linhas
de múltiplos, em silêncio. Agora o pregão tem de estar dentro de 45 dias da
publicação; não estando, o múltiplo não é calculado. O conserto de raiz —
ingerir preço por ISIN em vez de por ticker, como já fazemos nos FIIs — está na
fila.
O que isso custou em cobertura. A série publicada encolheu de "desde 2010" (ficção) para desde 2021 (real), e parte dos múltiplos históricos deixou de existir. É o preço de trocar número errado por ausência declarada, e nesta casa esse preço se paga.