Облігації з купоном

Оцінювання та аналіз облігацій у Python

Joshua Mayhew

Options Trader

Визначення купонної облігації

  • Платить регулярні грошові потоки (купони) протягом строку
  • У день погашення виплачує і купон, і номінал
  • Купони зазвичай платять щороку або раз на пів року
  • Кількість купонів на рік називають частотою
  • Доходність до погашення — це річна дохідність від купівлі й утримання до погашення
Оцінювання та аналіз облігацій у Python

Приклад купонної облігації

Візьмімо 3‑річну облігацію з річним купоном 3%, номіналом USD 100 і доходністю 4%:

ПОПЕРЕДЖЕННЯ: Купон фіксований і не змінюється!

Оцінювання та аналіз облігацій у Python

Оцінювання купонної облігації

Розкладемо облігацію на набір безкупонних (zero coupon) облігацій і оцінімо їх:

  • 1‑річна безкупонна облігація з номіналом USD 3
  • 2‑річна безкупонна облігація з номіналом USD 3
  • 3‑річна безкупонна облігація з номіналом USD 103
Оцінювання та аналіз облігацій у Python

Оцінювання купонної облігації

3‑річна облігація з річним купоном 3%, номіналом USD 100 і доходністю 4%

Використаємо нашу формулу складних відсотків:

$ \text{Ціна 1р ZCB: } \frac{3}{(1 + 0.04)^1} = 2.88$

$ \text{Ціна 2р ZCB: } \ \frac{3}{(1 + 0.04)^2} = 2.77$

$ \text{Ціна 3р ZCB: } \ \frac{103}{(1 + 0.04)^3} = 91.57$

$\text{Ціна купонної облігації: } 2.88 + 2.77 + 91.57 = 97.22$

Оцінювання та аналіз облігацій у Python

Формула для купонної облігації

Загальніше, формула ціни купонної облігації:

$ Price = 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}$

  • $C$ — купон у кожному періоді
  • $r$ — доходність до погашення облігації
  • $P$ — номінал (principal), що виплачують у день погашення
  • $n$ — кількість періодів (зазвичай років)
Оцінювання та аналіз облігацій у Python

Використання функції pv()

Беремо ту саму 3‑річну облігацію з річним купоном 3% і доходністю до погашення 4%:

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

Ми задаємо pmt додатним.

Також ставимо мінус перед функцією.

fv встановлюємо 100, а не 103.

Оцінювання та аналіз облігацій у Python

Давайте потренуємось!

Оцінювання та аналіз облігацій у Python

Preparing Video For Download...