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 o Fluxo de Agentes "Propostas de Alocação de Ativos", uma solução de automação projetada para gerar propostas de alocação de ativos personalizadas com base em perfis de investimento. 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 é transformar dados de perfis de investimento em propostas de alocação que maximizem o retorno potencial dentro do perfil de risco aceitável, ajustando automaticamente as propostas com base em mudanças de mercado ou feedback dos clientes.
2. Contexto e Problema
Problemas Específicos
Este agente foi concebido para resolver problemas específicos já conhecidos na análise de perfis de investimento e geração de propostas de alocação de ativos:
- Análise ineficiente de grandes volumes de dados de perfis de investimento.
- Falta de personalização nas propostas de alocação de ativos.
- Dificuldade em ajustar propostas rapidamente com base em mudanças de mercado ou preferências do cliente.
Regras de Solução
- Coleta e Análise de Dados: Coletar e analisar dados de perfis de clientes para identificar padrões e preferências de investimento.
- Geração de Propostas: Gerar propostas de alocação de ativos que maximizem o retorno potencial dentro do perfil de risco aceitável.
- Atualizações Automáticas: Atualizar automaticamente as propostas com base em mudanças de mercado ou feedback dos clientes.
3. Impactos Esperados
A implementação deste fluxo de automação visa alcançar os seguintes resultados:
- Aumento da eficiência na análise de grandes volumes de dados de perfis de investimento.
- Personalização aprimorada das propostas de alocação de ativos.
- Agilidade na atualização de propostas em resposta a mudanças de mercado e feedback dos clientes.
4. Visão Geral da Solução
O agente de IA para propostas de alocação de ativos processa dados de perfis de investimento, aplica regras de personalização e ajusta as propostas dinamicamente com base em mudanças de mercado. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo na elaboração de propostas personalizadas de alocação de ativos.
A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a coleta e análise de dados de perfis de investimento e termina com a atualização automática das propostas com base em dados de mercado e feedback dos clientes.
A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.
| Agentes | Função Principal |
|---|---|
Agente de Coleta e Análise de Dados de Perfis de Investimento (RF 1)
| Coletar e analisar dados de perfis de clientes para identificar padrões e preferências de investimento. |
Agente de Geração de Propostas de Alocação de Ativos (RF 2)
| Gerar uma carteira alvo por classe que maximize o retorno esperado respeitando o perfil de risco final. |
Agente de Execução de Chamada à API de Mercado (RF 3)
| Realizar chamada à API do sistema de dados de mercado para obter indicadores e parâmetros atualizados. |
Agente de Atualização Automática de Propostas (RF 4)
| Recalibrar pesos e métricas da proposta vigente com base em dados de mercado atualizados e/ou feedback do cliente. |
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 Coleta e Análise de Dados de Perfis de Investimento
1.1 Tarefa do Agente
Coletar, normalizar e analisar dados de perfis de clientes para identificar padrões, restrições e preferências de investimento e derivar um escore e categoria de risco final utilizável pelo agente de alocação.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dados de perfis de investimento de clientes em formato JSON. Este JSON inclui informações sobre preferências de investimento, restrições e histórico de investimento dos clientes.
# 2. Objetivo
Coletar, normalizar e analisar esses dados para identificar padrões, restrições e preferências de investimento e derivar um escore e categoria de risco final utilizável pelo agente de alocação.
# 3. Regras que você deve seguir para gerar sua resposta
- Normalização: percentuais sempre como fração entre 0 e 1 com até 3 casas decimais; respeite a moeda de entrada sem conversão; strings em minúsculas sem acentos para chaves de classe.
- Derivação de score_risco (0-1): ponto de partida por perfil_declarado: ultraconservador=0.10, conservador=0.25, moderado=0.50, arrojado=0.75, agressivo=0.90, indefinido=0.50. Ajustes: +0.05 se horizonte_investimento_anos >= 7; +0.05 se necessidade_liquidez == "baixa"; -0.05 se necessidade_liquidez == "alta"; limite inferior 0.05 e superior 0.95.
- Mapeamento de perfil_risco_final por score_risco: [0.00-0.15)->ultraconservador; [0.15-0.35)->conservador; [0.35-0.60)->moderado; [0.60-0.80)->arrojado; [0.80-1.00]->agressivo.
- Limites padrão por classe (aplique apenas às classes presentes em classes_permitidas; classes ausentes não são criadas): caixa:{min 0.02,max 0.20}; renda_fixa:{min 0.20,max 0.95}; multimercado:{min 0.00,max 0.40}; acoes_brasil:{min 0.00,max 0.50}; acoes_internacional:{min 0.00,max 0.50}; internacional_rf:{min 0.00,max 0.30}; alternativos:{min 0.00,max 0.20}. Ajuste por perfil_risco_final: ultraconservador aumenta min de caixa para 0.10 e max de renda_fixa para 0.95; conservador caixa min 0.05; arrojado reduz caixa max para 0.10 e aumenta acoes_* max em +0.10 respeitando teto 0.60; agressivo caixa min 0.02 e acoes_* max total até 0.80 somadas.
- Requisitos de liquidez: se necessidade_liquidez == "alta", defina caixa_min = max(0.10, limite min já ajustado); se "media" use max(0.05, min atual); se "baixa" mantenha min atual. Registre em requisitos_liquidez.caixa_min.
- Restrições: remova quaisquer classes/ativos listados em classes_proibidas/ativos_proibidos das estruturas de limites; se esg_obrigatorio==true, adicione padrão "filtro_esg" em padrões_identificados.
- Preferências: se distribuicao_preferida for fornecida, apenas normalize (somatório=1) e mantenha como referência; não utilize aqui para gerar alocação (somente no agente seguinte), mas registre em preferencias_normalizadas.
- Padrões: registre no mínimo 3 itens com nome e evidência (ex.: "alto_horizonte", "horizonte >= 7 anos"; "alta_liquidez", etc.).
- Saída válida somente se: todas as min e max de limites_por_classe obedecem 0<=min<=max<=1; score_risco e caixa_min dentro de [0,1]. 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 dados de perfis de investimento via API. Na fase de testes, os dados serão enviados manualmente por upload na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um JSON contendo dados de perfis de investimento dos clientes.
-
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 texto com até 10.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo o escore de risco e categoria de risco final, além de padrões e restrições identificadas.
-
Exemplo de Estrutura de Output:
{ "cliente_id": "12345", "perfil_declarado": "moderado", "score_risco": 0.55, "perfil_risco_final": "moderado", "horizonte_anos": 10, "necessidade_liquidez": "media", "restricoes_normalizadas": { "ativos_proibidos": ["acoes_brasil"], "classes_proibidas": [], "esg_obrigatorio": true, "max_concentracao_produto": 0.10, "restricoes_fiscais": [] }, "preferencias_normalizadas": { "classes_favoritas": ["renda_fixa"], "distribuicao_preferida": { "renda_fixa": 0.70, "caixa": 0.30 } }, "classes_permitidas": ["renda_fixa", "caixa"], "padrões_identificados": [{ "nome": "alto_horizonte", "evidencia": "horizonte >= 7 anos" }, { "nome": "alta_liquidez", "evidencia": "necessidade_liquidez == 'alta'" }], "limites_por_classe": { "renda_fixa": { "min": 0.20, "max": 0.60 }, "caixa": { "min": 0.10, "max": 0.20 } }, "requisitos_liquidez": { "caixa_min": 0.10 } } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em 1.500 caracteres.
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 devem ser visíveis para o Agente de Geração de Propostas de Alocação de Ativos (RF 2).
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Geração de Propostas de Alocação de Ativos (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Geração de Propostas de Alocação de Ativos (RF 2).
RF 2. Agente de Geração de Propostas de Alocação de Ativos
2.1 Tarefa do Agente
Gerar uma carteira alvo por classe (e opcionalmente por produto) que maximize retorno esperado respeitando o perfil de risco final, limites de classe, requisitos de liquidez e restrições do cliente.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo o output completo do Agente de Coleta e Análise, que inclui dados normalizados de perfis de investimento de clientes. # 2. Objetivo Gerar uma carteira alvo por classe (e opcionalmente por produto) que maximize retorno esperado respeitando o perfil de risco final, limites de classe, requisitos de liquidez e restrições do cliente. # 3. Regras que você deve seguir para gerar sua resposta - Universo e classes: use exclusivamente as classes presentes em limites_por_classe e classes_permitidas do input. - Dados de referência (usar somente se não vierem no input): retornos_esperados_por_classe padrão (% a.a.): caixa 0.0; renda_fixa 0.06; multimercado 0.09; acoes_brasil 0.12; acoes_internacional 0.10; internacional_rf 0.05; alternativos 0.11. Volatilidades padrão (% a.a.): caixa 0.00; renda_fixa 0.05; multimercado 0.10; acoes_brasil 0.20; acoes_internacional 0.18; internacional_rf 0.06; alternativos 0.15. - Critério de alocação: comece com o centro dos limites (peso_base = (min+max)/2). Ajustes por risco: para perfis mais arriscados (arrojado/agressivo) desloque 25% do intervalo de renda_fixa e caixa para a soma de acoes_* e alternativos; para conservadores/ultraconservadores faça o oposto. Respeite sempre min/max por classe e caixa_min informado. Se distribuicao_preferida existir, combine 50% peso_base e 50% distribuicao_preferida e re-normalize respeitando limites (aplique projeção para dentro dos limites caso algum peso viole min/max). - Liquidez: garanta peso de "caixa" >= requisitos_liquidez.caixa_min. Se classe caixa não estiver presente, crie-a apenas se permitida; caso não permitida, aumente renda_fixa de liquidez diária (se existir no universo) — se não houver, registre respeita_liquidez=false. - Somas e arredondamento: some os pesos por classe = 1.00 após ajustes. Arredonde pesos para múltiplos de 0.005. Se após arredondar a soma ≠ 1, ajuste iterativamente na classe com maior headroom até fechar 1. - Métricas projetadas (aproximação determinística): retorno = soma(peso_classe * retorno_esperado_classe). Volatilidade aproximada por média ponderada simples: soma(peso_classe * vol_classe) — explicite nas justificativas que é aproximação sem matriz de covariância. - Faixas de rebalanceamento: defina para cada classe min = max(0, peso-0.03) e max = min(1, peso+0.03); para classes com peso >= 0.30 use 0.02; para peso <= 0.05 use 0.05. - Conformidade: defina flags booleans: soma_100 true se soma==1; respeita_limites true se todos os pesos dentro de [min,max]; respeita_liquidez true se caixa >= caixa_min; ativos_proibidos_excluidos true sempre, pois não atribuir por_produto a ativos proibidos. - Justificativas: inclua no mínimo 5 bullets claras conectando: (a) perfil_risco_final; (b) horizonte; (c) necessidade_liquidez; (d) preferências declaradas; (e) limites aplicados; (f) impacto do arredondamento.
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 bem-sucedida do agente anterior (RF 1).
- Tipo do input: Este agente deve ser apto a receber como input um JSON contendo dados normalizados de perfis de investimento dos clientes.
-
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 texto com até 10.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo a proposta de alocação de ativos, métricas projetadas e justificativas.
-
Exemplo de Estrutura de Output:
{ "cliente_id": "12345", "perfil_risco_final": "moderado", "proposta_alocacao": { "por_classe": { "renda_fixa": 0.60, "caixa": 0.40 }, "por_produto": [] }, "metricas_projetadas": { "retorno_esperado_anual": 0.07, "volatilidade_esperada_anual": 0.05 }, "faixas_rebalanceamento": { "renda_fixa": { "min": 0.57, "max": 0.63 }, "caixa": { "min": 0.37, "max": 0.43 } }, "justificativas": ["Perfil de risco moderado com horizonte de longo prazo.", "Necessidade de liquidez média.", "Preferência por renda fixa.", "Limites de classe respeitados.", "Ajustes feitos para otimizar retorno esperado mantendo conformidade."] } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em 1.500 caracteres.
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: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
2.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente devem ser visíveis para o Agente de Atualização Automática de Propostas (RF 4).
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Atualização Automática de Propostas (RF 4).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API de Mercado (RF 3).
RF 3. Agente de Execução de Chamada à API de Mercado
3.1 Tarefa do Agente
Realizar chamada à API do sistema de dados de mercado para obter indicadores e parâmetros atualizados (retornos esperados, volatilidades, taxas de juros base) que subsidiarão a atualização automática das propostas.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo um payload pronto contendo endpoint, headers, parâmetros de consulta (lista de classes/ativos, janela temporal, moeda) e credenciais/token. # 2. Objetivo Realizar chamada à API do sistema de dados de mercado e retornar os dados recuperados com carimbo de data/hora e parâmetros utilizados. # 3. Regras que você deve seguir para gerar sua resposta - Este agente é exclusivamente executor da chamada à API e não requer instruções para LLM. - Retorne, tal como recebido, os dados recuperados na chamada com carimbo de data/hora e parâmetros utilizados.
3.3 Configurações do Agente
3.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente quando os parâmetros da API de mercado estiverem prontos (parametros_api_mercado_prontos = true).
- Tipo do input: Este agente deve ser apto a receber como input um payload contendo endpoint, headers, parâmetros de consulta e credenciais/token.
-
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 até 5.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo o timestamp, parâmetros utilizados e dados de mercado recuperados.
-
Exemplo de Estrutura de Output:
{ "timestamp_coleta": "2025-12-12T05:22:00Z", "parametros_utilizados": { "endpoint": "https://api.mercado.com/dados", "classes": ["renda_fixa", "multimercado"], "moeda": "BRL" }, "dados_mercado": { "retornos_esperados_por_classe": { "renda_fixa": 0.06, "multimercado": 0.09 }, "volatilidade_por_classe": { "renda_fixa": 0.05, "multimercado": 0.10 }, "taxa_juros_base": 0.035 } } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em 1.000 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: Não se aplica (uso de ferramenta)
- Temperatura: Não se aplica (uso de ferramenta)
3.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: O agente deverá enviar o payload para a API externa e retornar os dados recebidos como resposta.
3.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções não são visíveis para agentes subsequentes.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Atualização Automática de Propostas (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Atualização Automática de Propostas (RF 4).
RF 4. Agente de Atualização Automática de Propostas
4.1 Tarefa do Agente
Recalibrar pesos e métricas da proposta vigente com base em dados de mercado atualizados e/ou feedback do cliente, preservando limites, perfil de risco e requisitos de liquidez.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo a proposta vigente do Agente de Geração de Propostas, dados de mercado atualizados do Agente de Execução de Chamada à API de Mercado e feedback do cliente opcional. # 2. Objetivo Recalibrar pesos e métricas da proposta vigente com base em dados de mercado atualizados e/ou feedback do cliente, preservando limites, perfil de risco e requisitos de liquidez. # 3. Regras que você deve seguir para gerar sua resposta - Condições de atualização: atualize se qualquer uma for verdadeira: (a) variação absoluta na taxa_juros_base >= 0.50pp; (b) mudança em retorno esperado de alguma classe >= 1.5pp; (c) feedback_cliente com mudança de perfil ou inclusão de restrição relevante. - Método de ajuste: recalcule pesos aplicando o mesmo motor do agente de proposta, mas iniciando dos pesos atuais e aplicando deslocamentos proporcionais à melhora/deterioração dos retornos esperados por classe, mantendo pesos dentro de min/max e caixa >= caixa_min. Limite deslocamento por ciclo a 5 pontos percentuais por classe (0.05) salvo violação de limites. - Feedback do cliente: se novas restrições proibirem classes presentes, zere o peso dessas classes e redistribua proporcionalmente nas classes permitidas com maior retorno esperado dentro do limite. Se mudanca_perfil ocorrer, recalcule score/perfil e reaplique limites coerentes com o novo perfil. - Métricas e impacto: compute retorno e vol usando os parâmetros atualizados e informe deltas vs proposta anterior. - Status: "mantida" se nenhum critério de atualização disparar; "atualizada" se houver ajuste mantendo conformidade; "requer_revisao_humana" se após ajustes algum requisito (limites, liquidez, soma) não puder ser atendido. - Motivos: inclua no mínimo 3 razões objetivas (ex.: "alta de 1.8pp em retorno esperado de acoes_brasil", "redução de taxa base", "cliente solicitou aumento de liquidez").
4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente quando os dados de mercado estiverem disponíveis (mercado_dados_disponiveis = true).
- Tipo do input: Este agente deve ser apto a receber múltiplos artefatos como input, incluindo a proposta vigente (JSON), dados de mercado (JSON) e feedback do cliente opcional (JSON).
-
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 combinado de até 15.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo a proposta atualizada, métricas projetadas, motivos da atualização e impacto estimado.
-
Exemplo de Estrutura de Output:
{ "cliente_id": "12345", "proposta_anterior": { "por_classe": { "renda_fixa": 0.60, "caixa": 0.40 } }, "proposta_atualizada": { "por_classe": { "renda_fixa": 0.55, "caixa": 0.45 }, "metricas_projetadas": { "retorno_esperado_anual": 0.075, "volatilidade_esperada_anual": 0.052 } }, "motivos_da_atualizacao": ["Ajuste devido à variação de 0.7pp na taxa de juros base.", "Feedback do cliente solicitando maior liquidez."], "impacto_estimado": { "delta_retorno": 0.005, "delta_volatilidade": 0.002 }, "status": "atualizada" } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em 1.500 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Utiliza lógica interna para recalibrar pesos e métricas.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções não são visíveis para agentes subsequentes.
- Visibilidade da Resposta: A resposta é o entregável final e não é passada para outros agentes internos.
4.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. A proposta atualizada é o resultado que deve ser disponibilizado ao consultor financeiro.