Agente de IA para Gestão de Portfólio de Crédito

14 de December de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que auxilia na gestão de portfólios de crédito, otimizando a alocação de recursos com base em análises de risco.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para um agente de IA destinado à gestão de portfólios de crédito. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.

O objetivo principal é otimizar a alocação de recursos em portfólios de crédito, utilizando análises contínuas de risco para fornecer insights precisos e ajustar estratégias de gestão em tempo real.

2. Contexto e Problema

Cenário Atual

A gestão de portfólios de crédito enfrenta desafios significativos devido a ineficiências na análise de risco e alocação de recursos. Esse cenário resulta em decisões subótimas e potencialmente prejudiciais ao desempenho financeiro.


Problemas Identificados

  • Ineficiências na gestão de portfólios: Falta de análises precisas de risco que levam a alocações inadequadas de recursos.
  • Necessidade de otimização: A alocação de recursos precisa ser constantemente ajustada para maximizar o retorno e minimizar o risco.

3. Impactos Esperados

A implementação deste agente de IA visa alcançar os seguintes resultados:

  • Melhorar a precisão das análises de risco e, consequentemente, a alocação de recursos.
  • Otimizar a gestão de portfólios de crédito com ajustes em tempo real.
  • Reduzir riscos financeiros associados a decisões de investimento inadequadas.

4. Visão Geral da Solução

O agente de IA para gestão de portfólio de crédito analisa continuamente os portfólios, aplica regras de análise de risco e fornece recomendações para otimizar a alocação de recursos. A seguir são detalhadas todas as especificações funcionais necessárias para que esse agente atue como um assistente eficiente e autônomo na gestão de portfólios de crédito.

A solução consiste em um fluxo de automação composto por 3 agentes de IA. O processo inicia com a validação dos dados do portfólio e termina com a geração de recomendações de otimização.

A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.

Agentes Função Principal
Agente de Padronização e Validação de Dados de Portfólio (RF 1) Validar e padronizar os dados do portfólio de crédito para análise.
Agente de Cálculo de Risco e Sensibilidades (RF 2) Calcular métricas de risco e sensibilidades para o portfólio.
Agente de Otimização de Alocação e Recomendações (RF 3) Gerar recomendações de rebalanceamento para otimizar a alocação de recursos.

5. Protótipos

Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que o cliente receberá. Explore os links abaixo para entender melhor a solução em ação.

6. Requisitos Funcionais

RF 1. Agente de Padronização e Validação de Dados de Portfólio

1.1 Tarefa do Agente

Validar, higienizar e padronizar o payload do portfólio de crédito para análise, produzindo um dataset consistente e completo.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON bruto do portfólio de crédito. Este documento contém informações detalhadas sobre as posições de crédito e deve ser validado e padronizado antes da análise de risco.

# 2. Objetivo
Validar e padronizar os dados do portfólio, corrigindo inconsistências e preparando o dataset para a próxima etapa de análise.

