การลด CVaR ให้น้อยที่สุด
แบบฝึกหัดนี้จะช่วยให้คุณคุ้นเคยกับเครื่องมือของ PyPortfolioOpt สำหรับการลด CVaR ให้น้อยที่สุด ในฐานะวัตถุประสงค์ด้านการบริหารความเสี่ยง
จะได้โหลดโมดูล pypfopt.efficient_frontier และเรียกใช้คลาส EfficientCVaR จากนั้นสร้าง instance ของคลาสโดยใช้ข้อมูลสินทรัพย์จากธนาคารเพื่อการลงทุนในช่วงปี 2005 - 2010
จากนั้นจะใช้เมธอด min_cvar() ของ instance เพื่อหาน้ำหนักพอร์ตโฟลิโอที่เหมาะสมที่สุดซึ่งช่วยลด CVaR ให้น้อยที่สุด
ผลตอบแทนของสินทรัพย์ในพอร์ตโฟลิโออยู่ในเวกเตอร์ returns และแบบฝึกหัดนี้ยังใช้ dictionary ชื่อ names เพื่อแมปน้ำหนักพอร์ตโฟลิโอกับชื่อธนาคาร
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python
คำแนะนำการฝึกหัด
- นำเข้าคลาส
EfficientCVaRจากpypfopt.efficient_frontier - สร้าง instance ของคลาส
EfficientCVaRชื่อecโดยใช้returnsโดยสังเกตว่า ไม่จำเป็น ต้องใช้expected_returnsเนื่องจากฟังก์ชันวัตถุประสงค์นี้แตกต่างจากการ optimization แบบ mean-variance - ค้นหาและแสดงพอร์ตโฟลิโอที่เหมาะสมที่สุดโดยใช้เมธอด
.min_cvar()ของec
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the EfficientCVaR class
from pypfopt.____ import EfficientCVaR
# Create the efficient frontier for CVaR minimization
ec = ____(None, ____)
# Find the cVaR-minimizing portfolio weights at the default 95% confidence level
optimal_weights = ec.____()
# Map the values in optimal_weights to the bank names
optimal_weights = { names[i] : optimal_weights[i] for i in optimal_weights}
# Display the optimal weights
print(optimal_weights)