Calculadora de Bola de Nieve de Deudas
Planifica el pago de deudas con estrategia bola de nieve o avalancha.
Acerca de esta herramienta
La Calculadora de Bola de Nieve de Deudas te ayuda a crear un plan de pago estratégico para múltiples deudas utilizando el método de Bola de Nieve o Avalancha. Muchas personas luchan con múltiples deudas y encuentran difícil mantener la motivación cuando enfrentan un gran saldo total. Esta herramienta te da una hoja de ruta visualizada mes a mes que muestra exactamente cuándo se pagará cada deuda y cuánto interés ahorrarás al hacer pagos adicionales más allá de los mínimos.
Para usar la calculadora, lista todas tus deudas con su saldo actual, pago mensual mínimo y tasa de interés, luego establece tu presupuesto de pago mensual total. La calculadora reordena tus deudas según la estrategia elegida: Bola de Nieve prioriza el saldo más pequeño primero para generar impulso psicológico, mientras que Avalancha se enfoca en la tasa de interés más alta para minimizar el interés total pagado. En segundos, verás tu cronograma de pago completo, el interés total y el efecto de bola de nieve mes a mes mientras las deudas pagadas liberan fondos para la siguiente deuda objetivo.
El método de Bola de Nieve típicamente tiene tasas de finalización más altas porque las victorias tempranas construyen impulso emocional, mientras que Avalancha ahorra la mayor cantidad de dinero matemáticamente. Elige Bola de Nieve si la motivación es tu desafío, y Avalancha si eres disciplinado con las finanzas. Recuerda que la calculadora asume tasas fijas y adhesión estricta al plan de pago; en realidad, puedes tener que ajustarte por nuevos cargos o cambios en la vida. Úsala como una hoja de ruta motivacional en lugar de un contrato preciso, y considera consultar a un asesor de crédito si tu situación de deuda se siente abrumadora.
Preguntas Frecuentes
Implementación 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.