เพิ่ม Constraints
การเพิ่ม constraint ลงใน portfolio specification object ทำได้ด้วยฟังก์ชัน add.constraint() โดย constraint แต่ละรายการจะถูกเก็บไว้เป็น object แยกกันใน slot constraints ของ portfolio object วิธีนี้ทำให้ constraint มีความเป็นโมดูล สามารถเพิ่ม ลบ หรือแก้ไขได้อย่างยืดหยุ่น อาร์กิวเมนต์ที่จำเป็นสำหรับ add.constraint() ได้แก่ portfolio ที่ต้องการเพิ่ม constraint, ประเภท type ของ constraint และอาร์กิวเมนต์ที่มีชื่อซึ่งส่งผ่าน ... ไปยัง constructor ของ constraint นั้น
ประเภท constraint พื้นฐาน:
- กำหนด constraint บนผลรวมของน้ำหนัก
weight_sum,weight,leveragefull_investmentเป็นกรณีพิเศษที่กำหนดmin_sum = max_sum = 1dollar_neutralเป็นกรณีพิเศษที่กำหนดmin_sum = max_sum = 0
- กำหนด constraint สำหรับน้ำหนักของสินทรัพย์แต่ละรายการ
boxlong_onlyเป็นกรณีพิเศษที่กำหนดmin = 0และmax = 1
- กำหนด constraint สำหรับผลรวมน้ำหนักของสินทรัพย์ตามกลุ่ม (เซกเตอร์ ภูมิภาค ประเภทสินทรัพย์ ฯลฯ)
group
- กำหนด constraint บน target mean return
return
ในแบบฝึกหัดนี้ จะได้เพิ่ม constraint ประเภทที่ใช้บ่อยที่สุดบางส่วน นอกจาก constraint พื้นฐานที่ระบุไว้ข้างต้น PortfolioAnalytics ยังรองรับ constraint ประเภท position limit, turnover, diversification, factor exposure และ leverage exposure ด้วย หากสนใจ constraint ประเภทอื่น สามารถดูรายละเอียดได้จากไฟล์ help ของ constraint constructor ซึ่งมีทั้งคำอธิบายและโค้ดตัวอย่าง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- เพิ่ม constraint ประเภท
weight_sumโดยกำหนดให้ผลรวมขั้นต่ำและขั้นสูงของน้ำหนักเท่ากับ 1 - เพิ่ม constraint ประเภท
boxโดยให้สินทรัพย์ 5 รายการแรกมีน้ำหนักขั้นต่ำ 10% และสินทรัพย์ที่เหลือมีน้ำหนักขั้นต่ำ 5% ทั้งนี้ สินทรัพย์ทุกรายการมีน้ำหนักสูงสุดไม่เกิน 40% - เพิ่ม constraint ประเภท
groupโดยให้สินทรัพย์ลำดับที่ 1, 5, 7, 9, 10 และ 11 เป็นกลุ่มแรก และสินทรัพย์ลำดับที่ 2, 3, 4, 6, 8 และ 12 เป็นกลุ่มที่สอง กำหนดน้ำหนักขั้นต่ำ 40% และน้ำหนักสูงสุด 60% สำหรับแต่ละกลุ่ม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add the weight sum constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min_sum = ___, max_sum = ___)
# Add the box constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min = c(___), max = ___)
# Add the group constraint
port_spec <- add.constraint(portfolio = ___, type = ___, groups = list(c(___), c(___)), group_min = ___, group_max = ___)
# Print the portfolio specification object