Расчёт доходности облигаций

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

Joshua Mayhew

Options Trader

Зачем рассчитывать доходность

  • Доходность к погашению отражает ожидаемую доходность инвестиций
  • Удобна для сравнения облигаций с разными характеристиками
Оценка и анализ облигаций в Python

Формула доходности бескупонной облигации

Вспомним формулу цены бескупонной облигации:

$PV = \frac{FV}{(1 + r)^n}$

Выразим из этого уравнения доходность $(r)$:

$FV = PV \times (1 + r)^n$

$ \frac{FV}{PV} = (1 + r)^n$

$ \sqrt[n]\frac{FV}{PV} = (1 + r)$

$ \sqrt[n]\frac{FV}{PV} -1 = r$

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

Пример: доходность бескупонной облигации

Рассмотрим ту же бескупонную облигацию, решая задачу в обратном направлении:

  • Срок погашения — 3 года
  • Номинальная стоимость — 100 USD
  • Цена — 90,19 USD

 

Какова доходность этой облигации?

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

Расчёт доходности бескупонной облигации

Бескупонная облигация на 3 года, цена 90,19 USD, номинал 100 USD:

$r = \sqrt[n]\frac{FV}{PV} -1$

ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035

 

Для обозначения доходности к погашению используем переменную ytm.

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

Формула доходности купонной облигации?

Формула цены купонной облигации:

$ PV = \frac{C}{(1 + r)^1} + \frac{C}{(1 + r)^2} + ... +\frac{C}{(1 + r)^n} + \frac{P}{(1 + r)^n}$

$ = \sum_{i=1}^n \frac{C}{(1 + r)^i} + \frac{P}{(1 + r)^n}$

Это уравнение нельзя явно разрешить относительно $r$

Для нахождения $r$ используется метод перебора

Именно так работает функция npf.rate()

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

Пример: доходность купонной облигации

Рассмотрим купонную облигацию из предыдущего примера:

  • срок погашения — 3 года
  • годовой купон — 3%
  • цена — 97,22 USD

 

Какова её доходность к погашению?

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

Расчёт доходности купонной облигации

Купонная облигация на 3 года, годовой купон 3%, цена 97,22 USD:

import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04

Обратите внимание: PV задаётся отрицательным числом.

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

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

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

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

Preparing Video For Download...