Registro cadastral de fundos e classes
Stable ID: cvm.fundos.cad_fi/cad_fi
Contexto semântico
Nome: Registro cadastral de fundos e classes
O que contém: Registro de fundos/classes, administradores, gestores, situação e datas cadastrais, com eventos históricos de registro/re-registro.
Por que consultar: Use para identificar fundos e enriquecer CDA ou informes diários com atributos cadastrais.
Escopo e limitações: O bronze tem fan-out por atribuição de gestor e re-registro; para uma linha corrente por fundo, use a visão silver documentada.
Aliases e nomes oficiais: cad_fi
Evidências:
catalogo/cvm.yml — cad_ficiano_lake/silver/fundos/cad_fi.py
Comece aqui: guia de acesso aos dados
Readiness (label, not a promise): declared:tolerada_com_residuo · materialized:none · queryable:unknown
Declared (catalog YAML)
| field | value |
|---|---|
dataset |
cad_fi |
| parte unica layout | csv_unico |
parte unica vigencia |
ate=(unknown — not declared anywhere), de=(unknown — not declared anywhere) |
chave (parte unica) |
cnpj_fundo, tp_fundo, classe, cpf_cnpj_gestor |
chave_status (parte unica, declared) |
tolerada_com_residuo |
max_linhas_excedentes (parte unica) |
20 |
max_grupos_residuais (parte unica) |
180 |
politica_dedup_silver (parte unica) |
keep_first |
source URL (parte unica) |
https://dados.cvm.gov.br/dados/FI/CAD/DADOS/cad_fi.csv |
Operator notes (verbatim from the catalog comments)
parte unica
# GRAIN (decisao do usuario, opcao (a)): uma linha por fundo por
# atribuicao de gestor — GESTOR/CPF_CNPJ_GESTOR sao parte da chave.
# Este cadastro NAO e um registro por fundo: o mesmo cnpj_fundo+
# tp_fundo+classe aparece varias vezes quando o gestor troca, e
# CPF_CNPJ_GESTOR e NULL/empty em ~58% das linhas (27,041/46,806)
# — por isso fica em chaves_permitem_nulos.
# TOLERADA_COM_RESIDUO (re-medido com probe_dataset direto contra o
# CSV raw real: baixado=2026-08-14 e 2026-08-20, numeros identicos):
# 46,806 linhas, excess=138, dup_groups=124, TODOS nao-exatos
# (exact=0; 117 grupos de 2 linhas + 7 de 4). Categoria CONHECIDA,
# nao misterio individual — os grupos sao eventos de historico do
# cadastro do MESMO fundo+gestor (o gestor e identico dentro de cada
# grupo, pois esta na chave; nenhum grupo e troca de gestor):
# 1) 45 grupos variam os campos de registro (CD_CVM/DT_REG/
# DT_CANCEL/DT_CONST/DT_INI_SIT) — o fundo foi re-registrado
# com novo codigo e datas (ex.: CD_CVM 109009 -> 121369 com
# DT_REG 2009 -> 2021, mesmo CNPJ e gestor);
# 2) 79 grupos tem campos de registro identicos e variam so em
# prestadores/datas de exercicio (CNPJ_AUDITOR, CNPJ_CUSTODIANTE,
# CNPJ_ADMIN, DT_INI_EXERC/DT_FIM_EXERC, DT_PATRIM_LIQ —
# CVM publica mais de uma linha para a mesma inscricao);
# 3) 0 grupos com VL_PATRIM_LIQ divergindo na mesma DT_PATRIM_LIQ
# (nenhuma contradicao de valor; variacoes de patrimonio sempre
# acompanham DT_PATRIM_LIQ diferente).
# CORRECAO ao comentario anterior ("grupos de fundo SEM gestor"):
# apenas 41/124 grupos tem CPF_CNPJ_GESTOR em branco; 83 tem gestor.
# So 1/124 grupos varia em SIT (confirma a leitura historica, nao erro).
# Chave nao fecha com acrescimos honestos (re-medido): +cd_cvm=93,
# +dt_reg,+dt_cancel=93, +cnpj_auditor=74, combinacao plena de
# colunas de identidade=33; so adicionar colunas de VALOR
# (VL_PATRIM_LIQ, DT_PATRIM_LIQ) chega a 0 — exatamente o que o gate
# existe para impedir (numero na chave derrota o proposito). Cap
# excesso exato 20 (medido 0 hoje, folga para republicacao pontual);
# cap grupos residuais 180 (~1,45x os 124 medidos — categoria
# conhecida e estavel em 2 baixadas/6 dias). Cada grupo residual e
# escrito em _residuos.json ao lado da particao promovida; a visao
# silver "current fund" (uma linha por cnpj_fundo, regra de
# desempate documentada) resolve o fan-out a jusante — ver
# ciano_lake/silver/fundos/cad_fi.py e ARCHITECTURE.md Sec 6.12.
Observed runs (from meta/runs manifests)
Last good run:
| field | value |
|---|---|
timestamp |
20260820T121105 |
outcome |
ok |
exit_code |
0 |
rows_written |
41103 |
source_sha256 |
|
manifest_path |
C:\Users\plini\Repos\ciano-lake\data\meta\runs\cad_fi\20260820T121105.json |
competencia (scoped) |
(unscoped — not period-specific proof) |
Latest failed attempt (kept distinct from the last good run):
| field | value |
|---|---|
timestamp |
20260818T141103 |
outcome |
error |
exit_code |
1 |
error |
cad_fi: Quality check failed: [PASS] row_count: 46,807 rows (validates > 0) |
| [PASS] null_rate_cnpj_fundo: cnpj_fundo: 0/46,807 null/empty (0.00%) | |
| [PASS] null_rate_tp_fundo: tp_fundo: 0/46,807 null/empty (0.00%) | |
| [FAIL] uniqueness: 138 duplicate rows on key [cnpj_fundo, tp_fundo, classe, cpf_cnpj_gestor] (46,807 total, 46,669 distinct) | |
manifest_path |
C:\Users\plini\Repos\ciano-lake\data\meta\runs\cad_fi\20260818T141103.json |
competencia (scoped) |
(unscoped) |
Observed residuals (tolerada_com_residuo evidence)
(none observed — either the table has no residual tolerance, or the coverage inventory has not run; absence is not proof of absence)
Materialized (coverage inventory, per environment)
(no coverage inventory available — run tools/coverage_inventory.py collect and pass the JSONL to the publisher; without it nothing is claimed about what physically exists)
Deep documentation (curated, grounded in the declarations above)
Fund registry (snapshot, daily). The grain is one row per fund per manager assignment — the manager identifier is part of the declared key — so this table is NOT one row per fund, and the silver current-fund view is the only safe join target on cnpj_fundo alone.
Grain: one row per fund per manager assignment (plus re-registration events)
Units: (unknown — not declared anywhere)
Safe-join guidance:
- NEVER join on cnpj_fundo alone against bronze cad_fi: it multiplies rows (manager fan-out). Join on the silver current-fund view (one row per cnpj_fundo, tie-break documented) — ciano_lake/silver/fundos/cad_fi.py.
- cpf_cnpj_gestor is NULL/empty in ~58% of rows and is whitelisted in the key's null-rate gate; NULL manager rows still participate in the grain.
Curated, evidence-backed lineage (not Bruin ordering):
| from | to | kind | evidence |
|---|---|---|---|
cvm.fundos.cad_fi/cad_fi |
silver current-fund view (cnpj_fundo unique) |
curated | ciano_lake/silver/fundos/cad_fi.py (dedup policy keep_first applied there, never in bronze) |
Evidence references:
catalogo/cvm.yml — cad_fi entry (GRAIN decision + measured residual categories)ciano_lake/silver/fundos/cad_fi.pyARCHITECTURE.md §6 (the cad_fi fan-out rule)
Postgres-queryable
(unknown — publication state is a publisher fact, filled at publication time; it is never inferred from materialization)