Рассчитать процентную ставку по ежемесячным ипотечным платежам, используя R - PullRequest
0 голосов
/ 29 октября 2018

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

Формула для расчета ежемесячного аннуитета:

              i
J = T * --------------
        1 - (1 + i)^-n

, где T - общая сумма ипотеки, i - ежемесячный процент, а J - аннуитет

Пример:

library(purrr)
library(dplyr)

mortgage   <- 300000
#annualRate <- ??
duration   <- 360
#annuity
ann <- 1108.86

#Use brute force to find the interest rate
annuity <- function(annualRate, mortgage, duration) {
    monthRate <- annualRate / 12
    ann <- (monthRate / (1- ((1+monthRate)^(-duration)) )) * mortgage
    data.frame(rate = annualRate*100, ann = ann)
}

#Try some rates
checkRates <- seq(1,3,0.5)/100
res <- map(checkRates , annuity, mortgage, duration) %>% bind_rows()
res

#  rate       ann
#1  1.0  964.9186
#2  1.5 1035.3606
#3  2.0 1108.8584
#4  2.5 1185.3627
#5  3.0 1264.8121

Используя эту методику грубой силы, интерес составляет 2.0%

Проверьте решение:

annualRate <- 2/100

monthRate <- annualRate / 12
(monthRate / (1- ((1+monthRate)^(-duration)) )) * mortgage
#[1] 1108.858

Однако мне было интересно, можно ли рассчитать точную процентную ставку в R без использования грубой силы.

# 1108.86          i
# ------- =  --------------
# 300000     1 - (1 + i)^-360

Возможно ли решить это уравнение, используя R? Любое предложение приветствуется.

1 Ответ

0 голосов
/ 29 октября 2018

Я думаю, что вы ищете uniroot.Вот пример использования для вашей проблемы:

mortgage   <- 300000
duration   <- 360
ann <- 1108.86
uniroot(function(x) mortgage * x/12 / (1 - (1+x/12)^(-duration)) - ann,
    c(1e-6,1))$root * 100
#[1] 2.000091
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...