Dados B3 › Transparência
Transparência
Transparência — como você confere os números você mesmo
Versão do dado 2026-09-14-etfs · página gerada em 2026-09-22 12:36 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 — 367 testes automáticos, coletados ao vivo
67 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 367 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? (63)
I-N20— Página que usa a moldura de FATO está em PAGINAS_DE_FATO.I-N21— Todo caminho de PAGINAS_DE_FATO responde 200. O par do I-N20. Sem ele a lista pode acumular caminho de página removida, e o painel passaria a publicar uma linha eternamente zerada — um zero que não significa "ninguém acessou", significa "isso não existe mais".I-N22— `/acoes/TICKER` responde 200 SEM chave, e está no sitemap.I-N23— O índice de `/acoes` e o sitemap cobrem as mesmas companhias.I-N24— Número suprimido aparece com o motivo, não em branco.I-N25— `/fiis/TICKER` responde 200 em HTML SEM chave, e está no sitemap.I-N26— O índice do hub `/fiis` e o sitemap cobrem os mesmos fundos.I-N27— P/VP com ressalva aparece com a ressalva, não limpo.I-N28— Sem chave, `/fiis/TICKER` devolve a PÁGINA com qualquer Accept.I-N29— A página e o JSON da amostra trazem os mesmos casos.I-N30— Sitemap e `noindex` são ordens opostas; nada pode ter as duas.I-N31— A tabela do buscador sai montada do servidor, sem JavaScript.I-N32— Cada filtro corta mais, e dá para tirar UM sem perder os outros.I-N33— Quem não tem o número vai para o FIM, nas duas direções.I-N34— Cada empresa aponta para as outras do setor; cada fundo, para os outros do segmento.I-N35— O JSON-LD (schema.I-N36— O /sobre nomeia quem faz o site, em PT e em EN.I-N37— `/hoje` abre com qualquer Accept, está no sitemap e na lista do painel, e diz a janela e até onde cada dado vai.I-N38— O total de cada seção da `/hoje` é o total do banco na mesma janela; seção vazia diz que está vazia.I-N39— `/hoje` devolve JSON só a quem pede `application/json` EXPLICITAMENTE, e continua devolvendo a PÁGINA para todo o resto — e os números do JSON são os mesmos do banco.I-N40— `/metodologia` devolve JSON a quem pede, com o título de cada página, e continua servindo a página para todo o resto.I-N41— A página de uma companhia traz a série trimestral, cada número igual ao do banco, sem 4º trimestre, nas duas línguas.I-N42— `/o-que-erramos` sai dos docstrings dos invariantes, não de uma lista à mão — e todo defeito datado do código aparece nela.I-N43— A moldura de toda página bilíngue está em inglês, e onde o CONTEÚDO fica em português a página declara isso — não deixa o leitor de inglês bater num muro de texto sem explicação.I-N44— A busca acha por código, por nome (com ou sem acento) e por CNPJ; código exato leva DIRETO ao ativo; termo vazio não devolve a base.I-N45— `/comparar/A/B` compara o ano em que AS DUAS têm o número, declara o que não existe para aquele tipo de companhia, e não diz qual é a melhor.I-N46— A página da empresa traz gráficos em SVG gerados no servidor — sem script — um por indicador que se aplica; ano sem valor é buraco na linha, ponto com ressalva é vazado, e o último valor do cartão é o do banco.I-N47— A página da empresa e a do FII mostram o fechamento NOSSO (data e preço do COTAHIST, o que a API serve) ao lado do widget do TradingView — com o crédito obrigatório, dizendo que aquele número não entra na API.I-N48— A home abre com a conta aberta de uma companhia real — o ROIC refeito a partir das linhas cruas, cada linha com a conta da CVM de origem — e o resultado mostrado é o MESMO que a base publica.I-N49— A página da empresa abre com o que a companhia faz e onde está (ficha do FCA, com a fonte declarada), traz uma barra de âncoras em que TODA entrada aponta para uma seção que existe, e um gráfico de preço em SVG do servidor cujo último ponto é o último fechamento do banco.I-N50— A página do FII tem o que a página da empresa tem: ficha em cartões com a fonte declarada, barra de âncoras em que toda entrada aponta para seção existente, três gráficos SVG do servidor (preço, P/VP ponto-no-tempo, rendimento por cota) cujo último ponto bate com o banco, e a série de P/VP enxuta (24 informes) com a completa por link.I-N51— A página da empresa abre um bloco "Tamanho e valuation": valor de mercado (fechamento de hoje × ações do último balanço público), EV, LPA, VPA, DY 12m, payout e nº de ações — cada cartão com o ano — e os múltiplos ponto-no-tempo ganham o ano no rótulo.I-N52— Ao lado do fechamento, a página (empresa e FII) mostra o retorno de 1 mês, 12 meses e no ano e a faixa de 52 semanas — calculados da série de fechamento do banco.I-N53— Ao lado de cada indicador e múltiplo da empresa, a página mostra a mediana das OUTRAS companhias do mesmo setor CVM (cada uma no seu último ano), com quantas são.I-N54— Abaixo das razões, a página da empresa mostra o histórico em REAIS — receita, lucro dos controladores, EBITDA, dívida líquida, caixa e aplicações, patrimônio — ano a ano, com a unidade (R$ bi ou R$ mi) no rótulo.I-N55— A agenda de proventos (em /hoje, na home e nas páginas de ativo) mostra só o que tem data marcada daqui para a frente — pagamentos e datas-com de FII, datas-com de ação —, nunca uma data impossível (9999-12-31, "a definir" na B3), e DIZ até quando a base enxerga (data do anúncio mais novo que ela tem).I-N56— A data-com de ação ANTES de acontecer vem do "Relatório Proventos" que a companhia entrega à CVM (IPE): o formulário é lido (aprovação, último dia com direito, ISIN, valor, pagamento), entra sem tipo — o formulário não separa dividendo de JCP, e a página diz isso —, não repete o que a B3 já publicou (mesma companhia, classe, data-com e valor), só a classe do ticker principal, e cada item carrega o link do documento na CVM.I-N57— As últimas páginas que ainda rodavam JavaScript saem prontas do servidor: a corrida dos setores é SVG desenhado em Python, com janela e escala por LINK; o gráfico do fluxo estrangeiro é SVG desenhado em Python; a transparência filtra por família por um link que o servidor responde; o título da metodologia é escrito na página, não reescrito no navegador.I-N58— A página da companhia lista cada provento da classe principal numa tabela: tipo, data-com, data-ex, pagamento e valor por ação.I-N59— O gráfico de cotação (empresa e FII) escolhe a janela por LINK (1m, 3m, 6m, ano, 1a, 5a, max) e desenha o fechamento do banco na granularidade que cabe: diária até um ano, semanal em cinco, mensal no máximo.I-N60— A tabela "Em reais, ano a ano" ganha duas colunas da ITR: o último trimestre sozinho e os últimos 12 meses (TTM), montados pela MESMA identidade do P/L TTM — anual do ano anterior menos os trimestres dele até aqui, mais os deste ano; faltou um pedaço, fica vazio, nunca interpolado.I-N61— Depois da passada de coerência (cotação com o gráfico, valuation com os dois tempos, indicadores com as sparklines, nove âncoras), a página da companhia ganha três coisas vistas na AUVP Analítica, todas do que o banco já tinha: (1) indicadores por tema — valuation, endividamento, eficiência, rentabilidade, crescimento — cada um com a definição de uma linha e a marca "hoje" quando divide o valor de mercado de hoje por conta do exercício; múltiplo sobre denominador não positivo não existe; banco e seguradora ficam sem o que não se aplica; (2) as três demonstrações numa tabela só (resultado, balanço, caixa), com as derivadas ditas no nome da linha — dívida bruta = curto + longo, caixa livre = FCO + capex; (3) os eventos societários, com o multiplicador e se bateram com o salto do preço.I-N62— Do Investidor 10, só com o que o banco já tinha: (1) tabela de rentabilidade por janela (1 mês a 10 anos) com o preço sozinho e com proventos reinvestidos no fechamento da data-ex; o preço inicial é ajustado pelos eventos societários CONFERIDOS com o preço, e salto que eles não explicam deixa a janela vazia; (2) DY por ano (soma do ano ÷ fechamento do último pregão do ano) e a média de 5 anos; (3) meses com data-com nos últimos 5 anos, contados, não projetados; (4) liquidez média diária dos últimos 63 pregões na ficha; (5) checklist de nove fatos com o limiar escrito em cada linha, banco e seguradora fora do que não se aplica, dito como fato e não como recomendação.I-N63— Uma auditoria externa (ChatGPT cruzando com Fundamentus e Status Invest, 13/09/2026) deu nota 8,5 em "dados atuais": os outros mostram o último balanço trimestral e indicadores de 12 meses, nós abríamos com o exercício fechado.I-N64— Decisão do dono (13/09/2026): a ficha mostra o logotipo da companhia.I-N65— A tabela de rentabilidade ganha a linha real: o retorno com proventos reinvestidos dividido pela inflação acumulada na janela, do IPCA mensal do Banco Central (série 433), capitalizado mês a mês, com os meses de ponta pro rata pelos dias.I-N66— A página da companhia ganha "Acionistas e free float": do Formulário de Referência (FRE) da CVM, na versão mais recente que a companhia entregou, só as participações DIRETAS (a cadeia de controle, quem é dono da holding, fica fora), com a linha "Outros" do próprio formulário como mercado e a distribuição do capital como free float; a página diz a data de entrega e a versão.I-N67— Roadmap 7. O gráfico de preço e a linha 1m/12m/ano passam a ajustar a série pelos eventos societários CONFERIDOS contra a queda de preço observada (evento_societario.I-N68— Roadmap 12. Quem chega por um código de negociação ANTIGO (EMBR3, VVAR3, ELET3) é redirecionado com 301 para o atual, e a página de destino DIZ de onde ele veio — não finge que a pergunta era outra.I-N69— A agenda passa a mostrar o PAGAMENTO futuro de ação, que a ficha da B3 traz (`dividendo.I-N70— Roadmap 10 e 11. Duas regras de coerência, uma por vez: (1) MOLDURA.I-N71— Os três restos que ficaram para trás quando o item principal foi feito: (1) ao lado da mediana do setor, a POSIÇÃO no setor — "3º de 40" —, calculada dos mesmos valores da mediana, com a direção declarada (ROE alto é bom, P/L baixo é bom) e nenhuma posição inventada para indicador sem direção óbvia; (2) na página de FII, a mediana dos pares do segmento sai do parágrafo solto e entra no cartão do P/VP e do DY, como na companhia; (3) cada linha da tabela em reais ganha a forma da série numa linha minúscula, com buraco onde falta ano e a linha do zero quando a série troca de sinal.I-N72— Roadmap 8. A home ganha o mercado na primeira tela, do que já está no banco: maiores altas e baixas do último pregão, maiores dividend yields de 12 meses e os setores pelo retorno de 12 meses do nosso índice.I-N73— O que a companhia entregou à CVM fora das demonstrações — fato relevante, aviso aos acionistas, ata, comunicado ao mercado — vira uma lista na ficha, da entrega mais recente para a mais antiga, com o link para o documento na CVM.I-N74— Roadmap 14, a passada de texto.I-N75— A página /para-quem é o resumo que um assistente de IA consegue citar: a quem serve, a quem NÃO serve, quanto custa, como começar — em PT e EN, com o FAQ em JSON-LD (schema.I-N76— /fiis e /etfs devolvem JSON pela MESMA URL.I-N82— LPA, VPA e nº de ações saem na API, e são o MESMO número da página da companhia.I-N83— Depoimento obedece às mesmas exigências que um número, adaptadas ao que ele é: palavra de outra pessoa.I-N84— A página das companhias que saíram da bolsa mede o buraco sem fingir que o conserta, e não publica ticker inferido.I-N85— `as_of` filtra pelo que ESTAVA PÚBLICO na data, não pelo exercício.I-N86— /carteira?WEGE3=30&.I-N87— `screener?.
Nível 2 — Semântica: a conta significa o que o cálculo supõe? (4)
- : /buscar e /buscar/fiis dizem que existe uma busca com parametro (searchaction /procurar?q=); /hoje e datada pela versao do dado (nao por hoje a pagina diz quando aquilo era verdade); /comparar/a/b lista as duas companhias com ticker e a url da pagina de cada uma.">
I-N77— As três páginas que ficaram sem JSON-LD no teste "como uma IA" (10/09/2026) agora têm UM bloco válido no : /buscar e /buscar/fiis dizem que existe uma busca com parâmetro (SearchAction → /procurar?q=); /hoje é datada pela VERSÃO DO DADO (não por hoje — a página diz quando aquilo era verdade); /comparar/A/B lista as duas companhias com ticker e a URL da página de cada uma. I-N78— Cache-Control público em toda resposta de leitura sem chave, e em NENHUMA resposta com chave ou de rota de sessão/cobrança/protocolo.I-N79— `pip install dadosb3` é o primeiro gesto de quem programa, e por isso está nas três portas por onde essa pessoa chega: o hub /api, o llms.I-N81— Quando o aviso à CVM declara pagamento PARCELADO, a agenda do ativo diz isso e leva ao documento — em vez de calar o pagamento.
Nível 3 — Econômico: o resultado é possível no mundo real? (0)
Outros testes do produto (19)
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:
I-N01— Rastreia todas as páginas a partir da home: nenhum link interno pode responder erro, e toda página tem de ter caminho de volta para a home.I-N02— Os apelidos de metodologia (URLs que as pessoas ADIVINHAM, como /metodologia/pl) redirecionam para a página canônica — e um nome inexistente continua 404, para o alias não virar um buraco que engole tudo.I-N03— Toda página HTML tem link visível de troca de idioma.I-N04— A metodologia — o argumento central do produto — existe em inglês.I-N07— Cada vertical configurada tem porta, e a porta fala os dois idiomas.I-N05— Toda página pública declara viewport e tem regra responsiva.I-N08— O menu principal, nos dois idiomas, tem porta para cada vertical.I-N06— Rota que depende de tabela NOVA responde 503, nunca 500, quando a tabela ainda não existe.I-N09— Tabela que mistura duas temporalidades tem de rotular cada uma.I-N10— Todo exemplo que o cardápio do /screener oferece precisa ser aceito pelo /screener.I-N11— O cardápio do /screener responde a quem NÃO tem chave.I-N12— O /saude publica a versão do dado, e ela é a do banco servido.I-N13— A página de reapresentações abre sem chave; o feed por empresa não.I-N14— A página de qualidade lista o que NÃO publicamos, e por quê.I-N15— A página do plano de contas prova que código não define conta.I-N16— A página do ISSB diz que a obrigação foi REVOGADA, com data.I-N17— A página de armadilhas conta do banco, não afirma de memória.I-N18— A página do look-ahead mede, e distingue atraso de republicação.I-N19— Quem chega sem chave recebe a PÁGINA, qualquer que seja o Accept.
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 | 294 |
| 2024 | 444 | 297 |
| 2023 | 442 | 298 |
| 2022 | 429 | 295 |
| 2021 | 423 | 298 |
| 2020 | 410 | 275 |
| 2019 | 371 | 165 |
| 2018 | 326 | 166 |
| 2017 | 317 | 162 |
| 2016 | 311 | 152 |
| 2015 | 303 | 143 |
| 2014 | 301 | 141 |
| 2013 | 292 | 130 |
| 2012 | 291 | 112 |
| 2011 | 284 | 97 |
| 2010 | 277 | 34 |
Cobertura ao vivo
455 empresas · 875,986 pontos de preço · 9,467 reapresentações registradas · última atualização 2026-09-22 05:59:47. 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-14-etfs · página gerada em 2026-09-22 12:36 UTC. Se isto não bater com o /saude, você está lendo uma cópia em cache.