คำนวณ covariance สำหรับความผันผวน
ใน MPT เราวัดความเสี่ยงผ่านความผันผวน (volatility) การคำนวณความผันผวนของพอร์ตโฟลิโอนั้นค่อนข้างซับซ้อน และต้องอาศัย covariance ของผลตอบแทนรายวัน เราจะวนลูปผ่านแต่ละเดือนใน DataFrame returns_monthly แล้วคำนวณ covariance ของผลตอบแทนรายวัน
เมื่อใช้ index ประเภท datetime ของ pandas เราสามารถดึงเดือนและปีได้ด้วย df.index.month และ df.index.year จากนั้นใช้ข้อมูลนี้สร้าง mask สำหรับ returns_daily เพื่อกรองเฉพาะผลตอบแทนรายวันของเดือนและปีปัจจุบันในลูป แล้วใช้ mask นั้น subset DataFrame ด้วย df[mask] วิธีนี้จะดึงข้อมูลจาก returns_daily ที่ตรงกับเดือนและปีในแต่ละรอบของลูป สุดท้าย ใช้เมธอด .cov() ของ pandas เพื่อคำนวณ covariance ของผลตอบแทนรายวัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับการเงินด้วย Python
คำแนะนำการฝึกหัด
- วนลูปผ่าน index ของ
returns_monthly - สร้าง mask สำหรับ
returns_dailyโดยใช้เดือนและปีปัจจุบันจากreturns_monthlyแล้วจับคู่กับเดือนและปีของiในลูป - นำ mask ไปใช้กับ
returns_dailyและคำนวณ covariance ด้วย.cov()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:
# Mask daily returns for each month and year, and calculate covariance
mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
# Use the mask to get daily returns for the current month and year of monthy returns index
covariances[i] = returns_daily[____].cov()
print(covariances[i])