Dados B3 › Transparência
Transparência
Transparência — como você confere os números você mesmo
Versão do dado 2026-11-03-ponte-b3-codigo-de-fundo · página gerada em 2026-11-07 01:13 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 — 1238 testes automáticos, coletados ao vivo
22 são invariantes de DADO (o número fecha?) e 131 são de produto — gate de acesso, navegação, idioma, conector de IA. Chamar os 1238 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? (22)
MED13— MED13 · O registro de uso não permite reconstruir quem pediu o quê.MED14— MED14 · O painel diz DESDE QUANDO mede o uso de chave.MED15— MED15 · O uso de chave é contado num ponto só, e ele existe.MED16— MED16 · A degustação — o denominador da conversão em chave — é contada no middleware só quando é rota de DADO de papel aberto, sem chave, que deu certo e foi pedida por gente; guarda família do caminho e dia, nunca o ticker.MED17— MED17 · A retenção sai por coorte da semana do primeiro uso da chave: quantas estrearam e quantas voltaram N dias ou mais depois.MED18— MED18 · /admin/metricas não existe sem ADMIN_TOKEN (404) e, com ele, traz as quatro métricas do Bloco 5 — conversão da degustação, retenção, chegadas por via e eventos do vigia por mês (o mesmo contador da página /vigia) — sem e-mail, IP ou hash de chave.MED19— MED19 · Dois cenários sintéticos no mesmo dia-tipo: pessoas lendo 10 páginas muitas vezes NÃO é suspeito; o mesmo volume espalhado uma vez por página em 1.000 páginas É suspeito de rastreador.MED20— MED20 · derivado/search_console.MED21— MED21 · O pulso lê o relatório "estado do produto" da semana pelo /admin/metricas e imprime o resumo, a semana e o arquivo em que o servidor o gravou (DADOS_DIR/relatorios/AAAA-WW.MED22— MED22 · OAI-SearchBot e Claude-SearchBot (montando o índice da busca de IA) são `ia_indexador`, não `ia_a_pedido`; ChatGPT-User, Claude-User e Perplexity-User continuam `ia_a_pedido`.MED23— MED23 · O painel lê `dia` pelo MESMO relógio (UTC) com que a linha foi gravada.MED31— MED31 · O painel enxerga erro de IA: o acesso de IA grava status e tempo, o MCP é contado DEPOIS de rodar, com resultado ('ok' ou 'erro:<classe>'), e o bloco `ia_erros` separa 200 de 404, lista os caminhos que falham e dá mediana e p90. Nem ticker nem texto do usuário ficam gravados, e banco antigo sem as colunas migra sem perder linha.MED40— MED40 · Cada acesso de robô grava só a FAMÍLIA (ex.MED41— MED41 · ★ 01/11/2026: a medida do Google ficou parada de 26/09 a 01/11 porque a única linha do Search Console era a lançada à mão no repositório.MED42— MED42 · Cada pedido de IA a pedido grava a FAMÍLIA da rota (ticker vira *) e o tempo em ms, em histograma por hora; navegador, robô de busca e pedido sem tempo não gravam; query string, IP e user-agent não vão para o banco.MED43— MED43 · /admin/stats > ia_erros.MED44— MED44 · O armazenamento é limitado: no máximo 60 famílias por hora (o resto vira '(outros)'), só 10 caminhos lentos por hora, horas com mais de 48 h viram linhas por dia e o que passa de 35 dias some; o middleware grava o pedido de IA (e só o de IA) sem mudar a resposta.MED45— MED45 · `sinais_mcp.MED46— MED46 · O ticker só é gravado se existe na base pública (ação, FII, ETF, BDR); código desconhecido, frase ou e-mail vira 'outro' (classe 'outro'), e chamada sem código fica 'nenhum'.MED47— MED47 · A LOTE_LIMIAR-ésima chamada idêntica (mesma ferramenta, cliente e argumentos) em LOTE_JANELA_S segundos, e as seguintes, saem com lote=1; as anteriores, argumento diferente, cliente diferente ou a mesma chamada depois da janela ficam lote=0. A chave do argumento NÃO separa rajada (é a mesma chamada).MED48— MED48 · /admin/stats ganha `mcp_sinais` (por cliente da lista fechada chatgpt/claude/cursor/outro, por classe, tickers, parâmetros, rajada, primeiro uso de cada ferramenta) e `robos_por_familia_30d` (janela de 30 dias, 10 rotas e soma por seção por família), e mantém TODAS as chaves e formatos de antes: `mcp`, `robos_por_familia` de 7 dias com 5 rotas e sem `secoes`.MED49— MED49 · A /privacidade (PT e EN) descreve os sinais do conector com os números do código (marca de rajada com LOTE_LIMIAR, códigos não encontrados com a guarda de `_DIAS_CODIGO_GUARDADOS`), diz que não grava texto livre, chave, IP nem cabeçalho, e a tabela `mcp_uso` tem exatamente as colunas que a política cobre (coluna nova reprova até a política ser revista), nasce de forma idempotente e entra na limpeza de 365 dias (`retencao.
Nível 2 — Semântica: a conta significa o que o cálculo supõe? (0)
Nível 3 — Econômico: o resultado é possível no mundo real? (0)
Outros testes do produto (12)
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:
MED01— MED01 · Toda ferramenta do conector MCP passa pelo ponto de contagem.MED02— MED02 · Chamar uma ferramenta MCP grava mesmo a chamada.MED03— MED03 · Clique do próprio funil não é contado como visita.MED04— MED04 · O alarme do build acende pelo fato, não pelo instante.MED05— MED05 · Se a base no ar não é a que o código promete, o /saude avisa.MED06— MED06 · 'Rodando' tem prazo — build travado não passa por saudável.MED07— MED07 · Página que publica número vivo diz de quando ele é.MED08— MED08 · Passo de funil dado por robô não conta como intenção humana.MED09— MED09 · Crawler que segue o link "Assinar" não cria sessão de pagamento.MED10— MED10 · O plano grátis aparece no HTML servido, sem executar script.MED11— MED11 · A landing servida traz o grátis quando o plano está ligado.MED12— MED12 · Nenhuma página escreve à mão um número que o banco já sabe.
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 | 440 | 290 |
| 2024 | 444 | 296 |
| 2023 | 442 | 298 |
| 2022 | 429 | 295 |
| 2021 | 423 | 296 |
| 2020 | 411 | 274 |
| 2019 | 372 | 166 |
| 2018 | 327 | 167 |
| 2017 | 318 | 165 |
| 2016 | 312 | 154 |
| 2015 | 304 | 144 |
| 2014 | 302 | 140 |
| 2013 | 293 | 131 |
| 2012 | 291 | 112 |
| 2011 | 284 | 98 |
| 2010 | 277 | 34 |
Cobertura ao vivo
456 empresas · 883,569 pontos de preço · 8,670 reapresentações registradas · última atualização 2026-11-06 01:27:27. 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-11-03-ponte-b3-codigo-de-fundo · página gerada em 2026-11-07 01:13 UTC. Se isto não bater com o /saude, você está lendo uma cópia em cache.