# 3. Regras que você deve seguir para gerar sua resposta
- Campos obrigatórios por posição: posicao_id, devedor_id, produto_tipo, modalidade_taxa, taxa_nominal_anual, notional ou saldo_devedor (ao menos um), moeda, prazo_meses, atraso_dias, data_contratacao. Se algum faltar, registre inconsistencia com acao="corrigir" e marque flags.dados_criticos_faltantes=true.
- Normalização de percentuais: se taxa_nominal_anual > 1.0, interprete como percentual e converta para decimal (ex.: 18.25% -> 0.1825). Faça o mesmo para spread_anual.
- Determinação de EAD: use saldo_devedor se informado e >0; caso contrário, use notional. Converta para moeda_base usando fx_table; se fx ausente para a moeda, crie inconsistencia e marque dados_prontos=false.
- Consolidação de garantias: some valores de garantias (convertidos à moeda_base) em colateral_valor. Se ausentes, assuma 0.
- Duplicidade: se existir mesma combinação posicao_id + devedor_id repetida, mantenha a última ocorrência e marque a anterior como duplicada com acao="excluir".
- Valores inválidos: zere negativos para atraso_dias e prazo_meses; se prazo_meses=0, defina 1 e registre inconsistencia (assumir_default).
- Indexadores: mapeie variantes textuais (ex.: "cdi", "CDI DI") para chaves canônicas [CDI, IPCA, SELIC, USD, NA].
- Modalidade de taxa: mapeie variantes para [prefixado, pos, flutuante]. Se modalidade_taxa incompatible com indexador (ex.: prefixado com indexador != NA), mantenha modalidade_taxa e ajuste indexador para NA, registrando inconsistencia.
- Duration aproximada: duration_aprox_anos = max(0.1, prazo_meses/12) para crédito amortizante simples; se produto_tipo for cartao (rotativo), use 0.25; se consignado/CDC padrao, use prazo_meses/18 como aproximação. Registre regra aplicada.
- Saneamento de taxa: se taxa_nominal_anual < 0, defina 0 e registre inconsistencia; se > 1.0 após conversão, mantenha valor.
- Sinalizadores de completude: dados_prontos=true somente se não houver inconsistencias com acao="corrigir" pendentes, se toda posicao tiver moeda igual à moeda_base e se fx de todas as moedas utilizadas estiver presente.
- Propague constraints intacto para o próximo agente. 
1.3 Configurações do Agente

1.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de um JSON bruto do portfólio de crédito via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload do JSON na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é um JSON bruto contendo informações do portfólio de crédito.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 100.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado e padronizado, contendo as posições normalizadas e as inconsistências identificadas.
  • Exemplo de Estrutura de Output:
     {"portfolio_id": string, "data_referencia": "YYYY-MM-DD", "moeda_base": string, "dados_prontos": true|false, "inconsistencias": [{"posicao_id": string|null, "campo": string, "problema": string, "acao": "corrigir|assumir_default|excluir"}], "posicoes_normalizadas": [{"posicao_id": string, "devedor_id": string, "setor": string, "produto_tipo": string, "modalidade_taxa": string, "indexador": string, "taxa_nominal_anual": decimal_em_decimal (ex.: 0.1825), "spread_anual": decimal, "EAD": decimal_em_moeda_base, "moeda": string (igual à moeda_base), "prazo_meses": int, "atraso_dias": int, "rating_interno": string, "colateral_valor": decimal_em_moeda_base, "duration_aprox_anos": decimal, "flags": {"dados_criticos_faltantes": bool, "duplicada": bool}}], "constraints": {...}} 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 10.000 caracteres, podendo variar conforme a complexidade do portfólio descrito.

1.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

1.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

1.3.5 Memória

  • Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
  • Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Cálculo de Risco e Sensibilidades (RF 2).

1.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Cálculo de Risco e Sensibilidades (RF 2).

RF 2. Agente de Cálculo de Risco e Sensibilidades

2.1 Tarefa do Agente

Calcular métricas de risco por posição, devedor, segmento e carteira, incluindo perdas esperadas, concentração, duration e impactos de choques.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo o output do Agente de Padronização e Validação de Dados de Portfólio, contendo as posições normalizadas e constraints.

# 2. Objetivo
Calcular métricas de risco detalhadas e sensibilidades para o portfólio, utilizando as informações padronizadas recebidas.

