Fala! Antes de virar aluno, eu refiz o algoritmo em uma planilha do Google Sheets tentando ser o mais fiel possível à filosofia do Diagrama do Cerrado, baseando em alguns vídeos do Raul (análise de FIIs, primeira carteira e na reta). Basicamente, é preciso dividir em duas etapas de decisão, que podemos definir assim:
1. Camada Macro: Distribuição Proporcional (Algoritmo de Normalização)
Onde aplica: Na definição de quanto dinheiro vai para cada Classe de Ativo (Renda Fixa, Ações, FIIs, etc.).
O Problema: Temos um recurso finito (Aporte) e múltiplos recipientes (Categorias) com capacidades ideais (Targets). Como distribuir de forma justa, priorizando quem está mais vazio e sem realizar uma venda?
A Lógica: Você precisa calcular o gap de cada categoria e distribuir o aporte proporcionalmente à distância da meta. Quem está mais longe, recebe mais. Quem passou da meta, trava.
2. Camada Micro: Otimização Inteira (Variação do Knapsack Problem)
Onde aplica: Na escolha de quantas Cotas/Ações comprar dentro de uma categoria que já recebeu seu orçamento na etapa anterior.
O Problema: Você tem um orçamento fixo e itens com valores indivisíveis (preço do ativo). O objetivo é preencher a carteira com o máximo de valor, sem estourar o orçamento.
A Lógica: Eu utilizo um Algoritmo Guloso (Greedy Algorithm). Ele itera comprando uma cota do ativo mais descontado por vez, subtraindo do saldo, até que o dinheiro daquela categoria acabe.
Nota Importante: Não vou compartilhar o código-fonte ou a planilha. Entendo que essa inteligência de alocação é o core business de um dos produtos aqui da AUVP e seria antiético da minha parte distribuir uma réplica do sistema deles. Acredito inclusive que é por esse motivo que eles não expõem a lógica como um todo (e eu suprimi alguns pontos aqui tbm para o post não ser deletado rsrs).
Meu intuito aqui foi apenas trazer essa abstração conceitual para mostrar que, estudando a lógica por trás e quebrando um pouco a cabeça, é possível sim você desenvolver sua própria ferramenta para uso pessoal.
É um desafio bem legal e prazeroso de se fazer... Você vai tomar muitos StackOverflowException 's até ir encontrando as regrinhas a se colocar hahaha