← Voltar ao início EN
Metodologia aberta

Linhagem — do número publicado até a linha do arquivo da CVM

Linhagem — do número publicado até a linha do arquivo da CVM

Há uma diferença entre auditável e reproduzível, e ela é a razão desta página existir.

Até agora este banco dizia duas coisas: a fórmula de cada indicador (em /metodologia) e a conta da CVM de onde cada insumo saiu. Isso é auditável — dá para conferir se a conta certa foi usada. Mas não é reproduzível: para refazer o número por conta própria, você teria de baixar o arquivo da CVM e adivinhar qual linha, de qual documento, de qual versão.

A linhagem fecha essa cadeia. Para qualquer indicador publicado, ela entrega:

ROIC · WEGE3 · 2025 · 0,3846 │ ├─ fórmula: NOPAT / capital investido médio │ ├─ documento: DFP 2025, versão 1 │ referência 2025-12-31 · público em 2026-02-25 │ arquivo: dfp_cia_aberta_2025.zip (dados.cvm.gov.br) │ └─ insumos ├─ ebit ......... DRE 3.05 "Resultado Antes do Resultado Financeiro │ e dos Tributos" = 7.998.741.000 ├─ lair ......... DRE 3.07 ... ├─ ir_csll ...... DRE 3.08 ... ├─ div_curta .... BPP 2.01.04 ... ├─ div_longa .... BPP 2.02.01 ... ├─ pl_total ..... BPP 2.03 ... ├─ caixa ........ BPA 1.01.01 ... └─ aplic_fin .... BPA 1.01.02 ...

Cada linha carrega o código da conta, a descrição que a própria empresa escreveu, o valor e a versão do documento. Se aquela conta foi reapresentada, a linhagem mostra o valor de antes e o de depois, com a diferença. E o link vai para o ZIP bruto da CVM — o arquivo de verdade, não uma cópia nossa.

Cobertura, medida e não estimada

De 60.085 indicadores publicados com valor, 58.951 (98,1%) têm todos os insumos rastreáveis até a linha exata do arquivo.

Os 1,9% restantes não são falha de rastreamento: são itens que a empresa não publicou naquela demonstração. Os dois casos dominantes:

insumo ausente ocorrências o que significa
lucro_controladores 1.001 a empresa não separa a parte dos não-controladores
pl_minoritarios 888 idem, no balanço
cfo (Piotroski) 129 a DFC não foi publicada naquele ano

Nesses casos o insumo aparece marcado como não rastreável, com o motivo — e o indicador que dependia dele carrega a flag correspondente. Nunca há uma conta inventada para tapar o buraco.

Origem composta

O plano de contas da DFC varia de empresa para empresa: o capex às vezes mora em uma linha, às vezes em duas. Quando a origem é composta (DFC_MI:6.02.01 + 6.02.02), a linhagem mostra as duas linhas separadas, cada uma com seu valor, e a soma tem de dar o número publicado. Um invariante reprova a publicação se não der — hoje, zero divergências.

O que esta página encontrou ao ser construída

Construir a linhagem foi, na prática, uma auditoria do cálculo — e ela achou um defeito que estava no ar desde o começo.

O cálculo do capital investido e da dívida líquida usava caixa or 0. Isso trata "a empresa não publicou o caixa" e "o caixa é zero" como a mesma coisa. São diferentes: a primeira é ausência de informação, a segunda é informação. O efeito era inflar o capital investido (derrubando o ROIC) e a dívida líquida — e o número saía sem nenhuma flag, ou seja, limpo.

Atingia três indicadores de uma empresa (ARMAC, exercício de 2021). Pouco em volume, grave em natureza: é exatamente o silêncio que este banco existe para não ter. O or 0 continua — é a única conta possível — mas agora ele avisa, com a flag caixa_nao_publicado, e o invariante I-L03 reprova a publicação de qualquer indicador limpo cujo insumo obrigatório não tenha lastro.

Vale registrar que o Piotroski já fazia certo desde sempre: quando falta um critério, ele publica parcial_7_de_9 em vez de fingir que somou nove.

Os invariantes da linhagem

id o que trava
I-L01 a soma das linhas de uma origem composta é o valor do fato
I-L02 toda conta citada como origem existe de fato na tabela de contas
I-L03 indicador limpo não pode ter insumo obrigatório sem lastro
I-L04 todo indicador publicado tem os insumos declarados
I-L05 contraprova ponta a ponta: a cadeia inteira, para uma amostra

O I-L02 provou seu valor no primeiro build: reprovou porque o campo de origem pode carregar uma anotação depois de ; (um caso de custo publicado com sinal invertido, corrigido pela identidade da DRE) e a leitura ingênua procurava uma conta com a anotação colada no código. Defeito do leitor, não do dado — mas teria virado um elo quebrado na página, e ninguém veria.

Como usar

Na página de cada empresa, todo indicador abre a cadeia. Pela API, o mesmo objeto sai em JSON — a mesma verdade, servida em dois formatos, para que um agente de IA possa percorrer a procedência exatamente como uma pessoa faria.

O pedido continua de pé: ache um número que não bata com a DFP da CVM. Agora com o caminho inteiro à mão.