Dados B3 › Transparência
Transparência
Transparência — como você confere os números você mesmo
Versão do dado 2026-09-27-reapresentacao-agreg · página gerada em 2026-09-27 05:45 UTC. Se isto não bater com o /saude, você está lendo uma cópia em cache.
O que é conferido, antes de cada publicação — 479 testes automáticos, coletados ao vivo
43 são invariantes de DADO (o número fecha?) e 120 são de produto — gate de acesso, navegação, idioma, conector de IA. Chamar os 479 de 'invariantes' seria inflar: a divisão é conferível na própria lista. Não é uma seleção à mão dos melhores exemplos: cada teste abaixo foi achado agora, introspectando os arquivos de teste de verdade, do mesmo jeito que pytest --collect-only acharia. Agrupados pelo que protegem, não pelo arquivo onde moram.
Nível 1 — Integridade: o dado fecha? (35)
I-P16— Toda composição gravada respeita o erro máximo e a amostra mínima que a própria função declara exigir.I-P17— CONTRAPROVA a partir do ARQUIVO CRU da B3: recomputa `a×ON + b×PN` contra o preço da unit, sem passar pela função que inferiu nem pela tabela `preco`.I-P18— Empresa cujo principal é unit COM composição conhecida não pode mais carregar a flag de não-ajustado, e o P/VP tem de cair na mesma faixa plausível das outras empresas.I-P01— Nenhum código de negociação está ligado a mais de uma empresa.I-P03— Na janela em que o código velho e o novo coexistem, a empresa tem UM preço por dia — o do principal.I-P21— Preço 2+ anos após o exercício sempre carrega flag.I-P22— Reintroduzido o defeito, a marca TEM de aparecer.I-P06— mínima ≤ abertura, fechamento ≤ máxima, em TODA linha.I-P08— Numa data em que a empresa negociou sob DOIS códigos, os cinco preços vêm todos do código vencedor — não um de cada.I-P09— Preços de referência, conferidos em valor ABSOLUTO.I-P10— VOLTOT ≈ QUATOT × PREMED — a âncora que CRUZA fatias.I-P11— Volume, quantidade e negócios conferidos em valor ABSOLUTO.I-P13— Nenhum principal tem MUITO menos volume que um irmão de OUTRA classe que ainda negocia.I-P19— O código da B3 é 4 posições + classe, não 4 LETRAS + classe.I-P20— O código que representa a empresa sai de ARQUIVO, não de endpoint.I-P24— Quando o arquivo da CVM traz o bloco consolidado inteiro com zero (TIM S.I-P25— Para toda empresa cujo principal é unit com cesta conhecida, o valor de mercado publicado é (preço ÷ cesta) × ações — recomputado aqui das tabelas, sem passar pela função que o gravou — nos múltiplos anuais E nos trimestrais, com ou sem a correção de escala de milhares.I-P26— Nenhum múltiplo PUBLICADO tem contagem de ações 3x maior ou menor que a do ano imediatamente anterior com preço sem um evento societário que explique — e a regra tem os casos: salto sem evento (pega), 2x (passa), já ajustado por evento (passa), evento registrado (passa), ano seguinte à abertura de capital (passa), escala em milhares (passa, é da outra trava).I-P27— Com números redondos, cada campo do múltiplo sai exato: valor de mercado = preço × ações; P/L = valor ÷ lucro dos controladores; P/VP = valor ÷ (PL total − minoritários); EV/EBITDA = (valor + dívida líquida) ÷ EBITDA; FCF yield = (CFO + capex) ÷ valor — e nenhuma flag.I-P28— Cada substituição sai com a sua flag, e o número que não existe fica vazio: sem minoritários, PL total no lugar (e P/VP sobre ele); sem lucro dos controladores, lucro total; lucro negativo dá P/L negativo com `pl_negativo`, lucro zero dá P/L vazio; patrimônio não positivo não tem P/VP; sem EBITDA, `sem_ebitda`; EBITDA negativo ou dívida desconhecida calam o EV/EBITDA sem inventar; sem capex, `sem_capex`.I-P29— As réguas têm o lado declarado: P/L de exatamente 200 não é extremo, acima é; valor de mercado ABAIXO de 1% do patrimônio é contagem em milhares (corrige ×1000 e diz); exatamente 1% não é corrigido — e, a 0,01x do patrimônio, cai fora da banda [0,02; 50] e o ano fica sem múltiplo; 0,02x e 50x estão dentro; acima do teto de valor de mercado, nada é publicado.I-P30— Unit principal divide o preço pela cesta (e diz), e unit sem cesta conhecida sai com o aviso; ano com escala divergente perde os quatro múltiplos; sem ações em circulação, a linha sai vazia com o motivo; a contagem usada é a do último instantâneo PÚBLICO até a data do preço (nunca o futuro), com aviso quando veio do FRE e quando tem mais de 200 dias.I-P31— A contagem de ações de um ano contra a do ano anterior com preço: até 3x para qualquer lado passa; acima, o ano fica sem múltiplos — a menos que o ano anterior seja o PRIMEIRO com preço (abertura de capital), que a razão seja a da escala em milhares (~1000x), que haja evento societário registrado entre o ano anterior e o seguinte, ou que a contagem já venha ajustada.I-P32— Uma linha sintética com valores distintos em cada campo grava fechamento, abertura, máxima, mínima, médio (duas casas), volume (duas casas), quantidade dividida pelo FATCOT, negócios, data e o código de onde veio.I-P33— Na semana em que a companhia negocia sob o código velho E o novo, o registro do dia é o do ticker principal — os oito campos da mesma linha e o código dela —, qualquer que seja a ordem no arquivo; dia em que só o velho negociou fica com o velho.I-P34— `_codigos_por_empresa`: o principal tem prioridade 0 e o histórico da MESMA classe 1; histórico de outra classe não entra; código reivindicado por duas companhias sai do mapa das duas; empresa sem principal não entra; espaço em volta do código e da classe é aparado.I-P35— `_escolher_principal`: só Bolsa, sem data de fim e com código válido; ordinária antes de preferencial; empate pelo código; o código sai normalizado.I-P36— TTM(Qk) = anual(ano−1) − Q1..I-P37— O múltiplo trimestral: o primeiro pregão a partir do recebimento da ITR (o de antes não serve), dentro da janela de 45 dias inclusive; valor de mercado = preço × ações; P/L TTM = valor ÷ lucro TTM; P/VP = valor ÷ (PL − minoritários).I-P38— `_acoes_na_data`: a contagem mais recente JÁ PÚBLICA até a data (inclusive), nunca a de depois; no empate de data, DFP/ITR ganham do FRE; só FRE marca "sem tesouraria"; contagem zero é ignorada; acima de 100 bilhões não vira número; defasagem acima de 200 dias marca, 200 não.I-P39— `calcular_multiplos`: uma linha por exercício com fato.I-P40— Um passo acima de cada régua muda o resultado: P/L 200,5 é extremo; valor de mercado 50,5x o patrimônio sai da banda; patrimônio exatamente zero não tem P/VP e não divide; EBITDA de meio real ainda dá EV/EBITDA; lucro de meio real não é "negativo"; teto de valor de mercado e contagem implausível no número exato e logo acima.I-P41— Desdobramento com data-ex NO DIA da contagem é aplicado; no dia do preço, não (o preço já está na base nova só a partir do dia seguinte ao ex); na véspera do preço, é.I-P42— O 2º e o 3º trimestres acham a ITR de 30/06 e 30/09; P/L TTM de exatamente 200 não é extremo e 200,5 é; P/VP 50 não é extremo e 50,5 é (o trimestral não tem a banda do anual); valor de mercado de exatamente 1% do patrimônio não é corrigido; patrimônio zero não divide; o número devolvido conta cada linha gravada.I-P43— (1) Uma linha do COTAHIST com TODOS os bytes preenchidos — vizinhos de cada campo com algarismo, cada número usando a largura inteira — é lida exatamente: fatia deslocada de um byte lê o vizinho e muda o número.
Nível 2 — Semântica: a conta significa o que o cálculo supõe? (7)
I-P05— `codigos_negociados` funciona com ZERO .I-P02— Todos os códigos que alimentam o preço de uma empresa são da MESMA classe do principal de hoje.I-P04— Todo valor de mercado usa um snapshot de nº de ações que JÁ ERA PÚBLICO na data do preço — nunca um posterior.I-P12— O FATCOT corrige a QUANTIDADE; o preço atravessa intacto.I-P14— A troca só ocorre entre CLASSES diferentes — nunca entre um código e o nome antigo da MESMA classe.I-P15— A troca por liquidez elege uma unit SÓ quando a composição dela está gravada em `unit_composicao`, e nunca destrona uma unit.I-P23— Companhia que trocou de sigla (Marfrig → MBRF3, jan/2026) ganha o código novo mesmo com o FCA ainda listando o velho, e o código velho, com volume recente ZERO, cede o lugar sem exigir o fator de 3x sobre os 16 anos de histórico que ele acumulou.
Nível 3 — Econômico: o resultado é possível no mundo real? (1)
I-P07— O PREMED fica FORA de [mínima, máxima] em ~0,1% das linhas — e o teste existe para registrar isso, não para reprovar.
Outros testes do produto (0)
Gate comercial, navegação e o conector MCP — testam se o produto funciona, não se um número está certo, então não entram nos 3 níveis acima por natureza. Contados e listados do mesmo jeito:
Reconstrua você mesmo — margem líquida de 5 empresas, 4 setores
Não pedimos que você confie nos números. Eis a margem líquida de cinco empresas de quatro setores diferentes, cada uma reconstruída direto do balanço anual (DFP) na CVM — lucro líquido ÷ receita, batendo exatamente com o valor publicado. Para QUALQUER indicador, de qualquer empresa, a cadeia inteira até a linha do arquivo da CVM está em /linhagem:
| Empresa · setor | Lucro líq. (conta CVM) | Receita (conta CVM) | Margem =÷ |
|---|---|---|---|
| WEGE3 · indústria | R$ 6,78 bi DRE:3.11 | R$ 40,80 bi DRE:3.01 | 16,6% |
| VALE3 · mineração | R$ 11,81 bi DRE:3.11 | R$ 213,59 bi DRE:3.01 | 5,5% |
| PETR4 · petróleo | R$ 110,61 bi DRE:3.11 | R$ 497,55 bi DRE:3.01 | 22,2% |
| ITUB4 · banco | R$ 45,85 bi DRE:3.09 | R$ 387,12 bi DRE:3.01 | 11,8% |
| BBAS3 · banco | R$ 16,78 bi DRE:3.11 | R$ 319,46 bi DRE:3.01 | 5,3% |
Baixe a DFP de qualquer uma delas na CVM, pegue as contas de lucro e receita, divida — você chega no mesmo número. Bancos usam a receita de intermediação (o que faz sentido pra um banco), então a reconciliação é ciente do setor; os demais usam a receita de vendas. Valores do último exercício.
Por que às vezes divergimos de outro site (e não é erro)
Uma diferença entre dois sites geralmente não é um estar errado — é uma escolha de método. A nossa está aberta:
- Capital médio vs final: ROE e ROIC usam patrimônio/capital médio (ano atual + anterior ÷ 2), não o saldo final — então não são uma divisão ingênua de um ano só.
- Controladora vs consolidado: dizemos qual cada item usa.
- TTM vs anual: múltiplos trimestrais usam lucro dos últimos 12 meses.
- IFRS 16, goodwill, caixa, imposto excepcional: cada um tratado explicitamente e sinalizado quando distorce.
Os testes mordem? Sim — casos reais que a bateria já pegou
Um teste que nunca falha pode significar dado perfeito — ou teste fraco. Estes nasceram de erros reais que passaram, e hoje reprovam — só aparece o que existe de verdade na bateria coletada acima:
- I-B16 · o P/L = 0 dos bancos: a CVM reporta o nº de ações ora em unidades, ora em milhares (varia por empresa e por ano); o market cap saía 1000× menor e o P/L dava zero. O I-B16 (preço × ações recomputado) pegou — corrigimos 661 múltiplos anuais e 2.027 trimestrais.
- I-B24 · o lucro que sumia: a conta de lucro/PL varia por banco (Itaú 3.09, BB 3.11); se a busca por rótulo falha, o número some em silêncio e o ROE nasce errado. I-B24 faz esse buraco reprovar.
- H-B23 · o dividend yield de 800%: provento antigo na B3 vem com preço não ajustado por desdobramento; sem o H-B23 o yield sairia absurdo como se fosse real. A flag mantém o registro e avisa.
- I-B20 · o furo do COTAHIST 2023: no 1º deploy, o download de um ano de preços falhou em silêncio; a API subiu com ~50 mil preços a menos e a bateria passou, porque nenhum teste olhava cobertura. Criamos o I-B20 — ano sem preço agora reprova o build alto.
- I-B33 · Petróleo e Gás em −89,6% numa semana: o COTAHIST não é ajustado por desdobramento; um split 10:1 lia como −90% de retorno semanal e ficava no acumulado para sempre, sem nada reprovar (um filtro cego de amplitude nem resolveu — só trocou o erro de sinal). I-B33 (nenhuma semana de setor além de ±35%, a régua é a própria bolsa) faz o build parar.
- I-B31 · 364 de 865 semanas do índice setorial congeladas: ao estender a série até 2010, setor sem nenhuma empresa com market cap naquela semana virava fator 1,0 — uma linha reta que o retorno acumulado lia como 'mercado parado', e o retorno 'desde 2010' saía ficcional (+527%). I-B31 reprova qualquer semana repetida ao centavo.
- I-E05 · o P/L de 2010 da EMBRAER com preço de 2025: a busca de preço ponto-no-tempo caía para a frente sem teto quando o ticker atual não tinha preço na época do balanço (troca de código, mudança de classe); o múltiplo saía calculado com um preço 15 anos no futuro, em 22% das linhas anuais e trimestrais, em silêncio. A janela de 45 dias (e o I-E05) barra isso: sem pregão dentro do prazo, o múltiplo não é calculado.
- I-E04 · a AZUL com R$ 1,67 quadrilhão de valor de mercado: o balanço trazia 54,7 trilhões de ações da recuperação judicial, mas o preço usado já estava na base pós-grupamento de 1:150.000 — duas pontas em bases diferentes, market cap errado por ordens de grandeza. I-E04 (valor de mercado nunca maior que o PIB do Brasil) faz esse absurdo reprovar o build.
Até onde vai cada bloco de dado
Aqui não tem asterisco: esta é a cobertura ano a ano, contada agora. Indicadores (ROE, ROIC, margens, crescimento) saem só das demonstrações e cobrem a série inteira. Múltiplos (P/L, P/VP, EV/EBITDA) exigem preço e número de ações — e o nº de ações vem do Formulário de Referência, que quanto mais antigo menos companhia entregou em formato aproveitável. A diferença entre as duas colunas é limite da fonte, não buraco de ingestão. Se você procurar um P/L antigo e não achar, é porque ninguém tem — não porque escondemos. Os mesmos números em JSON: /cobertura.
| Ano | Empresas com indicadores | Empresas com múltiplos |
|---|---|---|
| 2025 | 438 | 290 |
| 2024 | 444 | 296 |
| 2023 | 442 | 298 |
| 2022 | 429 | 295 |
| 2021 | 423 | 296 |
| 2020 | 410 | 274 |
| 2019 | 371 | 164 |
| 2018 | 326 | 164 |
| 2017 | 317 | 162 |
| 2016 | 311 | 152 |
| 2015 | 303 | 143 |
| 2014 | 301 | 139 |
| 2013 | 292 | 130 |
| 2012 | 291 | 111 |
| 2011 | 284 | 97 |
| 2010 | 277 | 34 |
Cobertura ao vivo
456 empresas · 876,076 pontos de preço · 8,654 reapresentações registradas · última atualização 2026-09-27 00:20:28. Contagens completas ao vivo em /saude.
Fontes: CVM (dados abertos, ODbL) e B3 (COTAHIST). Não afiliado à B3 nem à CVM. Não é recomendação de investimento.
Os números desta página são ao vivo. Versão do dado 2026-09-27-reapresentacao-agreg · página gerada em 2026-09-27 05:45 UTC. Se isto não bater com o /saude, você está lendo uma cópia em cache.