Calculadora Bola de Neve de Dívidas
Planeje o pagamento de dívidas com estratégia bola de neve ou avalanche.
Sobre esta ferramenta
A Calculadora de Bola de Neve de Dívidas ajuda você a criar um plano de pagamento estratégico para múltiplas dívidas usando o método de Bola de Neve ou Avalanche. Muitas pessoas enfrentam múltiplas dívidas e acham difícil manter a motivação quando confrontadas com um grande saldo total. Esta ferramenta oferece uma, um mês a mês que mostra exatamente quando cada dívida será paga e quanto de juros você economizará ao fazer pagamentos extras além dos mínimos.
Para usar a calculadora, liste todas as suas dívidas com seu saldo atual, pagamento mensal mínimo e taxa de juros, depois defina seu orçamento de pagamento mensal total. A calculadora reorganiza suas dívidas de acordo com a estratégia escolhida: Bola de Neve prioriza o menor saldo primeiro para criar impulso psicológico, enquanto Avalanche visa a taxa de juros mais alta para minimizar o total de juros pagos. Em segundos, você verá seu cronograma de pagamento completo, juros totais e o efeito de bola de neve mês a mês enquanto as dívidas pagas liberam fundos para a próxima dívida alvo.
O método de Bola de Neve normalmente tem taxas de conclusão mais altas porque as vitórias iniciais criam impulso emocional, enquanto Avalanche economiza a maior quantidade de dinheiro matematicamente. Escolha Bola de Neve se a motivação for seu desafio, e Avalanche se você for disciplinado com finanças. Lembre-se de que a calculadora assume taxas fixas e adesão rigorosa ao plano de pagamento; na realidade, você pode ter que se ajustar para novos encargos ou mudanças na vida. Use-a como um roteiro motivacional em vez de um contrato preciso, e considere consultar um conselheiro de crédito se sua situação de dívida parecer avassaladora.
Perguntas Frequentes
Implementação de Código
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class Debt:
name: str
balance: float
min_payment: float
apr: float # Annual Percentage Rate e.g. 0.20 for 20%
@property
def monthly_rate(self) -> float:
return self.apr / 12
@dataclass
class PayoffResult:
name: str
months_to_payoff: int
total_paid: float
total_interest: float
def debt_snowball(debts: List[Debt], monthly_budget: float) -> List[PayoffResult]:
"""
Simulate the debt snowball method.
Debts are sorted by balance (smallest first).
Extra budget is applied to the current target debt.
"""
# Sort by balance ascending (snowball)
queue = sorted(debts, key=lambda d: d.balance)
paid = [False] * len(queue)
bals = [d.balance for d in queue]
totals = [0.0] * len(queue) # total paid per debt
month = 0
results = []
while any(not p for p in paid):
month += 1
# Find current target: first unpaid debt
target_idx = next(i for i, p in enumerate(paid) if not p)
# Calculate total minimums for non-target debts
minimums_used = sum(
queue[i].min_payment for i in range(len(queue))
if not paid[i] and i != target_idx
)
extra = monthly_budget - minimums_used
# Apply payments
for i, debt in enumerate(queue):
if paid[i]:
continue
payment = extra if i == target_idx else debt.min_payment
interest = bals[i] * debt.monthly_rate
principal = min(payment - interest, bals[i])
bals[i] -= principal
totals[i] += payment
if bals[i] <= 0.01:
paid[i] = True
results.append(PayoffResult(
name=debt.name,
months_to_payoff=month,
total_paid=totals[i] + bals[i], # adjust overpayment
total_interest=totals[i] - debt.balance
))
return results
# Example
debts = [
Debt("Credit Card A", balance=2500, min_payment=75, apr=0.22),
Debt("Credit Card B", balance=5000, min_payment=100, apr=0.18),
Debt("Car Loan", balance=8000, min_payment=200, apr=0.06),
Debt("Student Loan", balance=15000, min_payment=150, apr=0.05),
]
results = debt_snowball(debts, monthly_budget=700)
total_interest = sum(r.total_interest for r in results)
print("Debt Snowball Payoff Plan:")
print(f"{'Debt':<20} {'Months':>7} {'Interest Paid':>14}")
for r in results:
yrs = r.months_to_payoff // 12
mos = r.months_to_payoff % 12
print(f"{r.name:<20} {yrs}y {mos:02d}m ${r.total_interest:>12,.2f}")
print(f"{'Total interest:':<20} ${total_interest:>12,.2f}")
Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.