DataBolsa docs
Referência da APIDados de mercadoCrédito privado

Classes de FIDC por competência: patrimônio, carteira e inadimplência

Fundos de direitos creditórios do informe mensal da CVM. O FIDC tem superfície própria e não aparece nas séries de `/funds` porque sua cota é marcada a **laudo** e não passa pelo informe diário — servi-lo por lá devolveria fundo sem série. A chave é a **classe**, não o fundo: um fundo multiclasse tem um CNPJ por classe, e as classes têm prioridades diferentes. `entity_kind` vem null nas competências anteriores a 2020-11, quando a fonte publicava o CNPJ do fundo e o grão era outro — é o marcador da era, não uma lacuna. As duas séries de inadimplência **não se somam**: em `*_with_risk` o cedente responde pelo crédito, em `*_no_risk` o fundo carrega a perda. `impaired_ratio` é fração da **carteira** (não do patrimônio) e vem null quando o inadimplente declarado excede a carteira — nesse caso `impaired_exceeds_portfolio` é true e os componentes brutos continuam na resposta. `overdue_*` (vencido e não pago) e `impaired_*` (reconhecido como inadimplente) também são rubricas distintas e nunca substituem uma à outra. Um FIDC feeder pode declarar recebíveis diretos e inadimplência iguais a zero porque carrega cotas de outros FIDCs. Isso significa risco em outra camada, não ausência de risco; `/funds/:cnpj/holdings` e `/funds/:cnpj/invested-funds` cobrem fundos ordinários e podem vir vazios nesse caso. Sem `date`, serve a competência mais recente com dado. **Os filtros daqui são de CADASTRO e tamanho** (`cnpj`, `q`, `minNetWorth`). Para cortar por uma MEDIDA — grande E inadimplente, inadimplência acima de um limiar, os N maiores de um recorte — use `rankObjects` / `aggregateObjects` com `where`: é uma chamada, contra paginar as 4.208 classes e calcular do lado de fora. Atenção à escala ao compor: `impaired_ratio` é FRAÇÃO (0,05 = 5%) e `top_originator_pct` é PERCENTUAL (35,2 = 35,2%).

GET
/v1/credit/fidc
AuthorizationBearer <token>

In: header

Query Parameters

cursor?string
limit?integer
Default100
Range1 <= value <= 1000
q?string

Busca pela denominação social da classe.

cnpj?string

CNPJ da CLASSE (14 dígitos).

Match^\d{14}$
date?string

Competência exata (fim de mês). Default: a mais recente.

Match^\d{4}-\d{2}-\d{2}$
minNetWorth?number

Patrimônio líquido mínimo, em BRL.

Response Body

curl -X GET "https://api.databolsa.com/v1/credit/fidc?cursor=string&limit=100&q=string&cnpj=string&date=string&minNetWorth=0"
{
  "data": [
    {
      "cnpj": "string",
      "reference_date": "string",
      "entity_kind": "string",
      "name": "string",
      "net_worth": 0,
      "net_worth_avg": 0,
      "total_assets": 0,
      "cash": 0,
      "portfolio": 0,
      "receivables_with_risk": 0,
      "overdue_with_risk": 0,
      "impaired_with_risk": 0,
      "overdue_no_risk": 0,
      "impaired_no_risk": 0,
      "impaired_total": 0,
      "delinquency_scope": "with_risk_only",
      "impaired_ratio": 0,
      "overdue_ratio": 0,
      "impaired_exceeds_portfolio": true,
      "impaired_ratio_absent_reason": "string",
      "portfolio_to_net_worth": 0,
      "top_originator_doc": "string",
      "top_originator_pct": 0,
      "top_originator_pct_implausible": true
    }
  ],
  "meta": {
    "next_cursor": "string",
    "count": 0,
    "total": 0,
    "subject": {
      "property1": "string",
      "property2": "string"
    },
    "order": "asc"
  }
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string"
}

Rentabilidade da série com o CDI ao lado

Quanto a série rendeu, **contra o CDI do mesmo período**. `/credit/fidc/{cnpj}/series` já dava `return_month_pct` as-filed, e isso responde "quanto rendeu no mês" sem responder nenhuma das perguntas que quem compra sênior faz de verdade: quanto no ano, quanto desde que entrei e quanto foi o CDI enquanto isso. Uma sênior que rende 1,45% no mês é ótima ou péssima conforme o CDI tenha sido 1,12% ou 1,60%. Diferente dos outros blocos do informe, esta rota devolve **série histórica**, não a foto de uma competência — a pergunta só existe ao longo do tempo. **Duas convenções de spread convivem no mercado e significam coisas diferentes.** `pct_of_cdi` é multiplicativo ("110% do CDI"); `spread_annual_pp` é ADITIVO ("CDI + 3,5% a.a."), que é a forma em que o regulamento promete e portanto a única comparável com a meta. Publicar uma chamando-a da outra é erro que só aparece quando o CDI muda de patamar. **`is_reported` não é `has_position`.** A fonte continua publicando a série amortizada com cota 0 e rentabilidade 0; quem filtrar só pela primeira mostra série fantasma rendendo 0% e puxa a média da classe para baixo. A série ENCERRADA fica na resposta de propósito — omiti-la produziria viés de sobrevivente no track record da gestora. O acumulado encadeia só mês OBSERVADO: buraco na série não vira zero. Compare `months_in_window` com os meses do período antes de concluir que um acumulado está baixo. Mês com `return_implausible` (a fonte publica coisas como -1.165,85%) fica fora do encadeamento, mas continua as-filed na linha.

Mix de risco SCR da carteira (Res. CMN 2.682) — não é rating de agência

Distribuição da carteira pelos níveis **SCR** da Resolução CMN 2.682 (AA a H), atribuídos pela própria instituição ao devedor e à operação. **Isto não é rating de agência classificadora e não é comparável com `brAAA`.** As duas escalas usam letras, e confundi-las é o erro que este endpoint mais convida a cometer — o rating de agência vive em `/credit/ratings`. `declares_scr: false` significa que a classe não declarou nível nenhum, o que é diferente de declarar zero numa faixa: menos da metade das classes preenche, e mostrar 0% para quem não declarou seria inventar dado. A série começa em 2023 — a tabela só passa a existir no informe depois da reforma de classes.