# 3. Regras que você deve seguir para gerar sua resposta
- Pré-condição: se dados_prontos=false, defina risco_calculado=false e não calcule métricas; registre regra de bloqueio.
- PD_proxy por atraso_dias: 0: 0.01; 1–30: 0.02; 31–60: 0.05; 61–90: 0.10; >90: 0.25. Ajuste por rating_interno: A: x0.5; B: x0.8; C: x1.0; D: x1.5; E: x2.0; NA: x1.1. Limite PD a [0.001, 0.99].
- LGD_proxy por garantia: base 0.45 sem garantia. Com garantia: LGD = max(0.10, 1 - (colateral_valor/EAD)*(1 - haircut)); haircuts: imovel=0.20, veiculo=0.40, fiducia=0.15, outro=0.35. Limite LGD a [0.10, 0.95]. Se EAD=0, use LGD=0.45.
- EL por posicao: EL = PD_proxy * LGD_proxy * EAD.
- UL_proxy por posicao: UL_proxy = sqrt(PD_proxy * (1 - PD_proxy)) * EAD * fator_correlacao; fator_correlacao por produto: imobiliario=0.20, PJ_capital_giro=0.25, consignado=0.15, CDC=0.18, cartao=0.30, default=0.22.
- RAR_proxy (retorno ajustado ao risco): RAR_proxy = (retorno_esperado - custo_capital_risco) onde retorno_esperado = max(0, taxa_nominal_anual - constraints.custo_funding_anual) * EAD - EL; custo_capital_risco = constraints.custo_capital * UL_proxy.
- Agregações: some EAD, EL e UL_proxy na carteira; VaR_proxy_carteira = 2.33 * UL_proxy_total (aprox. 99% normal); duration_ponderada_anos = sum(duration_pos*EAD)/EAD_total.
- Concentração: calcule pct_EAD por devedor e por setor; flags de concentração quando pct_EAD > limites definidos em constraints.limites (padrão: devedor 20%, setor 30% se ausentes).
- Sensibilidade de taxa: choque +100 bps em ativos sensíveis a juros (prefixado e pos/indexados domésticos): impacto_valor = - duration_ponderada_anos * 0.01 * EAD_sensivel. Reporte sinal negativo como perda.
- Stress de colateral -20%: recompute LGD_proxy com colateral_valor * 0.8 e recalcule EL_total.
- Flags de risco alto por posição: risco_alto=true se PD_proxy>=0.10 ou EL/EAD>=0.08 ou atraso_dias>90.
- Listar em regras_aplicadas os parâmetros efetivos (limites usados, haircuts, fatores). Propague constraints para o próximo agente. 
2.3 Configurações do Agente

2.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON estruturado contendo as posições normalizadas e constraints do portfólio de crédito.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 100.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON detalhado contendo as métricas de risco calculadas e as sensibilidades identificadas.
  • Exemplo de Estrutura de Output:
     {"portfolio_id": string, "data_referencia": "YYYY-MM-DD", "risco_calculado": true|false, "metricas_carteira": {"EAD_total": decimal, "EL_total": decimal, "UL_proxy": decimal, "VaR_proxy": decimal, "duration_ponderada_anos": decimal, "concentracao_top10_pct": decimal, "concentracao_por_devedor": [{"devedor_id": string, "pct_EAD": decimal}], "concentracao_por_setor": [{"setor": string, "pct_EAD": decimal}], "sensibilidade_taxa_+100bps": decimal, "stress_colateral_-20pct": {"EL_total": decimal}}, "posicoes_metricas": [{"posicao_id": string, "EAD": decimal, "PD_proxy": decimal, "LGD_proxy": decimal, "EL": decimal, "UL_proxy": decimal, "RAR_proxy": decimal, "flags": {"risco_alto": bool, "concentracao": bool}}], "regras_aplicadas": [{"codigo": string, "descricao": string}], "constraints": {...}} 
  • Número de caracteres esperado: O JSON final deve ser detalhado e informativo, com um tamanho estimado em torno de 15.000 caracteres, podendo variar conforme a complexidade do portfólio analisado.

2.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

2.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Utiliza lógica interna para calcular métricas de risco e sensibilidades.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

2.3.5 Memória

2.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Otimização de Alocação e Recomendações (RF 3).

RF 3. Agente de Otimização de Alocação e Recomendações

3.1 Tarefa do Agente

Gerar recomendações de rebalanceamento para otimizar a alocação de recursos, respeitando limites e apetite de risco.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo o output do Agente de Cálculo de Risco e Sensibilidades, incluindo as métricas de risco calculadas e as sensibilidades.

# 2. Objetivo
Gerar recomendações de rebalanceamento para otimizar a alocação de recursos no portfólio de crédito.

