Executando verificação de segurança...
3

Pitch: Como usei Python para automatizar o rebalanceamento de investimentos (e levei a ferramenta para a Web)

Salve, pessoal!

Sempre achei que o processo de rebalancear uma carteira de investimentos na mão ou usando planilhas genéricas era muito manual e propenso a erros. Como programador, a minha vontade natural foi resolver isso com código.

O grande desafio lógico de um rebalanceamento de carteira não é apenas calcular porcentagens ideais, mas sim lidar com a regra de ouro: você geralmente não vende ativos, apenas direciona o dinheiro novo para o que ficou para trás.

Para resolver isso, construí um algoritmo focado em encontrar a distância matemática entre o cenário atual e o alvo. A lógica principal nasceu em Python.

Abaixo, compartilho o coração do algoritmo:

def distribuir_com_limite(valores, porcentagens, total):

    soma_existente = sum(valores)
    soma_final = soma_existente + total
    

    limites_absolutos = [p * soma_final for p in porcentagens]
    
    limites_disponiveis = [max(0, limite - atual) for limite, atual in    zip(limites_absolutos, valores)]

    soma_disponivel = sum(limites_disponiveis)

    if total <= soma_disponivel:
        return [(disp / soma_disponivel) * total for disp in limites_disponiveis]
    else:
        return limites_disponiveis

O uso do max(0, limite - atual) combinado com o zip() foi a forma mais limpa que encontrei para criar a trava lógica. Se um ativo valorizou demais e ultrapassou a porcentagem ideal, a matemática daria um número negativo. O max(0, ...) força o algoritmo a entender que aquele ativo receberá "Zero" de aporte neste mês, sem quebrar o resto do cálculo.

Depois de validar o modelo matemático, decidi que isso não poderia ficar preso no meu terminal. Traduzi essa mesma lógica para JavaScript, usei a biblioteca Chart.js para criar um gráfico de pizza dinâmico e criei uma interface interativa.

Publiquei a ferramenta completa e gratuita no meu projeto pessoal, o Descomplicando Algoritmos.

Se alguém quiser testar a calculadora com seus próprios números ou dar um feedback sobre a UI e a estrutura do código, o link está aqui:
https://descomplicandoalgoritmos.com.br/calculadora-balanceamento-carteira

Adoraria saber o que a comunidade acha da abordagem que usei no código e como vocês costumam resolver esse tipo de cálculo lógico!

Carregando publicação patrocinada...
1

Bem legal o artigo e a proposta do site, parabéns!

Eu tenho duas sugestões:

  • Se a carteira já está balanceada com a proporção desejada e estou apenas fazendo um novo aporte a ferramenta poderia calcular os alvos automaticamente, já que o objetivo é só manter os existentes.

  • Como a ferramenta não sugere venda, o percentual pode não bater com o alvo. Nesse caso seria necessário aumentar o aporte nos outros ativos para manter a proporção. Minha sugestão seria a ferramenta informar as 3 possibilidades para o usuário decidir por si próprio:

    • Deixar como está, alterando a proporção
    • Vender um pouco do ativo que valorizou acima do alvo
    • Aumentar o aporte nos demais ativos
1

Eai, Junior.

Sobre a primeira sugestão que você colocou, você me deixou com uma dúvida: Como o sistema saberá que a carteira já está balanceada se o usuário não fornecer os alvos ?

A segunda sugestão eu achei interessante. Não tinha pensado por esse lado! Vou estudar e estruturar melhor para incorporar essas funcionalidades. Obrigado, Junior!

1

Fala Lucas.

Eu colocaria um "switch" pro usuário indicar, exemplo :

  • Manter balanceamento atual da carteira
  • Reajustar balanceamento da carteira

Se a primeira opção está selecionada, os campos de alvo podem até ficar desabilitados e conforme os ativos são adicionados, o sistema calcula a proporção de cada um em relação ao total.
Se a segunda opção está selecionada aí é como é hoje.

2

Opa, Junior.

Fiz algumas alterações na calculadora levando em consideração os pontos que você levantou. Quando puder, da uma olhada lá. Valeu !!

-2

Além do que foi abordado, vale mencionar a importância de integrar a ferramenta com APIs de mercado financeiro. Isso permitiria que o rebalanceamento se tornasse ainda mais dinâmico, pois os dados das variáveis de mercado seriam atualizados em tempo real, otimizando as decisões de investimento.

1

Opa, Fabio.

A ideia a príncipio foi apenas calcular o valor para cada classe de ativo. Sendo assim, para utilizar alguma API's eu teria que dar ao usuário a possibilidade de inserir todos os ativos que estão na carteira. Há investidores que possuem 20, 25 ativos numa só classe e colocar todos esses ativos na calculadora seria muito trabalhoso para um usuário. Penso que essa morosidade faria o usuário desistir de usar a ferramenta. Então agrupando por classes o usuário poderá ver na sua carteira de investimentos(StatusInvest, Investidor10) qual o valor para cada classe de ativos e assim distruibuir a partir da porcentagem alvo.

Com relação a pegar os valores em tempo real, eu penso que o processo de pegar os valores totais na carteira, inseri-lós na ferramenta e fazer os investimentos leva alguns minutos.Durante esse tempo, ainda que alguns ativos sofram variações de preço, essas variações são de centavos, impactando muito pouco na porcentagem final.

Por fim,talvez uma outra calculadora específica para ativos fosse interessante, eu só preciso pensar como estrutura-lá, pois não gostaria de deixar todo o processo chato. Talvez importar uma planilha com o nome das ações, buscar o valores delas por meio de API e distruibuir o aporte seja interesante...

Valeu, Fabio.