FCA Companhias Abertas — leitura¶
Leitura (← CVM) do Formulário Cadastral das companhias abertas (fca_cia_aberta_AAAA.zip),
publicado no
portal de dados abertos da CVM.
Veja também: Referência da API · Uso · o IPE e o VLMO, as outras fatias do
CIA_ABERTA/DOC.
Os 10 membros¶
| reader | membro | cols | linhas (2025) |
|---|---|---|---|
FcaCiaAbertaReader |
índice | 9 | 1.301 |
FcaCiaAbertaAuditorReader |
auditor |
15 | 1.069 |
FcaCiaAbertaCanalDivulgacaoReader |
canal_divulgacao |
7 | 1.350 |
FcaCiaAbertaDepartamentoAcionistasReader |
departamento_acionistas |
23 | 0 |
FcaCiaAbertaDriReader |
dri |
26 | 1.007 |
FcaCiaAbertaEnderecoReader |
endereco |
21 | 1.436 |
FcaCiaAbertaEscrituradorReader |
escriturador |
24 | 552 |
FcaCiaAbertaGeralReader |
geral |
26 | 715 |
FcaCiaAbertaPaisEstrangeiroNegociacaoReader |
pais_estrangeiro_negociacao |
7 | 83 |
FcaCiaAbertaValorMobiliarioReader |
valor_mobiliario |
18 | 995 |
Particionado por ano — o date_ref seleciona o ano. Os 10 readers baixam o mesmo
arquivo, então um path_raw escrito por um serve os outros.
⚠️ O índice não segue a convenção de nomes dos próprios satélites¶
| índice | os 9 satélites | |
|---|---|---|
| CNPJ | CNPJ_CIA |
CNPJ_Companhia |
| data de referência | DT_REFER |
Data_Referencia |
| entrega | DT_RECEB |
— |
| denominação | DENOM_CIA |
Nome_Empresarial |
| id do documento | ID_DOC |
ID_Documento |
| versão | VERSAO |
Versao |
O índice usa maiúsculas abreviadas (o estilo do cad_cia_aberta.csv); os satélites usam
CamelCase por extenso. Gerar os 10 membros a partir de um molde único quebra o índice em
silêncio — os contracts são gerados dos headers reais, um por membro, e a divergência é pinada
por teste nas duas direções.
⚠️ departamento_acionistas é header-only¶
Em 2025 esse membro vem com cabeçalho e nenhuma linha. Por isso seu contract declara
nenhuma coluna de CNPJ: o check de CNPJ exige um valor presente e válido, então num quadro
vazio ele falharia com ContractError.
Provado por mutação: acrescentando ("CNPJ_Companhia",) ao contract, a leitura do membro vazio
levanta Column 'CNPJ_Companhia' … holds no valid CNPJ. É a mesma classe de falha dos membros
header-only do CRI — desta vez pega no grounding, não em produção.
⚠️ Dado pessoal (LGPD)¶
Estes são os primeiros CPF do root cia_aberta/:
| coluna | membro | composição em 2025 |
|---|---|---|
CPF_Responsavel |
dri |
1.003 CPF + 4 CNPJ (coluna mista) |
CPF_Responsavel_Tecnico |
auditor |
49 CPF, 1.020 em branco |
CPF_CNPJ_Auditor |
auditor |
1.069 CNPJ válidos — mas misto por definição |
Todos são devolvidos como texto exato e nenhum é declarado coluna de CNPJ: um CPF não
satisfaz o check de CNPJ, então declarar CPF_CNPJ_Auditor quebraria em qualquer ano que traga um
CPF (precedente cedente_devedor.CNPJ do CRA/CRI). As fixtures são header-only por isso.
O escriturador é o único membro com duas colunas de CNPJ de fato — CNPJ_Companhia e
CNPJ_Escriturador, ambas 100% válidas — e as duas são declaradas.
Tipagem¶
Cada reader coage as suas próprias colunas de data — de 1 (canal_divulgacao, endereco) a
9 (geral). Todas chegam 100% ISO ou em branco, e branco vira NaT (não levanta):
auditor.Data_Fim_Atuacao_Responsavel_Tecnico é 100% vazia, e a maioria das 9 do geral é
parcialmente vazia. Todo o restante é texto exato da fonte.
Uso¶
from datetime import date
from pathlib import Path
from filings_cvm.ingestion.cia_aberta import FcaCiaAbertaGeralReader, FcaCiaAbertaValorMobiliarioReader
# Dados gerais de registro (9 colunas de data):
df_geral = FcaCiaAbertaGeralReader(date_ref=date(2025, 6, 15)).read()
# Valores mobiliários emitidos, guardando o .zip cru na camada bronze:
df_vm = FcaCiaAbertaValorMobiliarioReader(
date_ref=date(2025, 6, 15),
path_raw=Path("/data/bronze/cvm/fca"),
).read()
O frame devolvido carrega, além das colunas da fonte, as seis colunas de proveniência.
META¶
A especificação da CVM sai em MetaFcaCiaAbertaReader (o 40º Meta reader) — veja
META. Seus 10 contadores de campo (9/15/7/23/26/21/24/26/7/18) batem exatamente com os
headers reais, então a META confirma a forma de cada membro de forma independente.
⚠️ É o caso mais forte do portal para "a URL da META é constante por dataset e jamais derivada":
o arquivo é fca_cia_aberta.zip — o único META do portal publicado sem o prefixo meta_ —
enquanto os 10 membros internos são prefixados meta_fca_cia_aberta*. As duas derivações óbvias
dão 404 (meta_fca_cia_aberta.zip e meta_fca_cia_aberta.txt), enquanto o dataset vizinho
CIA_ABERTA/CAD serve meta_cad_cia_aberta.txt normalmente. O prefixo não é política do
portal: varia por dataset.