Dados B3 › Reading the CVM files · Português

Reading the Brazilian regulator's CSV without getting it wrong: 6 traps, each with a count

Every trap on this list bit us. The counts come from our own base, and several were found by external auditors checking what we publish — this is not a theoretical list of precautions, it is a defect log.

ESCALA_MOEDA: the value is in THOUSANDS

50 cases in our base

The ESCALA_MOEDA column says MIL (thousands) on the overwhelming majority of rows. Reading VL_CONTA directly is off by a factor of a thousand — and it goes unnoticed because ratios cancel the factor; only quantities break. Worse: the SAME company can file the same year with different scales across its two filings. When that happens we withhold the absolute figure and publish only the ratios, flagged.

ORDEM_EXERC: the same year appears twice

9,467 cases in our base

Each file carries ÚLTIMO (the reference year) and PENÚLTIMO (the prior one, as reported now). Filtering without this column adds two years into one figure. And next year's PENÚLTIMO is this year's ÚLTIMO RESTATED — comparing them is how you discover the company redid its statements.

The same account appears TWICE with different values

1,461 cases in our base

Same company code, same year, same ordering, same account — and two values, with nothing to tell them apart. Whoever takes the first row gets one; whoever takes the last gets the other; both believe they read the file correctly. We do not choose: we withhold, with a flag.

In the statement of changes in equity, the account code is not enough

The statement of changes in equity has an extra dimension: the equity column. Filtering by company, ordering and account returns ONE row in the balance sheet, income and cash-flow statements — and several here. An external auditor found this in the coordinates we publish: six rows for one company-year. An ambiguous coordinate is worse than a missing one, because whoever picks in the dark finds a number that EXISTS.

The price history is not adjusted for splits

897 cases in our base

The exchange's price file carries the price AS TRADED on the day. After a split the price halves without the company losing value — and an unadjusted series shows a 50% drop that never happened. Anyone computing returns straight from the file must adjust for these events.

The file is latin-1 and the separator is a semicolon

Opening it as UTF-8 breaks on any accented character — and account names are full of them. The separator is a semicolon, not a comma, because the Brazilian decimal mark is a comma. Trivial mistakes that cost the first hour of anyone who tries.

What we do when there is no way to decide

We withhold and state the reason. The temptation is to pick a side and move on — and picking in the dark produces a figure that looks auditable and is not. The full list of what we do not publish, each with its reason, is on the data-quality page.

dados.cvm.gov.br · data quality · bank accounts · restatements

Numbers on this page are live. Data version 2026-09-01-supressao-declarada · page generated 2026-09-08 10:36 UTC. If this does not match /saude, you are reading a cached copy.

Home · Methodology · Transparency · Audit it