Разница между 1.86 и текущей версией АннуитетныйПлатеж.
@@ -1,4 +1,4 @@
-- Аннуитетный платеж (Аннуитет)
+= Аннуитетный платеж (Аннуитет)
 
 ''''''ToDo'''''' статьи:
 	* пример на ЯзыкR:
@@ -9,11 +9,11 @@
 	* переписать определение
 	* общее описание
 
--- Определение
+- Определение
 
 	'''Аннуитет''' : платеж по кредиту, равномерный в течение всего срока действия кредитного договора, позволяющий полностью покрыть сумму основного долга и начисленных процентов к последнему платежу по кредиту
 
--- Вывод формулы
+- Вывод формулы
 
 Кредит с параметрами: величина кредита — $$ P $$ рублей, номинальная процентая ставка — $$ j $$ процентных пунктов, используются сложные проценты, срок — $$ m $$ лет, ежемесячная капитализация процентов, равномерные (аннуитетные) платежи $$ A $$.
 
@@ -74,36 +74,54 @@
 
 Пример: квартира в Сыктывкаре, стоимостью 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
- #  число периодов погашения:
+===
+ # 
+ aparment.price <- 3E6
+ initial.payment.rate <- 0.20
+ mortgage.amount <- aparment.price * (1 - initial.payment.rate)
+
+ #
+ nominal.rate <- 0.15
+ rate <- nominal.rate / 12
+ 
+ # число периодов погашения:
  n.years <- 20  # срок в годах: m
  n <- n.years * 12  # срок в месяцах: n
  # функция, вычисляющая аннуитетный платеж в зависимости от: 
  #  величины кредита: P, 
  #  процентной ставки: i, 
  #  срока кредита: n
- ''''''CalculateAnnuity'''''' <- function(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))
+ (monthly.annuity <- CalculateAnnuity(mortgage.amount, rate, n))
  # составим график платежей
-  vec.dates <- seq(Sys.Date(), by = 'month', length = (n + 1))
- 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
-
- df.Pay.List
+ vec.dates <- seq(Sys.Date(), by = 'month', length = (n + 1))
+ vec.annuity <- rep(monthly.annuity, (n + 1)) 
+ vec.num.of.payment <- c(0:n)
+ df.pay.list <- data.frame(vec.dates, vec.annuity, vec.num.of.payment)
+ names(df.pay.list) <- c('Date of Payment', 'Annuity Payment', 'Number of Payment')
+ df.pay.list[[, 'Outstanding Amount Start']] <- NA
+ df.pay.list[[, 'Outstanding Amount Finish']] <- NA
+ for (i in 0:n){
+   if (i == 0) {
+     df.pay.list[[, 'Outstanding Amount Start']][[(i + 1)]] <- mortgage.amount
+     df.pay.list[[, 'Outstanding Amount Finish']][[(i + 1)]] <- mortgage.amount * (1 + rate)
+   } else {
+     df.pay.list[[, 'Outstanding Amount Start']][[(i + 1)]] <- (
+       df.pay.list[[, 'Outstanding Amount Finish']][[i]] - df.pay.list[[, 'Annuity Payment']][[(i + 1)]]
+     )
+     df.pay.list[[, 'Outstanding Amount Finish']][[(i + 1)]] <- (
+       df.pay.list[[, 'Outstanding Amount Start']][[(i + 1)]] * (1 + rate)
+     )
+   }
+ }
+ 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
+===
 
 # КатегорияФинансоваяМатематика