เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การประมาณค่าโมเมนต์จากตัวอย่าง

วิธีเริ่มต้นในการประมาณค่าโมเมนต์ของพอร์ตโฟลิโอคือวิธี 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)
แก้ไขและรันโค้ด