Преобразование кода в функцию

Оценка и анализ облигаций на R

Clifford Ang

Senior Vice President, Compass Lexecon

Функция оценки облигаций

  • В этом курсе мы оценим множество облигаций
  • Шаги из предыдущей главы будут повторяться
  • Для упрощения расчётов создадим функцию bondprc()
Оценка и анализ облигаций на R

Этапы оценки облигаций

  • Обобщим входные параметры:
    • p — номинальная стоимость
    • r — ставка купона
    • ttm — срок до погашения
    • y — доходность
  • Часть кода также становится более универсальной
Оценка и анализ облигаций на R

Этапы оценки облигаций

cf <- c(rep(p * r, ttm - 1), p * (1 + r))
  • rep(x, y) — повторяет значение x y раз
  • x = p * r = купонный платёж
  • y = ttm - 1 = срок до погашения минус один год
  • p * (1 + r) = основной долг + последний купонный платёж
Оценка и анализ облигаций на R

Этапы оценки облигаций

cf <- data.frame(cf)
  • Преобразование в датафрейм для добавления переменных (как в предыдущем разделе)
cf$t <- as.numeric(rownames(cf))
  • Создание временного индекса для дисконтирования
    • rownames() вектора cf равны 1, 2, 3, 4, ... до значения ttm
    • as.numeric() нужен для корректного чтения значений как чисел
Оценка и анализ облигаций на R

Этапы оценки облигаций

cf$pv_factor <- 1 / (1 + y)^cf$t
  • Расчёт коэффициента приведённой стоимости (PV)
cf$pv <- cf$cf * cf$pv_factor
  • Расчёт PV каждого денежного потока
sum(cf$pv)
  • Сумма PV даёт стоимость облигации
Оценка и анализ облигаций на R

Оборачиваем код в функцию

  • Создание функции bondprc()
  • Входные параметры: p, r, ttm и y
bondprc <- function(p, r, ttm, y){
   cf <- c(rep(p * r, ttm - 1), p * (1 + r))
   cf <- data.frame(cf)
   cf$t <- as.numeric(rownames(cf))
   cf$pv_factor <- 1 / (1 + y)^cf$t
   cf$pv <- cf$cf * cf$pv_factor
   sum(cf$pv)
}
Оценка и анализ облигаций на R

Давайте потренируемся!

Оценка и анализ облигаций на R

Preparing Video For Download...