Agente de IA para Otimização de Carteira de Investimentos

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

Como criar um agente de IA que sugere a melhor alocação de ativos para maximizar o retorno esperado.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados, ferramentas como simulações de cenários de mercado e demais requisitos funcionais para o Fluxo de Agentes "Otimização de Carteira de Investimentos", uma solução de automação projetada para sugerir a melhor alocação de ativos visando maximizar o retorno esperado, respeitando as restrições de risco do cliente. 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 o input de dados do cliente em uma estratégia de alocação de ativos que maximize o retorno esperado dentro das restrições de risco definidas, utilizando algoritmos de otimização e simulações de cenários de mercado.

2. Contexto e Problema

Cenário Atual

Investidores enfrentam dificuldades em encontrar a melhor alocação de ativos que maximize o retorno, enquanto respeitam as restrições de risco. As principais questões incluem:

  • Dificuldade em encontrar a melhor alocação de ativos que maximize o retorno.
  • Necessidade de respeitar as restrições de risco do cliente ao otimizar carteiras.

Atualmente, muitos investidores dependem de análises manuais ou ferramentas genéricas que não consideram as especificidades de cada cliente. Isso pode resultar em alocações subótimas e maior exposição ao risco.


Problemas Identificados

  • Complexidade na otimização: A otimização de carteiras requer a consideração de múltiplas variáveis e restrições que podem ser difíceis de gerenciar manualmente.
  • Risco de decisões subótimas: Sem ferramentas adequadas, os investidores podem fazer escolhas que não maximizam o retorno ou que aumentam o risco além do desejado.
  • Falta de personalização: Soluções genéricas podem não atender às necessidades específicas de cada investidor, levando a alocações inadequadas.

3. Impactos Esperados

A implementação deste fluxo de automação visa alcançar os seguintes resultados:

  • Maximizar o retorno esperado das carteiras de investimento, respeitando as restrições de risco dos clientes.
  • Personalizar a alocação de ativos de acordo com o perfil de risco e as restrições específicas de cada cliente.
  • Reduzir o tempo e o esforço necessários para otimizar carteiras de investimento.

4. Visão Geral da Solução

O agente de IA para otimização de carteiras de investimentos utiliza algoritmos de otimização e simulações de cenários de mercado para sugerir a melhor alocação de ativos que maximize o retorno esperado, respeitando as restrições de risco do cliente. 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 otimização de carteiras de investimento.

A solução consiste em um fluxo de automação composto por 5 agentes de IA. O processo inicia com a consolidação e validação das restrições do cliente e termina com a geração de um plano de implementação e rebalanceamento.

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

Agentes Função Principal
Agente de Consolidação e Validação de Restrições do Cliente (RF 1) Consolidar, padronizar e validar o perfil de risco, restrições e dados de entrada para otimização de carteira.
Agente de Construção de Parâmetros e Cenários de Mercado (RF 2) Construir parâmetros de retorno e risco e gerar cenários consistentes com os dados fornecidos.
Agente de Otimização de Carteira sob Restrições (RF 3) Determinar a alocação de pesos que maximize o retorno esperado respeitando o orçamento de risco e demais restrições do cliente.
Agente de Simulação e Stress Testing da Carteira (RF 4) Avaliar a robustez da alocação com cenários históricos e choques hipotéticos e checar aderência às restrições.
Agente de Plano de Implementação e Rebalanceamento (RF 5) Gerar plano de execução das ordens e política de rebalanceamento dado o portfólio alvo e a carteira atual.

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 Consolidação e Validação de Restrições do Cliente

1.1 Tarefa do Agente

Consolidar, padronizar e validar o perfil de risco, restrições e dados de entrada para otimização de carteira.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com o perfil de risco, restrições e dados de entrada para otimização de carteira. Este JSON contém informações detalhadas sobre o cliente e suas preferências de investimento.

# 2. Objetivo
Consolidar, padronizar e validar o perfil de risco, restrições e dados de entrada para otimização de carteira, garantindo que todas as informações estejam corretas e completas para os próximos passos do fluxo.

# 3. Regras que você deve seguir para gerar sua resposta
- Converter todos os percentuais para decimais (ex.: 8% -> 0.08) e prazos para meses/anos conforme necessário.
- Se perfil_risco for categórico, mapear limites padrão: conservador -> vol<=0.08 e/ou cvar95<=0.10; moderado -> vol<=0.12 e/ou cvar95<=0.15; arrojado -> vol<=0.18 e/ou cvar95<=0.22, mantendo qualquer limite fornecido mais restritivo.
- Validar coerência: min<=max em todos os bounds; soma de mínimos por classe/ativo não pode exceder 1; soma de máximos por classe deve permitir solução (>=1); reportar inconsistências em lacunas_de_dados.
- Normalizar moeda_base; marcar ativos cuja moeda difere da base.
- Aplicar filtros: remover ativos proibidos, com liquidez_media_diaria_valor=0 ou dados ausentes essenciais (id, classe, setor, moeda, liquidez); listar removidos em lacunas_de_dados.
- Derivar limite_fx: se não fornecido e moeda_base definida, definir 0 para perfil conservador, 0.2 moderado, 0.4 arrojado, salvo se usuário definir outro.
- Definir min_num_ativos padrão: 8 (conservador), 12 (moderado), 15 (arrojado), se ausente.
- Consolidar custos em bps totais por ativo: custo_transacao_bps (do ativo se houver, senão custo_bid_ask + corretagem).
- Não inferir retornos ou covariâncias; apenas indicar lacunas quando dados_mercado_base ausente ou incompleto. 
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 com o perfil de risco e restrições 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 na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é um JSON contendo o perfil de risco, restrições e dados de entrada para otimização de carteira.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json (JSON).
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 30.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON consolidado e validado com as restrições normalizadas e quaisquer lacunas de dados identificadas.
  • Exemplo de Estrutura de Output:
     {
      "universo_filtrado": ["id1", "id2"],
      "restricoes_normalizadas": {
        "bounds_por_ativo": {"id1": {"min": 0.1, "max": 0.3}},
        "bounds_por_classe": {"classe1": {"min": 0.2, "max": 0.5}},
        "caps_setoriais": {"setor1": 0.4},
        "risco_orcamento": {"tipo": "vol", "limite_anual": 0.15},
        "perda_max_mensal": 0.05,
        "liquidez_min_dias": 5,
        "permitir_short": false,
        "limite_fx": 0.2,
        "min_num_ativos": 12,
        "esg_preferencias": null,
        "ativos_bloqueados": ["id3"]
      },
      "mapa_moeda_base": "USD",
      "custos_tributos_padronizados": {"custo_corretagem": 0.0002, "custo_bid_ask": 0.0001},
      "lacunas_de_dados": [{"item": "id4", "descricao": "Dados de liquidez ausentes"}]
    } 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 5.000 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

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

Ao concluir sua execução, esse agente aciona o Agente de Construção de Parâmetros e Cenários de Mercado (RF 2).

RF 2. Agente de Construção de Parâmetros e Cenários de Mercado

2.1 Tarefa do Agente

Construir parâmetros de retorno e risco e gerar cenários consistentes com os dados fornecidos.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON consolidado com as restrições normalizadas e quaisquer lacunas de dados identificadas.

# 2. Objetivo
Construir parâmetros de retorno e risco e gerar cenários consistentes com os dados fornecidos, preparando as informações para o próximo agente no fluxo.

# 3. Regras que você deve seguir para gerar sua resposta
- Se retornos_historicos disponíveis: calcular retornos logarítmicos periódicos, anualizar média e covariância pelo fator adequado (ex.: 252/12 para mensais conforme periodicidade detectada), garantindo simetria e sem valores NaN.
- Se apenas estatísticas: usar mu_anual e vol/correl para montar cov_anual; assegurar que a matriz seja definida positiva (ajustar pequenas assimetrias numéricas garantindo simetria e valores diagonais iguais às variâncias fornecidas).
- Gerar N>=2000 cenários anuais por ativo via reamostragem consistente com mu e cov fornecidos; garantir correlação aproximada conforme cov_anual e média aproximada igual a mu_anual.
- Limitar outliers nos cenários truncando retornos abaixo do percentil 0.1% e acima do 99.9% por ativo para evitar explosões numéricas, registrando a aplicação do truncamento em descricao_metodo.
- Para ativos sem dados suficientes: excluir do conjunto e listá-los em ativos_sem_dados; não inventar parâmetros.
- Respeitar moeda_base apenas como metadado; não aplicar conversões sem taxas de câmbio fornecidas. 
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 consolidado com as restrições normalizadas e quaisquer lacunas de dados identificadas.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json (JSON).
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 10.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo os parâmetros de retorno e risco e os cenários gerados.
  • Exemplo de Estrutura de Output:
     {
      "parametros": {
        "mu_anual": {"id1": 0.05},
        "sigma_anual": {"id1": 0.1},
        "cov_anual": [[0.1, 0.02], [0.02, 0.2]],
        "taxa_livre_risco_anual": 0.03
      },
      "cenarios": {
        "matriz_retorno_anuais": [[0.05, 0.02], [0.06, 0.01]],
        "descricao_metodo": "Reamostragem com base em mu e cov"
      },
      "ajustes": {
        "ativos_sem_dados": ["id3"],
        "proxies_usados": [{"id_origem": "id4", "id_proxy": "id5", "criterio": "Sem dados"}]
      }
    } 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 6.000 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

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

