Как рассчитать эквивалент ставки в Excel в R?

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

в Excel я могу использовать функцию RATE, но я не уверен, что использовать в R, и Google сложно, поскольку "r" так часто включается в процентные формулы. Я просмотрел пакет FinCal, но ничто не выделяется как эквивалент.

может ли кто-нибудь указать мне правильную формулу, которая эквивалентна:

 = RATE(12,-500,3000)
 = 13%
13
задан Steph Locke
13.02.2023 11:15 Количество просмотров материала 3110
Распечатать страницу

1 ответ

убедившись, что RATE функция в Excel-это внутренняя норма прибыли, в частности, для аннуитета.

есть несколько способов подойти к этому в р.

в vanilla R, оба uniroot и polyroot функции могут быть использованы для решения для скорости, но это занимает немного возиться:

рассмотрим в Excel следующее:

=RATE(10,-100,800)

что производит значение:

4.2775%

сейчас в R:

  1. вы можете написать функцию для поставки в uniroot:

    > f <- function(i,n,a) a - (1-(1+i)^(-n))/i
    > uniroot(f, interval=c(1e-9,1), 10, 800/100, tol=1e-6)$root
    [1] 0.04277498
    
  2. в качестве альтернативы, вы можете использовать polyroot, но вам нужно найти реальный корень, который находится между 0 и 1 (в следующем я использую 1+i, а не i, потому что это проще, и поэтому нужен корень между 1 и 2):

    > res <- polyroot( c(1, rep(0,10-1), -(800/100+1), 800/100) )  
    > Re(res)[ abs(Im(res))<1e-9 ]  
    -0.7622679  1.0000000  1.0427750  
    

    , где вторая строка извлекает действительные корни полиномиального уравнения в терминах (1+i) , а тот, который вы хотите, больше, чем 1 (1.0427750), из которого вычитается 1.

  3. вы также можете использовать более общие внутренние функции нормы прибыли для этой задачи, указав вектор денежных потоков, соответствующий аннуитету.

  4. ты прав, что FinCal::discount.rate делает по существу то же самое, что и RATE, но похоже, что он округляет все свои ставки до трех значительных цифр, ничего не говоря об этом, даже в помощи, насколько я вижу. Если больше точность имеет значение для вас, это может быть проблемой.

(альтернативой для большей точности является вывод этого discount.rate функция и сделать один шаг Ньютон-Рафсон, который должен сделать гораздо лучше.)

1
отвечен Glen_b 2023-02-14 19:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх