Pular para conteúdo

Cadastro de Plataformas de Crowdfunding (CROWDFUNDING) — leitura

Leitura (← CVM) do cadastro das plataformas eletrônicas de investimento participativo (crowdfunding) registradas na CVM, publicado no portal de dados abertos da CVM. Estes readers inauguram o portal root crowdfunding/ (irmão de coord_oferta/, intermed/, …).

Quarta fatia da Wave 4 do #41. ZIP multi-membro, no molde do COORD_OFERTA / INTERMED, com os satélites sem data do ADM_CART.

Veja também: Referência da API · Uso.


Descrição

Reader Membro do cad_crowdfunding.zip Colunas Colunas de data Chave CNPJ
CrowdfundingReader cad_crowdfunding.csv (registro) 17 2 CNPJ
CrowdfundingAdmRespReader cad_crowdfunding_adm_resp.csv 2 0 CNPJ (da plataforma)
CrowdfundingSociosReader cad_crowdfunding_socios.csv 2 0 CNPJ (da plataforma)

CROWDFUNDING/CAD publica um ZIP de três membros: o registro da plataforma (CNPJ, denominação social/comercial, data de registro, situação, site, e-mail, endereço e telefone) e duas tabelas satélite — administradores responsáveis e sócios. Como o cad_fi.csv, é um retrato do estado atual numa URL fixa que a CVM sobrescreve no lugar — por isso não há date_ref, e um path_raw persistido é o único registro do que o cadastro dizia no dia da coleta. Nenhum grão é assumido.

⚠️ Os 3 membros não são um split pf/pj — são um registro mais dois satélites, todos chaveados pelo CNPJ da plataforma (100% válidos nos três).

⚠️ Os 2 satélites não têm NENHUMA coluna de data (_DATE_COLS = (), a forma do ADM_CART) — todas as suas colunas voltam como texto exato. Eles carregam dado pessoal (ADM_RESP; SOCIO mistura pessoa física e jurídica) mas nenhuma coluna de CPF: o único identificador validado é o CNPJ da plataforma.

⚠️ O registro é mais enxuto que os irmãosnão tem DT_CANCEL, MOTIVO_CANCEL nem CD_CVM, e grafa o site como WEBSITE (não SITE_WEB, do COORD_OFERTA) e o DDD como DDD (não DDD_TEL). Copiar o contract de um irmão embarcaria colunas erradas com todos os testes verdes — por isso o contract é gerado do header publicado e pinado a tests/fixtures/cad_crowdfunding/*_header.csv, e a diferença tem teste próprio.

Tipagem

As colunas DT_REG / DT_INI_SIT do registro viram date puro (brancos viram NaT); nos dois satélites nada é convertido. Todo o restante mantém o texto exato da CVM — inclusive CEP, TEL e DDD, que o META declara numeric mas são identificadores, não quantidades (um CEP com zero à esquerda sobrevive). O mapa de tipos é derivado do contrato, então os dois não podem divergir.

META

⚠️ A META deste dataset é um .zip de três membros (meta_cad_crowdfunding.zip), não um .txt — o palpite meta_cad_crowdfunding.txt devolve 404. A URL do META é uma constante por dataset, nunca derivada da forma de um irmão. Como no INTERMED / COORD_OFERTA, as section voltam assimétricas (cad_crowdfunding, adm_resp, socios), porque um membro tem o nome do stem puro e não tem sufixo <stem>_ a remover — comportamento documentado da base, honrado e pinado por teste.


Política de retry

Todo reader aceita retry_policy: RetryPolicy | None = None e declara o seu padrão em _RETRY_POLICY (padrão paciente: 5 tentativas, backoff ~2, 4, 8, 10 s). Veja a visão geral da leitura.


Exemplos

Plataformas registradas

from filings_cvm.ingestion.crowdfunding import CrowdfundingReader

df_ = CrowdfundingReader().read()
# df_[["CNPJ", "DENOM_SOCIAL", "SIT", "WEBSITE", "MUN", "UF"]]

Sócios + persistir a camada bronze

from pathlib import Path
from filings_cvm.ingestion.crowdfunding import CrowdfundingSociosReader

df_ = CrowdfundingSociosReader(
    path_raw=Path("/data/bronze/cvm/cad_crowdfunding"),
).read()
# df_[["CNPJ", "SOCIO"]] — sem coluna de data: tudo é texto exato.
# o ZIP inteiro e os três membros ficam em disco: um path_raw de qualquer
# reader serve os outros (todos baixam o mesmo arquivo).

Cada read levanta OSError (falha de download), ContractError (CSV viola o contrato) ou ValueError (membro ausente no arquivo) — falha cedo, sem devolver dados corrompidos.