Ao concluir sua execução, esse agente aciona o Agente de Otimização de Carteira sob Restrições (RF 3).

RF 3. Agente de Otimização de Carteira sob Restrições

3.1 Tarefa do Agente

Determinar a alocação de pesos que maximize o retorno esperado respeitando o orçamento de risco e demais restrições do cliente.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com parâmetros de retorno e risco e cenários gerados.

# 2. Objetivo
Determinar a alocação de pesos que maximize o retorno esperado respeitando o orçamento de risco e demais restrições do cliente, preparando as informações para o próximo agente no fluxo.

# 3. Regras que você deve seguir para gerar sua resposta
- Objetivo: maximizar retorno_esperado_anual = soma(peso_i * mu_anual_i), com sum(pesos)=1 e pesos dentro dos bounds informados.
- Risco: assegurar que a métrica escolhida em restricoes_normalizadas.risco_orcamento.tipo seja respeitada: vol -> sqrt(w'Cov w) <= limite; cvar95 -> média da cauda de 5% dos retornos de cenários da carteira <= limite (em termos de perda); custom -> respeitar o limite fornecido conforme descrição.
- Aplicar restrições: (a) por ativo (min/max), (b) por classe (somatório na classe dentro de min/max), (c) caps setoriais, (d) limite de exposição cambial (soma pesos de ativos em moeda != base <= limite_fx), (e) min_num_ativos com peso>0.5% cada, (f) proibir short se permitir_short=false (pesos>=0), (g) liquidez: converter liquidez_min_dias em limite de participação = min(1, (liquidez_media_diaria_valor * liquidez_min_dias) / capital_total); peso do ativo não pode implicar valor superior a esse teto, (h) perda_max_mensal aproximada: se fornecida, garantir que a perda no percentil 5% do cenário mensal equivalente não exceda o limite (aproximar convertendo risco anual para mensal por fator sqrt(12)).
- Custos: penalizar alocações que concentrem em ativos de alto custo_transacao_bps adicionando um termo de penalidade no objetivo proporcional ao custo médio ponderado; reportar custo_transacao_estimado_bps na saída.
- Se necessidade_renda_mensal for informada, priorizar ativos com rendimento (dividendos/juros) quando houver campos disponíveis; se não houver campos de rendimento, estimar renda_mensal_esperada como retorno_esperado_anual/12 * capital_total.
- Somatório de pesos deve ser 1 com tolerância absoluta <= 1e-6; reportar soma_pesos e ajustar arredondamentos mantendo factibilidade.
- Se o problema for inviável, não retornar alocação arbitrária: definir viavel=false e preencher motivo_inviabilidade com a primeira restrição conflitiva identificada e sugerir qual bound relaxar (ex.: aumentar max_vol de 0.08 para 0.10 ou reduzir min_num_ativos). 
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 bem-sucedida do agente anterior (RF 2).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON com parâmetros de retorno e risco e cenários gerados.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json (JSON).
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 12.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a alocação de ativos e métricas de desempenho esperadas.
  • Exemplo de Estrutura de Output:
     {
      "alocacao": [{"id": "id1", "peso": 0.3}],
      "metricas": {
        "retorno_esperado_anual": 0.07,
        "volatilidade_anual": 0.1,
        "var95_anual": 0.15,
        "cvar95_anual": 0.2,
        "drawdown_esperado": 0.25,
        "hhi_diversificacao": 0.4,
        "renda_mensal_esperada": 5000,
        "custo_transacao_estimado_bps": 0.3
      },
      "viavel": true,
      "restricoes_ativas": ["risco_orcamento"],
      "motivo_inviabilidade": null,
      "diagnosticos": {
        "pesos_negativos_presentes": false,
        "soma_pesos": 1.0,
        "num_ativos_positivos": 10
      }
    } 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 7.000 caracteres.

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: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

3.3.5 Memória

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

Ao concluir sua execução, esse agente aciona o Agente de Simulação e Stress Testing da Carteira (RF 4).

RF 4. Agente de Simulação e Stress Testing da Carteira

4.1 Tarefa do Agente

Avaliar a robustez da alocação com cenários históricos e choques hipotéticos e checar aderência às restrições.

4.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com a alocação de ativos e métricas de desempenho esperadas.

# 2. Objetivo
Avaliar a robustez da alocação com cenários históricos e choques hipotéticos e checar aderência às restrições, preparando as informações para o próximo agente no fluxo.

# 3. Regras que você deve seguir para gerar sua resposta
- Computar retornos de carteira nos cenários: r_p = matriz_retorno_anuais * pesos.
- Calcular VaR95 e CVaR95 anuais e converter métricas mensais aproximando por raiz do tempo quando necessário para comparar com perda_max_mensal.
- Aplicar choques_hipoteticos: ajustar retornos dos ativos alvo pelo delta_retorno e recalcular r_p; incluir ao menos três choques padrão se nenhum for fornecido: {equities -20%}, {juros +200 bps aproximando impacto negativo em renda fixa}, {commodities -15%} quando classes existirem.
- compliance_final=true apenas se todas as métricas de risco e caps informados forem respeitadas nos cenários base e nos choques.
- Se não conforme, preencher motivos_nao_conformidade e sugerir ajustes mínimos e direcionais: ex. reduzir cap setorial X em 2pp, reduzir peso de ativos com moeda estrangeira em 5pp, aumentar risco_orcamento em 2pp (se aceitável pelo perfil), sempre citando a restrição específica. 
4.3 Configurações do Agente

4.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 3).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON com a alocação de ativos e métricas de desempenho esperadas.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json (JSON).
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 10.000 caracteres.

