เพิ่ม Objective
การเพิ่ม objective ลงใน portfolio object ทำได้ด้วยฟังก์ชัน add.objective() โดย objective แต่ละรายการจะเป็น object แยกต่างหาก และถูกเก็บไว้ใน slot ชื่อ objectives ภายใน portfolio specification object วิธีนี้ทำให้ objective มีความยืดหยุ่น สามารถเพิ่ม ลบ หรือแก้ไขได้อย่างอิสระ อาร์กิวเมนต์ name ต้องเป็นฟังก์ชัน R ที่ถูกต้อง โดยมีฟังก์ชันให้เลือกใช้หลายตัวจากแพ็กเกจ PerformanceAnalytics หรือจะกำหนดฟังก์ชันเองก็ได้ อาร์กิวเมนต์ที่จำเป็นสำหรับ add.objective() ได้แก่ portfolio ที่ต้องการเพิ่ม objective, ประเภท type, ชื่อ name และอาร์กิวเมนต์เพิ่มเติมที่ส่งผ่าน ... ไปยัง constructor ของประเภท objective นั้น ส่วนอาร์กิวเมนต์สำหรับฟังก์ชัน objective จะระบุเป็น named list ผ่านพารามิเตอร์ arguments
ประเภท objective พื้นฐาน:
return: objective ประเภทนี้มุ่งเพิ่มค่า objective ให้สูงสุดrisk: objective ประเภทนี้มุ่งลดค่า objective ให้ต่ำสุดrisk_budget: objective ประเภทนี้มุ่งลดการกระจุกตัวของความเสี่ยง หรือกำหนดบทลงโทษสำหรับการมีส่วนร่วมต่อความเสี่ยงที่เกินขีดสูงสุดหรือต่ำกว่าขีดต่ำสุดที่อนุญาต
นอกจากประเภท objective ที่กล่าวมาแล้ว PortfolioAnalytics ยังรองรับ objective แบบ quadratic utility และ weight concentration อีกด้วย หากสนใจประเภท constraint อื่น ๆ สามารถดูรายละเอียดได้ในไฟล์ help ของ constraint constructors ซึ่งอธิบายประเภท constraint พร้อมตัวอย่างโค้ดประกอบ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- เพิ่ม return objective ลงใน portfolio specification object
port_specที่สร้างไว้ในแบบฝึกหัดก่อนหน้า - เพิ่ม risk objective เพื่อลด standard deviation ของพอร์ตโฟลิโอให้น้อยที่สุดใน
port_spec - เพิ่ม risk budget objective โดยกำหนดความเสี่ยงเป็น component standard deviation ใน
port_specตั้งค่าเปอร์เซ็นต์ความเสี่ยงขั้นต่ำที่ 5% และสูงสุดที่ 10% - แสดงผลลัพธ์ของ object
port_spec
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add a return objective to maximize mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add a risk objective to minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add a risk budget objective
port_spec <- add.objective(portfolio = ___, type = ___, name = ___, min_prisk = ___, max_prisk = ___)
# Print the portfolio specification object