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