Tối đa hóa hàm tiện ích bậc hai
Trong video về các thách thức của tối ưu hóa danh mục, bạn đã thấy cách giải một bài toán tối ưu hóa tiện ích bậc hai với gói quadprog. Bài tập này sẽ hướng dẫn bạn giải bài toán tiện ích bậc hai bằng gói PortfolioAnalytics. Nhắc lại: dạng hàm tiện ích bậc hai có hai thành phần, một cho lợi nhuận kỳ vọng của danh mục và một cho phương sai danh mục với tham số ác cảm rủi ro lambda.
Bài tập này là một phần của khóa học
Phân tích danh mục đầu tư nâng cao với R
Hướng dẫn bài tập
- Tạo một đối tượng đặc tả danh mục sử dụng tên tài sản từ bộ dữ liệu
index_returnsvà đặt tên đối tượng đặc tả danh mục làport_spec. - Thêm ràng buộc đầu tư toàn phần sao cho tổng trọng số bằng 1 vào đối tượng
port_spec. - Thêm ràng buộc chỉ mua (long only) sao cho trọng số của mỗi tài sản nằm trong khoảng từ 0 đến 1 vào đối tượng
port_spec. - Thêm một mục tiêu để tối đa hóa lợi nhuận kỳ vọng của danh mục vào đối tượng
port_spec. - Thêm một mục tiêu để tối thiểu hóa phương sai danh mục vào đối tượng
port_spec. Mức ác cảm rủi ro đặt là 10. - Chạy tối ưu hóa. Bài toán này có thể được giải bằng bộ giải quy hoạch bậc hai nên ta chỉ định
optimize_method = "ROI"
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")