ПочатиПочніть безкоштовно

Використайте функцію 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


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