Калькулятор снежного кома долгов
Планируйте погашение долгов по стратегии снежного кома или лавины.
Об этом инструменте
Калькулятор долгового снежного кома помогает вам создать стратегический план погашения нескольких долгов, используя метод снежного кома или лавины. Многие люди борются с несколькими долгами и испытывают трудности в поддержании мотивации перед лицом крупной общей задолженности. Этот инструмент предоставляет вам ежемесячную дорожную карту, которая точно показывает, когда будет погашен каждый долг, и сколько процентов вы сэкономите, делая дополнительные платежи сверх минимальных.
Чтобы использовать калькулятор, перечислите все ваши долги с их текущим остатком, минимальным ежемесячным платежом и процентной ставкой, затем установите общий месячный бюджет платежей. Калькулятор переупорядочивает ваши долги в соответствии с выбранной стратегией: метод снежного кома сначала приоритизирует наименьший остаток для психологического импульса, а метод лавины нацеливается на наибольшую процентную ставку для минимизации общего уплаченного процента. За несколько секунд вы увидите полный график погашения, общий процент и эффект снежного кома в месячном разрезе, когда погашенные долги освобождают средства для следующего целевого долга.
Метод снежного кома обычно имеет более высокие показатели завершения, потому что ранние победы создают эмоциональный импульс, в то время как метод лавины математически экономит больше всего денег. Выбирайте снежный ком, если мотивация — ваш вызов, и лавину, если вы дисциплинированы в финансах. Помните, что калькулятор предполагает фиксированные ставки и строгое соблюдение плана платежей; в действительности вы можете потребоваться приспосабливаться к новым сборам или изменениям в жизни. Используйте его как мотивационную дорожную карту, а не как точный финансовый контракт, и рассмотрите консультацию с кредитным советником, если ваша ситуация с долгом кажется непомерной.
Часто задаваемые вопросы
Реализация кода
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.