การพล็อต Convexity เทียบกับปัจจัย
อีกวิธีหนึ่งในการตรวจสอบว่าปัจจัยใดส่งผลต่อ convexity ของพันธบัตรคือการพล็อตกราฟระหว่างปัจจัยนั้นกับค่า convexity ของพันธบัตรโดยตรง
ในแบบฝึกหัดนี้ จะกำหนดราคาพันธบัตรอายุ 20 ปี ที่มีอัตราดอกเบี้ย 6% และมูลค่าที่ตราไว้ 100 USD จากนั้นหาค่า convexity ของพันธบัตรนี้ที่ระดับอัตราผลตอบแทน (yield) ต่าง ๆ
ได้นำเข้า numpy, numpy_financial, pandas และ matplotlib ไว้ให้แล้วในชื่อ np, npf, pd และ plt ตามลำดับ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การประเมินมูลค่าและวิเคราะห์พันธบัตรด้วย Python
คำแนะนำการฝึกหัด
- สร้างอาร์เรย์ของ yield พันธบัตรตั้งแต่ 0 ถึง 20 โดยเพิ่มครั้งละ 0.1 แล้วแปลงเป็น DataFrame ของ
pandas - หาราคาของพันธบัตร เลื่อน yield ขึ้นและลงแล้วคำนวณราคาใหม่ จากนั้นคำนวณค่า convexity ของพันธบัตร
- พล็อตกราฟโดยให้ yield ของพันธบัตรอยู่บนแกน x และค่า convexity อยู่บนแกน 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')
____