Pular para conteúdo

Histórico do Cadastro de Fundos (CAD/FI histórico) — leitura

Leitura (← CVM) do log de alterações do cadastro legado de fundos (cad_fi_hist.zip), publicado no portal de dados abertos da CVM.

Veja também: Referência da API · Uso · o retrato do estado atual em Cadastro de Fundos (CAD/FI).


Descrição

cad_fi_hist.zip traz 19 membros, um por atributo mutável do cadastro CAD/FI — cada um é um log de alterações desse atributo. Onde o CadastroFiReader dá o retrato atual, estes readers dão a história: quando cada valor valeu, e por qual janela.

Cada membro tem a mesma forma: CNPJ_FUNDO, DT_REG, a(s) coluna(s) de valor do atributo, e as datas de vigência (DT_INI_*, e — na maioria — DT_FIM_*). Cada um tem o seu reader:

Reader Membro Atributo
CadastroFiHistAdminReader cad_fi_hist_admin administrador
CadastroFiHistAuditorReader cad_fi_hist_auditor auditor
CadastroFiHistClasseReader cad_fi_hist_classe classe
CadastroFiHistCondomReader cad_fi_hist_condom condomínio
CadastroFiHistControladorReader cad_fi_hist_controlador controlador
CadastroFiHistCustodianteReader cad_fi_hist_custodiante custodiante
CadastroFiHistDenomComercReader cad_fi_hist_denom_comerc denominação comercial
CadastroFiHistDenomSocialReader cad_fi_hist_denom_social denominação social
CadastroFiHistDiretorRespReader cad_fi_hist_diretor_resp diretor responsável
CadastroFiHistExclusivoReader cad_fi_hist_exclusivo exclusivo
CadastroFiHistExercSocialReader cad_fi_hist_exerc_social exercício social
CadastroFiHistFicReader cad_fi_hist_fic fundo de cotas
CadastroFiHistGestorReader cad_fi_hist_gestor gestor
CadastroFiHistPublicoAlvoReader cad_fi_hist_publico_alvo público-alvo
CadastroFiHistRentabReader cad_fi_hist_rentab rentabilidade
CadastroFiHistSitReader cad_fi_hist_sit situação
CadastroFiHistTaxaAdmReader cad_fi_hist_taxa_adm taxa de administração
CadastroFiHistTaxaPerfmReader cad_fi_hist_taxa_perfm taxa de performance
CadastroFiHistTribLprazoReader cad_fi_hist_trib_lprazo tributação de longo prazo

Os 19 baixam o mesmo ZIP, então um path_raw gravado por qualquer um serve aos outros. Como o CAD/FI, é um retrato do estado atual (URL fixa, sem partição AAAAMM): os readers não aceitam date_ref, e a CVM sobrescreve o arquivo no lugar — grave path_raw para guardar o retrato do dia. Um log de alterações naturalmente tem muitas linhas por fundo, então nenhum reader declara granularidade única.

Tipagem

Toda coluna é texto (str) exceto as DT_*, convertidas para date puro (vazios viram NaT). TAXA_ADM / VL_TAXA_PERFM mantêm o texto decimal exato da CVM — nunca float. CPF_CNPJ_GESTOR (no membro gestor) contém um CPF quando PF_PJ_GESTOR == "PF", por isso não é validado como CNPJ. O mapa de tipos é derivado do contrato, então os dois não podem divergir.


Exemplos

Reconstruir quando um fundo esteve em funcionamento

from filings_cvm.ingestion.fi import CadastroFiHistSitReader

sit = CadastroFiHistSitReader().read()
# uma linha por (fundo, período de situação); use DT_INI_SIT / DT_FIM_SIT.
janelas = sit[sit["SIT"] == "EM FUNCIONAMENTO NORMAL"]

Histórico de taxa de administração de um fundo

from decimal import Decimal
from filings_cvm.ingestion.fi import CadastroFiHistTaxaAdmReader

taxa = CadastroFiHistTaxaAdmReader().read()
taxa["TAXA"] = taxa["TAXA_ADM"].dropna().map(Decimal)   # texto exato → Decimal

Persistir o retrato (camada bronze) uma vez para os 19

from datetime import date
from pathlib import Path

# Um download; o ZIP e os 19 CSVs ficam em disco para os outros readers.
CadastroFiHistSitReader(
    path_raw=Path(f"/data/bronze/cvm/cad_fi_hist/{date.today():%Y%m%d}"),
).read()

Cada read levanta OSError (falha de download), ContractError (CSV viola o contrato) ou ValueError (o ZIP não contém o membro esperado) — falha cedo, sem devolver dados corrompidos.