Маленький шаг в мир прикладных финансов

Оценка и анализ облигаций (часть 1)

Как рассчитать текущую стоимость, будущую стоимость, временную стоимость денег - пример R

Облигации - это единицы корпоративного долга, выпущенные компаниями и секьюритизированные в качестве торгуемых активов. Инструмент с фиксированным доходом, который традиционно выплачивал фиксированную процентную ставку (купон) держателям долга (переменные или плавающие процентные ставки теперь также довольно распространены) - Investopedia

Характеристики облигации

Issuer: организация, занимающая деньги.

Principal: сумма займа (номинальная или номинальная).

Coupon Rate: Сумма процентов, которую эмитент соглашается выплачивать (ежегодно, раз в полгода или ежеквартально | с фиксированной или плавающей ставкой)

Maturity Date: Дата, когда основная сумма возвращается инвестору (некоторые облигации не имеют срока погашения)

Embedded Options:

  • Пример - Облигация с правом отзыва (Эмитент может выкупить облигацию раньше срока погашения по заранее согласованной цене)
  • Требуется более сложный анализ.

В этой статье мы рассмотрим:

● Годовые купоны.

● Фиксированная ставка

● Фиксированный срок погашения.

● Нет встроенных опций.

Цена против стоимости

● Иногда термины «цена» и «стоимость» взаимозаменяемы, но между ними есть различия:

  • Цена: сумма, уплаченная за приобретение актива.
  • Стоимость: сколько стоит актив.

● Для активно торгуемых активов цена может считаться наилучшей оценкой стоимости.

Временная стоимость денег (TVM)

● 1 доллар сегодня стоит больше 1 доллара завтра.

● Предположим, вы выиграли в игре 1000 долларов. Что бы вы выбрали?

  • Получите 1000 долларов сегодня?
  • Получить 1000 долларов через год?

Будущая стоимость

● Будущая стоимость - это стоимость инвестированной цены в какой-то момент в будущем.

● Будущее значение (fv) через один и два года может быть рассчитано как:

fv1 <- pv * (1+r)
fv2 <- pv * (1+r) * (1+r)
*** r is interest rate
*** pv is present value

Текущее значение

● Обратная логика будущих ценностей.

● Стоимость 1 доллара в будущем сегодня меньше.

● Таким образом, вы будете готовы взять менее 1 доллара сегодня, вместо того, чтобы ждать, чтобы получить 1 доллар через год или два.

● Это можно рассчитать следующим образом:

pv <- fv1 / (1 + r)
pv <- fv2 / ((1 + r) * (1 + r))
***fv1 is future value calculated for one year from above
***fv2 is future value calculated for two years from above

TVM применительно к облигациям

● Мы можем применить эту концепцию временной стоимости денег к облигациям.

● Пример:

  • Номинальная стоимость 100 долларов США, купонная ставка 5% (= 5 долларов США), 5 лет до погашения
  • Цена = 100 $ сегодня

Стоит ли покупать эту облигацию?

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

Предположим, что сегодня ‘zero’ год, когда вы заплатите 100 долларов за покупку облигации, обозначенной как CF Out в таблице ниже.

Вы получите $ 5 year one через year four. В 5-м году вы получите последний купонный платеж + основной платеж в размере 100 долларов США. После этого срок погашения облигации прекращается.

Чтобы узнать, стоит ли отказываться от 100 долларов сегодня, вам нужно знать, что текущая стоимость(pv) купонов и выплаты основного долга превышают 100 долларов.

Для этого вы должны взять 5 долларов в первый год и рассчитать его текущую стоимость и сделать то же самое для 5 долларов в период с year one по year four

В year five, вы вычислите стоимость 105 долларов.

Сравнение денежных потоков

Сумма приведенной стоимости этой приведенной стоимости равна стоимости облигации.

#Using the above example i.e Bond with 5 year to maturity and has a yield of 6%, which acts as the discount rate.
# Create vector of cash flows
cf <- c(5,5,5,5,105) #Create vector with cash flow
cf <- data.frame(cf)# Convert to data frame
cf$t <- as.numeric(rownames(cf)) # Add column t
cf$pv_factor <- 1 / (1 + 0.06)^cf$t # Calculate pv_factor
cf$pv <- cf$cf * cf$pv_factor # Calculate pv
sum(cf$pv)# Calculate the bond price
95.78764

Если сумма приведенной стоимости превышает 100 долларов, вы покупаете облигацию.

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

В этом разделе мы рассмотрим простую облигацию:

● Фиксированная годовая купонная ставка.

● Фиксированная дата погашения

● Нет встроенных опций.

Стоимость актива

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

Эти денежные потоки дисконтируются по соответствующей ставке дисконтирования, скорректированной с учетом риска, и математически это отражается, как показано ниже.

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

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

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

Как мы проводим этот анализ в «R»

Создание вектора денежного потока

В « мы можем создать вектор денежного потока (cf) , представив денежные потоки как есть.

cf <- c(c1,c2,c3,c4,c5....)
***last cash flow equals the last coupon rate + principal

Создание фрейма данных

Чтобы выполнить оценку облигаций, нам нужно добавить дополнительные переменные к вектору денежного потока. Чтобы сделать это, нам нужно преобразовать вектор нашего денежного потока во фрейм данных.

cf <- data.frame(cf)

Создание индекса времени

Поскольку каждый денежный поток происходит в определенное время, нам нужно добавить переменную индекса времени. Мы обозначим эту переменную ‘t’.

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

cf$t <- c(1, 2, 3, 4, 5, . . . )

Рассчитайте коэффициент текущей стоимости (PV)

Затем нам нужно будет вычислить pv factor для дисконтирования каждого денежного потока по облигациям.

Ставка дисконтирования для облигаций называется доходностью по облигации.

cf$pv_factor <- 1 / (1 + y)^cf$t
***y is discount rate

Например, если у нас ставка дисконтирования 10%. Коэффициент pv для денежных потоков, полученных через 2 года с настоящего момента:

pv_factor <- 1 / (1 + .10)^2
pv_factor
[1] 0.8264463

PV денежных потоков

Предпоследний шаг - рассчитать приведенную стоимость каждого денежного потока по облигациям путем умножения каждого денежного потока на соответствующий коэффициент pv.

cf$pv <- cf$cf * cf$pv_factor

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

Создание функции

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

Обобщения ввода

p по номинальной стоимости

r по ставке купона

ttm на срок до погашения

y для доходности

cf <- c(rep(p * r, ttm - 1), p * (1 + r))

● rep (x, y) - повторяет y раз значение x

  • x = p * r = купонная выплата
  • y = ttm — 1 = время до погашения облигации минус один год

p * (1 + r) = основная сумма + последний купонный платеж

cf <- data.frame(cf) #Convert to data frame
cf$t <- as.numeric(rownames(cf))#create time index
  • rownames () вектора “cf” равно 1, 2, 3, 4, пока “ttm” связи
  • as.numeric () необходим для того, чтобы значения читались как числа
cf$pv_factor #Calculate PV Factor
cf$pv <- cf$cf * cf$pv_factor #Calculate PV of each cash flow
sum(cf$pv) #Sum PV to arrive at bond’s value

Теперь сворачиваем все вместе

bond_price <- 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)
}

Проверьте, дает ли функция bond_price цену 95,79 доллара для стоимости облигации с номинальной стоимостью 100 долларов, купонной ставкой 5%, 5 годами до погашения и 6% доходностью к погашению.