# 3. Regras que você deve seguir para gerar sua resposta
- Objetivos-alvo: se constraints.apetite_risco existir, use seus alvos; caso contrário, defina padrões: reduzir EL_total em ≥10%; manter concentração por devedor ≤20% e por setor ≤30%; duration alvo dentro de [1.0, 3.0] anos; RAR_proxy marginal mínimo de +50 bps sobre custo_funding.
- Heurística de seleção: ordene posições por (EL/EAD) decrescente e por RAR_proxy crescente. Priorize reduzir_exposicao nas posições com risco_alto=true, RAR_proxy<0 e que violam limites de concentração.
- Aumentar_exposicao: somente em posições com PD_proxy≤0.05, LGD_proxy≤0.40, RAR_proxy>0 e que não provoquem violações de concentração; limite incremento por devedor a 2% do EAD_total e por setor a 5% do EAD_total, salvo limites explícitos em constraints.
- Hedge: se duration_ponderada_anos > limite superior do alvo, recomende hedge de taxa (ex.: reduzir sensibilidade) equivalente a reduzir duration em 0.25–0.50 anos; se < limite inferior, recomende alongamento equivalente. Quantifique impacto_esperado por delta_duration * EAD_sensivel * 1%.
- Tamanho das ordens: respeite constraints.limites.lote_minimo (padrão 10000 na moeda_base) e constraints.limites.max_turnover_pct (padrão 15% do EAD_total por ciclo). Trunque recomendações abaixo de 0.5 * lote_minimo.
- Parar quando: (i) todos os limites de concentração respeitados; (ii) EL_total projetado ≤ meta; (iii) ganho marginal de RAR_proxy_total < 5 bps; ou (iv) atingir max_turnover_pct.
- Necessita_aprovacao_humana=true se qualquer recomendação individual exceder 3% do EAD_total, implicar venda com perda contábil explícita sinalizada em constraints.regras_negocio.proibir_venda_abaixo_par=false, ou se conformidade_limites=false após plano.
- Sempre calcular e reportar impacto_esperado por recomendação usando diferenças entre métricas antes e depois (projetadas) com base em reduções lineares proporcionais ao ajuste de quantidade.
- Se risco_calculado=false, não gerar recomendações; retorne plano vazio e necessita_aprovacao_humana=true com justificativa em criterios_decisao. 
3.3 Configurações do Agente

3.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON detalhado contendo as métricas de risco calculadas e as sensibilidades do portfólio de crédito.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 100.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo as recomendações de rebalanceamento e o impacto esperado das mesmas.
  • Exemplo de Estrutura de Output:
     {"portfolio_id": string, "plano_rebalanceamento": {"objetivos": {"reduzir_EL_para": decimal, "concentracao_devedor_max": decimal, "concentracao_setor_max": decimal, "duration_target_intervalo_anos": [decimal, decimal], "meta_RAR_proxy_min_bps": decimal}, "recomendacoes": [{"tipo": "reduzir_exposicao|aumentar_exposicao|manter|hedge", "alvo": {"posicao_id": string|null, "devedor_id": string|null, "setor": string|null}, "quantidade_alvo_moeda_base": decimal, "prioridade": "alta|media|baixa", "racional": string, "impacto_esperado": {"delta_EL": decimal, "delta_RAR_proxy": decimal, "delta_concentracao_devedor_pct": decimal, "delta_concentracao_setor_pct": decimal, "delta_duration_anos": decimal}}], "resumo_impacto": {"EL_total_antes": decimal, "EL_total_depois": decimal, "RAR_proxy_total_antes": decimal, "RAR_proxy_total_depois": decimal, "duration_antes": decimal, "duration_depois": decimal, "conformidade_limites": true|false}, "necessita_aprovacao_humana": true|false, "criterios_decisao": [{"codigo": string, "descricao": string}]}} 
  • Número de caracteres esperado: O JSON final deve ser claro e direto, com um tamanho estimado em torno de 20.000 caracteres, podendo variar conforme a complexidade das recomendações geradas.

3.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

3.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Utiliza lógica interna para calcular recomendações de rebalanceamento.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

3.3.5 Memória

  • Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
  • Visibilidade da Resposta: A resposta gerada por este agente é o entregável final e não é passada para outros agentes internos.

3.3.6 Regras de Orquestração e Transição

A execução deste agente finaliza o fluxo. As recomendações geradas são o resultado que deve ser disponibilizado ao usuário.

© 2025 prototipe.ai. Todos os direitos reservados.