Это старая версия (1.84) АннуитетныйПлатеж.

Содержание

Аннуитетный платеж (Аннуитет)

ToDo статьи:

  • пример на ЯзыкR:
    • таблица погашения
    • проценты и основной долг в погашении
    • визуализация принципа сложного процента
  • убрать ненужные знаки умножения
  • переписать определение
  • общее описание

Определение

Аннуитет
платеж по кредиту, равномерный в течение всего срока действия кредитного договора, позволяющий полностью покрыть сумму основного долга и начисленных процентов к последнему платежу по кредиту

Вывод формулы

Кредит с параметрами: величина кредита —  P рублей, номинальная процентая ставка —  j процентных пунктов, используются сложные проценты, срок —  m лет, ежемесячная капитализация процентов, равномерные (аннуитетные) платежи  A .

Необходимо рассчитать величину аннуитета  A .

Рассчитаем сначала величину эффективной ставки процента:  i = j over 12 и срок кредита в периодах погашения (в месяцах):  n = m cdot 12 .

На начала 0-го периода (факт выдачи кредита) заёмщик должен банку  P рублей, а на конец этого же периода заёмщик должен банку  P(1 + i) рублей.

В первом периоде заёмщик заплатит банку аннуитет A и останется должен ему P (1 + i) - A рублей (сумма оставшейся задолженности после первого платежа, т. е. на начало первого периода). Именно на эту сумму и будет начислять проценты банк (в соответствии с принципом сложного процента). В результате заёмщик к концу первого периода станет должен банку:  left ( P (1 + i) - A right ) cdot (1 + i) = P cdot (1 + i) sup 2 - A cdot (1 + i) .

На начало второго периода заёмщик будет должен P cdot (1 + i) sup 2 - A cdot (1 + i) - A, а к его концу  left ( P cdot (1 + i) sup 2 - A cdot (1 + i) - A right ) cdot (1 + i).

В самом конце, в n-ом периоде, после последнего платежа заёмщик полностью погасит как сумму основного долга, так и проценты (если доживёт --АтрашкевичАндрей): P cdot (1 + i) sup n - A cdot (1 + i) sup {(n - 1)} - A cdot (1 + i) sup {(n - 2)} - A cdot (1 + i) sup {(n - 3)} - ~ ldots ~ - A cdot (1 + i) - A= 0

Преобразуем это выражение для того, чтобы выразить из него искомую величину A: P cdot (1 + i) sup n - A cdot left ( (1 + i) sup {(n - 1)} + (1 + i) sup {(n - 2)} + (1 + i) sup {(n - 3)} + ~ ldots ~ + (1 + i) + 1 right ) = 0

или P cdot (1 + i) sup n - A cdot left ( (1 + i) sup {(n - 1)} + (1 + i) sup {(n - 2)} + (1 + i) sup {(n - 3)} + ~ ldots ~ + (1 + i) sup 1 + (1 + i) sup 0 right ) = 0

В больших скобках стоит геометрическая прогрессия, состоящая из n членов, с первым членом b sub 1 = 1 и знаменателем q = (1 + i). Напомним, что сумма первых n членов геометрической прогрессии может быть вычислена по формуле S sub n = b sub 1 cdot {{1 - q sup n} over {1 - q}}.

Таким образом: P cdot (1 + i) sup n - A cdot left ( 1 cdot {{1 - (1 + i) sup n} over {1 - (1 + i)}} right ) = 0 P cdot (1 + i) sup n - A cdot {{1 - (1 + i) sup n} over {-i}} = 0 P cdot (1 + i) sup n - A cdot {{(1 + i) sup n - 1} over {i}} = 0 P cdot (1 + i) sup n = A cdot {{(1 + i) sup n - 1} over {i}}

В итоге: A = {P ~ i ~ (1 + i) sup n} over {(1 + i) sup n - 1}

Пример кода на R

Пример: квартира в Сыктывкаре, стоимостью 3 млн. рублей. Первоначальный взнос составляет 20%, срок кредита — 20 лет, годовая ставка процента — 15% с ежемесячной капитализацией (начислением процентов каждый месяц по принципу сложных процентов).

 # расчитаем величину ипотечного кредита
 apartment.price <- 3E6  # стоимость квартиры
 initial.payment.rate <- 0.20  # первоначальный взнос, как процент от стоимости квартиры
 mortgage.amount <- apartment.price * (1 - initial.payment.rate)  # величина ипотечного кредита : P
 # расчитаем эффективную месячную процентную ставку и число периодов погашения
 #  эффективная месячная процентная ставка:
 rate.nominal <- 0.15  # номинальная процентная ставка (указана в договоре): j
 rate <- rate.nominal/12  # эффективная месячная процентная ставка: i
 #  число периодов погашения:
 n.years <- 20  # срок в годах: m
 n <- n.years * 12  # срок в месяцах: n
 # функция, вычисляющая аннуитетный платеж в зависимости от: 
 #  величины кредита: P, 
 #  процентной ставки: i, 
 #  срока кредита: n
 CalculateAnnuity <- function(P, i, n) {
   annuity <- (P * i * (1 + i) ** n)/((1 + i) ** n - 1)
   return (annuity)
 }
 # в переменную monthly.annuity передадим значение аннуитетного платежа,
 # соответствующего параметрам нашего примера, и выведем значение этой переменной
 (monthly.annuity <- CalculateAnnuity(mortgage.amount, rate, n))
 # составим график платежей
  vec.dates <- seq(Sys.Date(), by = 'month', length = n)
 vec.annuity <- rep(monthly.annuity, n) 
 df.Pay.List <- data.frame(vec.dates, vec.annuity)
 names(df.Pay.List) <- c('Date of Payment', 'Annuity Payment')
 df.Pay.List[, 'Outstanding Amount Start'] <- NA
 df.Pay.List[, 'Outstanding Amount Finish'] <- NA
 for (i in 1:n) {
   if (i == 1) {
     df.Pay.List[, 'Outstanding Amount Start'][i] <- mortgage.amount
     df.Pay.List[, 'Outstanding Amount Finish'][i] <- mortgage.amount * (1 + rate)
   } else {
     df.Pay.List[, 'Outstanding Amount Start'][i] <- 
       #df.Pay.List[, 'Outstanding Amount Start'][i] <-
       #df.Pay.List[, 'Outstanding Amount Finish'][i] - df.Pay.List[, 'Annuity Payment'][i]
   }
 }
 df.Pay.List[, 'Outstanding Amount Start'] <- round(df.Pay.List[, 'Outstanding Amount Start'], 2)
 df.Pay.List[, 'Outstanding Amount Finish'] <- round(df.Pay.List[, 'Outstanding Amount Finish'], 2)
 df.Pay.List


КатегорияФинансоваяМатематика