ปรับแต่งข้อจำกัดและวัตถุประสงค์
ในแบบฝึกหัดนี้ เราตั้งสมมติฐานว่าการปรับแต่งข้อจำกัดและ/หรือวัตถุประสงค์จะช่วยให้ประสิทธิภาพดีขึ้น ดังนั้นจะเพิ่มวัตถุประสงค์แบบ risk budget เพื่อกำหนดสัดส่วนการมีส่วนร่วมต่อความเสี่ยง (percentage contribution to risk) ขั้นต่ำและสูงสุดของแต่ละสินทรัพย์ โดยต่อยอดจาก portfolio specification ที่สร้างไว้แล้ว ปัญหา optimization นี้มีความซับซ้อนมากขึ้น จึงต้องใช้ global solver ซึ่งจะใช้ random portfolios เป็นวิธีการ optimize
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- เพิ่มวัตถุประสงค์แบบ risk budget ชื่อ
risk_budgetลงในport_specโดยกำหนดให้ความเสี่ยงวัดจาก standard deviation ตั้งค่าสัดส่วนความเสี่ยงขั้นต่ำที่ 5% และสูงสุดที่ 10% - รันการ optimize แบบ rebalancing รายไตรมาส โดยตั้งค่า training period และ rolling window ให้ใช้ข้อมูล 5 ปี แล้วกำหนดผลลัพธ์ให้กับตัวแปรชื่อ
opt_rebal_rb - แสดงกราฟน้ำหนัก (weights)
- แสดงกราฟสัดส่วนการมีส่วนร่วมต่อความเสี่ยงของแต่ละองค์ประกอบ (component percentage contribution to risk)
- คำนวณผลตอบแทนของพอร์ตโฟลิโอโดยใช้
Return.portfolio()แล้วกำหนดผลลัพธ์ให้กับตัวแปรชื่อreturns_rb
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add a risk budge objective
port_spec <- add.objective(portfolio = ___,
type = ___,
name = ___,
min_prisk = ___,
max_prisk = ___)
# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___,
portfolio = ___,
optimize_method = "random", rp = rp,
trace = TRUE,
rebalance_on = ___,
training_period = ___,
rolling_window = ___)
# Chart the weights
# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)
# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"