Алгоритм Равноценного Ежемесячного Взноса (EMI)
Равноценный ежемесячный платёж (EMI) представляет собой фиксированную сумму, которую заёмщик обязан выплачивать кредитору в установленный день каждого месяца. Эти платежи используются для погашения как процентов, так и основной суммы долга, что позволяет полностью выплатить кредит в течение определённого периода времени.
Как и в случае с большинством видов кредитов, таких как ипотека на недвижимость, заёмщик осуществляет выплаты кредитору в виде фиксированных периодических платежей в течение нескольких лет. EMI отличается от планов с переменными платежами, где заёмщик может вносить более высокие суммы по своему усмотрению. В планах EMI заёмщикам обычно разрешается вносить только одну фиксированную сумму в месяц.
1. Формула расчета EMI
Формула для расчета EMI основана на аннуитетной схеме (когда платежи равны на протяжении всего срока кредита):
Где:
- P — основная сумма кредита (Principal)
- r — месячная процентная ставка (годовая ставка / 12 / 100)
- n — срок кредита в месяцах
2. Области применения EMI
EMI применяется в различных финансовых продуктах:
- Потребительские кредиты (на бытовую технику, ремонт)
- Ипотека (долгосрочные жилищные кредиты)
- Автокредиты (покупка автомобиля в рассрочку)
- Образовательные кредиты
- Кредитные карты (при погашении задолженности частями)
3. Примеры расчета EMI на Python
Пример 1: Расчет EMI
def calculate_emi(principal, annual_rate, years):
n = years * 12 # срок в месяцах
r = annual_rate / 12 / 100 # месячная ставка
emi = principal * (r * (1 + r)**n) / ((1 + r)**n - 1)
return emi
principal = 1_000_000 # 1 млн руб.
annual_rate = 12 # 12% годовых
years = 5 # 5 лет
emi = calculate_emi(principal, annual_rate, years)
print(f"Ежемесячный платёж (EMI): {emi:.2f} руб.")
Вывод:
Пример 2: График платежей (амортизация)
Можно разбить EMI на основной долг и проценты:
def emi_breakdown(principal, annual_rate, years):
n = years * 12
r = annual_rate / 12 / 100
emi = calculate_emi(principal, annual_rate, years)
print(f"EMI: {emi:.2f} руб. (в месяц)\n")
print("Месяц | Основной долг | Проценты | Остаток долга")
print("-" * 45)
balance = principal
for month in range(1, n + 1):
interest = balance * r
principal_paid = emi - interest
balance -= principal_paid
print(f"{month:3} | {principal_paid:10.2f} | {interest:8.2f} | {balance:10.2f}")
emi_breakdown(1_000_000, 12, 5)
Вывод (первые 3 месяца):
Месяц | Основной долг | Проценты | Остаток долга
---------------------------------------------
1 | 12244.45 | 10000.00 | 987755.55
2 | 12366.89 | 9877.56 | 975388.66
3 | 12490.56 | 9753.89 | 962898.10
...
Пример 3: Влияние срока кредита на EMI
import matplotlib.pyplot as plt
principal = 1_000_000
annual_rate = 12
years_range = range(1, 11) # от 1 до 10 лет
emis = [calculate_emi(principal, annual_rate, years) for years in years_range]
plt.plot(years_range, emis, marker='o')
plt.xlabel("Срок кредита (лет)")
plt.ylabel("EMI (руб.)")
plt.title("Зависимость EMI от срока кредита")
plt.grid(True)
plt.show()
Вывод:
График покажет, что чем больше срок кредита, тем меньше EMI, но общая переплата возрастает.