การหาค่าสูงสุดของฟังก์ชัน Quadratic Utility
ในวิดีโอเกี่ยวกับความท้าทายของการปรับพอร์ตโฟลิโอให้เหมาะสม คุณได้เห็นวิธีแก้ปัญหา Quadratic Utility Optimization โดยใช้แพ็กเกจ quadprog แบบฝึกหัดนี้จะแสดงวิธีแก้ปัญหาเดียวกันโดยใช้แพ็กเกจ PortfolioAnalytics แทน สูตร Quadratic Utility ประกอบด้วยสองส่วน ได้แก่ ผลตอบแทนเฉลี่ยของพอร์ตโฟลิโอ และความแปรปรวนของพอร์ตโฟลิโอที่มีพารามิเตอร์ความเกลียดความเสี่ยง (lambda)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- สร้างออบเจ็กต์ Portfolio Specification โดยใช้ชื่อสินทรัพย์จากชุดข้อมูล
index_returnsและตั้งชื่อออบเจ็กต์ว่าport_spec - เพิ่มข้อจำกัด Full Investment ให้กับออบเจ็กต์
port_specเพื่อให้ผลรวมของน้ำหนักเท่ากับ 1 - เพิ่มข้อจำกัด Long Only ให้กับออบเจ็กต์
port_specเพื่อให้น้ำหนักของแต่ละสินทรัพย์อยู่ระหว่าง 0 ถึง 1 - เพิ่มวัตถุประสงค์เพื่อหาค่าสูงสุดของผลตอบแทนเฉลี่ยของพอร์ตโฟลิโอในออบเจ็กต์
port_spec - เพิ่มวัตถุประสงค์เพื่อลดความแปรปรวนของพอร์ตโฟลิโอให้น้อยที่สุดในออบเจ็กต์
port_specโดยตั้งค่าความเกลียดความเสี่ยงเป็น 10 - รันการปรับให้เหมาะสม เนื่องจากปัญหานี้แก้ได้ด้วย Quadratic Programming Solver จึงระบุ
optimize_method = "ROI"
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")