capa-calculadora-cdb-vs-lca

Comparador CDB vs LCI/LCA: Qual rende mais ?

Comparador: CDB vs LCI/LCA

É importante lembrar que a taxa do CDI veio a partir de uma API pública do Banco Central do Brasil(BCB).

Saiba também como balancear sua carteira de investimentos usando a calculadora de balanceamento de carteira.

A ilusão da taxa bruta

Se você acabou de fazer uma simulação na ferramenta acima, provavelmente percebeu que um CDB pagando 115% do CDI nem sempre vence uma LCI pagando "apenas" 95%.

O cérebro humano é programado para escolher o número maior. As corretoras sabem disso e adoram destacar os CDBs com taxas astronômicas. O problema é que a Receita Federal sempre morde uma parte do seu lucro no CDB, enquanto as LCIs e LCAs são totalmente isentas de Imposto de Renda.

Para descobrir o vencedor real, precisamos de um algoritmo que leve em conta três coisas: a taxa equivalente mensal, a mágica dos juros compostos e a tabela regressiva do imposto.

A matemática por trás

O erro mais comum que investidores iniciantes cometem é pegar a taxa anual e simplesmente dividir por 12. No mundo dos investimentos, usamos Juros Compostos. Para encontrar a taxa mensal correta, o algoritmo usa a seguinte fórmula matemática:

$$ TaxaMensal = (1+TaxaAnual)^{\frac{1}{12}}-1 $$

Além disso, o Imposto de Renda no Brasil é regressivo. Quanto mais tempo você deixa o dinheiro investido, menor é o imposto que você paga ao governo. A regra é baseada em dias:

  • Até 180 dias: 22,5%
  • De 181 a 360 dias: 20,0%
  • De 361 a 720 dias: 17,5%
  • Acima de 720 dias: 15,0%

O algoritmo em Python

Abaixo encontra-se o código da calculadora no topo desta página. Como aqui nós gostamos de escovar bits e entender a lógica por trás, iremos explicar como isso foi feito. Veja como a lógica de decisão é limpa e direta.

Python
    def comparar_investimentos(valor_investido, meses, cdi_anual, pct_cdb, pct_lci):
    taxa_anual_cdb = cdi_anual * (pct_cdb / 100)
    taxa_anual_lci = cdi_anual * (pct_lci / 100)

    taxa_mensal_cdb = (1 + taxa_anual_cdb) ** (1/12) - 1
    taxa_mensal_lci = (1 + taxa_anual_lci) ** (1/12) - 1

    bruto_cdb = valor_investido * ((1 + taxa_mensal_cdb) ** meses)
    liquido_lci = valor_investido * ((1 + taxa_mensal_lci) ** meses) # LCI é isenta

    dias = meses * 30
    
    if dias <= 180:
        aliquota_ir = 0.225
    elif dias <= 360:
        aliquota_ir = 0.20
    elif dias <= 720:
        aliquota_ir = 0.175
    else:
        aliquota_ir = 0.15

    lucro_cdb = bruto_cdb - valor_investido
    imposto_descontado = lucro_cdb * aliquota_ir
    liquido_cdb = bruto_cdb - imposto_descontado

    print(f"--- RESULTADO APÓS {meses} MESES ---")
    print(f"LCI/LCA Líquido: R$ {liquido_lci:.2f}")
    print(f"CDB Líquido:     R$ {liquido_cdb:.2f} (IR retido: R$ {imposto_descontado:.2f})")
    
    if liquido_cdb > liquido_lci:
        print("\nVencedor: CDB!")
    elif liquido_lci > liquido_cdb:
        print("\nVencedor: LCI / LCA!")
    else:
        print("\nPossuem a mesma rentabilidade!")

comparar_investimentos(10000, 12, 0.104, 115, 95)
    
  

Entendendo o algoritmo

Para entender como esse algoritmo toma a decisão de qual investimento é o melhor, nós precisamos olhar para os blocos lógicos da nossa função. Tudo começa com a preparação dos dados. Como os bancos oferecem taxas baseadas em uma porcentagem do CDI (como 115% ou 95%), a primeira missão do nosso código é descobrir a taxa anual real de cada produto. Fazemos isso multiplicando o valor do CDI atual pela porcentagem oferecida.

Com as taxas anuais em mãos, entramos em um dos conceitos mais importantes da programação financeira: a conversão de tempo. No mercado financeiro, não podemos simplesmente dividir uma taxa anual por doze. O algoritmo precisa utilizar o operador de exponenciação do Python (**) para aplicar a fórmula matemática de juros compostos, extraindo a raiz duodécima da taxa anual para encontrar a taxa mensal exata e equivalente.

Tendo a taxa mensal isolada, o cálculo do montante final se torna uma linha simples de código. Elevamos a taxa ao número de meses e multiplicamos pelo valor inicial investido. O detalhe crucial aqui é a vantagem nativa da LCI: o valor que o algoritmo calcula nesta etapa para a LCI já é o valor final líquido, pronto para ir para o bolso do investidor, pois ela é isenta de tributação. O CDB, por outro lado, ainda é apenas um valor bruto, que precisará passar pelo crivo do Leão.

O coração desse código está na estrutura condicional if/elif que simula a Tabela Regressiva da Receita Federal. O algoritmo converte o prazo de meses para dias e faz a checagem de cima para baixo. Se o dinheiro ficar preso por menos de seis meses, a alíquota punitiva de 22,5% é ativada. Conforme o prazo aumenta nas validações seguintes, a alíquota vai caindo em cascata até chegar no piso de 15% para investimentos superiores a dois anos.

Por fim, o código aplica a regra de negócio mais importante do sistema: o desconto do imposto. A alíquota encontrada nunca é multiplicada pelo valor total que o usuário tem na conta, mas estritamente sobre o lucro gerado. O algoritmo subtrai o valor investido do montante bruto do CDB, calcula a fatia do governo e gera o valor final líquido. Com os dois valores líquidos em mãos, um simples bloco if/else avalia quem gerou mais dinheiro e diz o vencedor da simulação.

Deixe um comentário