4.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a avaliação dos cenários e a conformidade com as restrições.
  • Exemplo de Estrutura de Output:
     {
      "distribuicao": {
        "media": 0.07,
        "desvio": 0.1,
        "var95": 0.15,
        "cvar95": 0.2,
        "pior_percentil": 0.3,
        "prob_perda_maior_que_x": 0.05
      },
      "stress_tests": [{"cenario": "equities -20%", "retorno_portfolio": -0.1}],
      "compliance_final": true,
      "motivos_nao_conformidade": [],
      "recomendacao_aprovacao": true,
      "sugestoes_ajuste": []
    } 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 5.000 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: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

4.3.5 Memória

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

Ao concluir sua execução, esse agente aciona o Agente de Plano de Implementação e Rebalanceamento (RF 5).

RF 5. Agente de Plano de Implementação e Rebalanceamento

5.1 Tarefa do Agente

Gerar plano de execução das ordens e política de rebalanceamento dado o portfólio alvo e a carteira atual.

5.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com a avaliação dos cenários e a conformidade com as restrições.

# 2. Objetivo
Gerar plano de execução das ordens e política de rebalanceamento dado o portfólio alvo e a carteira atual, finalizando o fluxo de otimização de carteira.

# 3. Regras que você deve seguir para gerar sua resposta
- Se carteira_atual ausente, gerar apenas alocacao_alvo sem ordens.
- Calcular diferença entre pesos alvo e atuais; converter em quantidade respeitando lote_minimo e capital_total.
- Não exceder max_participacao_volume_diario por ativo em cada dia do plano_execucao; se janela_execucao_dias não fornecida, distribuir em 3 dias por padrão.
- Priorizar vendas de ativos fora de bounds e compras que reduzam não conformidades identificadas no agente de stress.
- Minimizar custo total estimado usando a ordem: ajustar primeiro ativos com maior desvio absoluto e menor custo_transacao_bps.
- Definir tolerancias_desvio_por_ativo padrão de 0.5pp (0.005) e por classe de 1.5pp quando não fornecidas. 
5.3 Configurações do Agente

5.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 4).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON com a avaliação dos cenários e a conformidade com as restrições.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json (JSON).
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de JSON com até 8.000 caracteres.

5.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo o plano de execução das ordens e a política de rebalanceamento.
  • Exemplo de Estrutura de Output:
     {
      "ordens_recomendadas": [{"id": "id1", "lado": "compra", "quantidade": 100, "valor_estimado": 1000, "justificativa": "Ajuste de alocação"}],
      "plano_execucao": {
        "dias": [{"dia": 1, "ids_operados": ["id1"], "participacao_volume_max": 0.1}]
      },
      "politica_rebalanceamento": {
        "frequencia": "mensal",
        "tolerancias_desvio_por_ativo": 0.005,
        "gatilhos": ["desvio TE"]
      },
      "metricas_pos_execucao": {
        "alocacao_esperada": {"id1": 0.3},
        "custo_total_estimado_bps": 0.2
      }
    } 
  • Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 6.000 caracteres.

5.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

5.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.

5.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.

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

A execução deste agente finaliza o fluxo. O JSON gerado é o resultado que deve ser disponibilizado ao usuário.

© 2025 prototipe.ai. Todos os direitos reservados.