コンベクシティと要因のプロット
特定の要因が債券のコンベクシティに与える影響を確認するもう一つの方法は、その要因と債券のコンベクシティを直接プロットすることです。
この演習では、償還まで20年、クーポン6%、額面USD 100の債券をプライシングし、利回りの水準を変化させたときのコンベクシティを求めます。
numpy、numpy_financial、pandas、matplotlib はそれぞれ np、npf、pd、plt としてすでにインポートされています。
この演習はコースの一部です
Pythonで学ぶ債券の評価と分析
演習の手順
- 0 から 20 まで 0.1 刻みの債券利回りの配列を作成し、
pandasの DataFrame に変換します。 - 債券価格を算出し、利回りを上下にシフトして再度プライシングし、債券のコンベクシティを計算します。
- x 軸に債券利回り、y 軸にコンベクシティをとったグラフを描画します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create array of bond yields and covert to pandas DataFrame
bond_yields = np.arange(____, ____, ____)
bond = pd.DataFrame(____, columns=['bond_yield'])
# Find price of bond, reprice for higher and lower yields, calculate convexity
bond['price'] = -npf.pv(rate=bond['____'] / 100, nper=____, pmt=____, fv=____)
bond['price_up'] = ____
bond['price_down'] = ____
bond['convexity'] = (bond['____'] + bond['____'] - 2 * bond['____']) / (bond['____'] * 0.01 ** 2)
# Create plot of bond yields against convexity, add labels to axes, display plot
plt.plot(bond['____'], bond['____'])
plt.xlabel('Yield (%)')
plt.ylabel('Convexity')
____