การ Optimization ด้วย Objective Function แบบกำหนดเอง
แบบฝึกหัดนี้ต่อเนื่องจากแบบฝึกหัดก่อนหน้า โดยจะรัน optimization ด้วย objective function แบบกำหนดเองที่คำนวณค่าส่วนเบี่ยงเบนมาตรฐานรายปีของพอร์ตโฟลิโอ เนื่องจาก objective function สามารถเป็นฟังก์ชัน R ที่ถูกต้องใดก็ได้ เราจึงเพิ่ม risk objective สำหรับฟังก์ชัน pasd() อย่างไรก็ตาม ฟังก์ชัน set.portfolio.moments() จะไม่รู้จักชื่อ objective pasd() ดังนั้นจึงต้องสร้าง moment function แบบกำหนดเองขึ้นมาเพื่อคำนวณ moment อันดับสอง ได้แก่ sigma และจะแก้ปัญหานี้โดยใช้ random portfolios เป็นวิธี optimization
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- เพิ่ม objective function แบบกำหนดเองที่สร้างไว้ในแบบฝึกหัดก่อนหน้าลงใน portfolio specification object
- Print portfolio specification object เพื่อดู constraints และ objective
- รัน optimization โดยชื่อของ moment function แบบกำหนดเองคือ
set_sigma - Print ผลลัพธ์ของการ optimization
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add custom objective to portfolio specification
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Print the portfolio specificaton object
# Run the optimization
opt <- optimize.portfolio(R = ___, portfolio = ___, momentFUN = ___, optimize_method = "random", rp = rp)
# Print the results of the optimization