НачатьНачать бесплатно

Используйте функцию uniroot для нахождения YTM

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

В этом упражнении вы воспользуетесь функцией uniroot() для нахождения корня.

Функция uniroot() требует задать вектор денежных потоков, cf, где первым элементом выступает цена облигации (как отрицательное число), а остальные элементы — ожидаемые поступления по облигации (купонные выплаты и погашение номинала).

Напомним, что цена облигации составляет $95,79, номинальная стоимость — $100, купонная ставка — 5%, срок до погашения — 5 лет.

Это упражнение является частью курса

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

Посмотреть курс

Инструкции к упражнению

  • Создайте вектор денежных потоков, cf, включающий начальную цену облигации (отрицательное значение) и платежи до погашения (положительные значения).
  • Используйте готовый код для создания простой функции оценки облигации, bval(), которая вычисляет стоимость облигации на каждом временном шаге.
  • Используйте готовый код для создания функции ytm() на основе uniroot().
  • Примените ytm() к вектору cf, чтобы найти доходность облигации к погашению.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)

# Create bond valuation function
bval <- function(i, cf,
     t=seq(along = cf))
     sum(cf / (1 + i)^t)

# Create ytm() function using uniroot
ytm <- function(cf) {
    uniroot(bval, c(0, 1), cf = cf)$root
}

# Use ytm() function to find yield


Редактировать и запускать код