เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การหาค่าสูงสุดของฟังก์ชัน 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")
แก้ไขและรันโค้ด