การประมาณค่าโมเมนต์จากตัวอย่าง
วิธีเริ่มต้นในการประมาณค่าโมเมนต์ของพอร์ตโฟลิโอคือวิธี sample โดยจะคำนวณโมเมนต์ใน optimize.portfolio() ผ่านฟังก์ชันที่ส่งไปยังอาร์กิวเมนต์ momentFUN ซึ่งค่าเริ่มต้นของ momentFUN คือ set.portfolio.moments() ที่คำนวณ sample moments จากนั้นโมเมนต์เหล่านี้จะถูกใช้เป็น input ให้กับฟังก์ชันวัตถุประสงค์ โมเมนต์ที่ต้องประมาณค่าขึ้นอยู่กับวัตถุประสงค์ที่กำหนด ตัวอย่างเช่น วัตถุประสงค์เพื่อลดส่วนเบี่ยงเบนมาตรฐานของพอร์ตโฟลิโอต้องการเพียงการประมาณโมเมนต์ที่ 2 เท่านั้น ในขณะที่วัตถุประสงค์เพื่อเพิ่ม Sharpe Ratio สูงสุดต้องประมาณทั้งโมเมนต์ที่ 1 และโมเมนต์ที่ 2 อย่างไรก็ตาม การประมาณค่าโมเมนต์แบบ sample มีข้อเสีย ได้แก่ ความคลาดเคลื่อนในการประมาณค่าและปัญหา curse of dimensionality ซึ่งความเสี่ยงของความคลาดเคลื่อนจะเพิ่มขึ้นตามจำนวนสินทรัพย์และพารามิเตอร์ที่ต้องประมาณ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์พอร์ตโฟลิโอระดับกลางใน R
คำแนะนำการฝึกหัด
- เพิ่มวัตถุประสงค์ด้านผลตอบแทนโดยใช้
"mean"เป็นชื่อวัตถุประสงค์ - คำนวณ sample moments โดยใช้
set.portfolio.momentsแล้วกำหนดให้กับตัวแปรชื่อmoments - ตรวจสอบว่าโมเมนต์ที่ 1 มีค่าเท่ากับค่าประมาณ sample ของผลตอบแทนเฉลี่ยหรือไม่
- เพิ่มวัตถุประสงค์ด้านความเสี่ยงโดยใช้
"StdDev"เป็นชื่อวัตถุประสงค์ - คำนวณ sample moments โดยใช้
set.portfolio.momentsแล้วกำหนดให้กับตัวแปรชื่อmoments - ตรวจสอบว่าโมเมนต์ที่ 2 มีค่าเท่ากับค่าประมาณ sample ของเมทริกซ์ variance-covariance หรือไม่
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add a return objective with "mean" as the objective name
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___)
# Calculate the sample moments
moments <- set.portfolio.moments(R = ___, portfolio = ___)
# Check if moments$mu is equal to the sample estimate of mean returns
moments$mu == colMeans(asset_returns)
# Add a risk objective with "StdDev" as the objective name
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___)
# Calculate the sample moments using set.portfolio.moments. Assign to a variable named moments.
moments <- set.portfolio.moments(R = ___, portfolio = ___)
# Check if moments$sigma is equal to the sample estimate of the variance-covariance matrix
moments$sigma == cov(asset_returns)