Маленький шаг в мир прикладных финансов
Оценка и анализ облигаций (часть 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»
Создание вектора денежного потока
В «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% доходностью к погашению.