Python으로 배우는 채권 가치평가와 분석
Joshua Mayhew
Options Trader

import numpy as np
import numpy_financial as npf
import pandas as pd
import matplotlib.pyplot as plt
bond_yields = np.arange(0, 20, 0.1)
print(bond_yields)
[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3
...
18.5 18.6 18.7 18.8 18.9 19.0 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9]
bond = pd.DataFrame(bond_yields, columns=['bond_yield'])
print(bond)
bond_yield
0 0.0
1 0.1
.. ...
198 19.8
199 19.9
[200 rows x 1 columns]
bond['bond_price'] = -npf.pv(rate=bond['bond_yield'] / 100, nper=10, pmt=5, fv=100)
print(bond)
bond_yield bond_price
0 0.0 150.000000
1 0.1 148.731575
.. ... ...
198 19.8 37.527719
199 19.9 37.319493
[200 rows x 2 columns]
plt.plot(bond['bond_yield'], bond['bond_price'])plt.xlabel('Yield (%)')plt.ylabel('Bond Price (USD)')plt.title("10 Year Bond 5% Annual Coupon")plt.show()

가격과 수익률은 반대로 움직입니다
수익률↑ = 할인율↑ = 현재가치↓
가격이 높을수록 투자수익률(수익률)은 낮아집니다

할증채 vs. 할인채
할인: 가격 < 100, 수익률 > 쿠폰
액면: 가격 = 100, 수익률 = 쿠폰

가격/수익률 관계는 비선형입니다
그려진 선은 직선이 아닙니다
이는 볼록성(convexity) 때문입니다

핵심 요약:

Python으로 배우는 채권 가치평가와 분석