Đây là một câu đố thú vị.tối ưu hóa quadprog
Dưới đây là R snippet xác định điểm tiếp tuyến của hàm bậc hai đối với một đường thẳng được vẽ từ điểm (0, rf) trên trục y.
Đối với những người quen thuộc với lý thuyết danh mục đầu tư, điểm này được trả lại và không gian rủi ro và giải pháp được đặt trọng số xác định danh mục tangency (tỷ lệ tối đa chia sẻ). Đoạn cho phép trọng âm (tức là quần short) và có một hạn chế trọng lượng bình đẳng đòi hỏi tổng trọng lượng = 1.
require(quadprog)
# create artifical data
nO <- 100 # number of observations
nA <- 10 # number of assets
mData <- array(rnorm(nO * nA, mean = 0.001, sd = 0.01), dim = c(nO, nA))
rf <- 0.0001 # riskfree rate (2.5% pa)
mu <- apply(mData, 2, mean) # means
mu2 <- mu - rf # excess means
# qp
aMat <- as.matrix(mu2)
bVec <- 1 # set expectation of portfolio excess return to 1
zeros <- array(0, dim = c(nA,1))
solQP <- solve.QP(cov(mData), zeros, aMat, bVec, meq = 1)
# rescale variables to obtain weights
w <- as.matrix(solQP$solution/sum(solQP$solution))
# compute sharpe ratio
SR <- t(w) %*% mu2/sqrt(t(w) %*% cov(mData) %*% w)
Câu hỏi của tôi - làm thế nào để thích ứng với mã để giải quyết cho các thiết lập tối ưu trọng số sao cho tổng của các trọng số tổng cho một số tùy ý (bao gồm cả trường hợp góc của danh mục đầu tư tự tài trợ khi tổng trọng số = 0) trái với thống nhất? Ngoài ra, bạn có thể xem xét thêm một phần tử 'tiền mặt' vào ma trận hiệp phương sai với phương sai hiệp phương sai của 0, và thêm một ràng buộc bình đẳng yêu cầu trọng số trên tiền mặt = 1. Tuy nhiên ma trận này sẽ không được bán xác định dương . Ngoài ra, tôi cho rằng trọng số không dùng tiền mặt có thể không đáng kể.
Trong cuộc gọi 'resolveQP' của bạn, tôi không thấy ràng buộc thực thi rằng trọng số tổng thành một. Thay vào đó, 'aMat, bVec, meq = 1' yêu cầu số dư danh mục đầu tư của bạn là một, bạn có thể kiểm tra bằng' sum (aMat * solQP $ solution) '. Bên trong cuộc gọi 'resolve.QP' của bạn, bạn không nên sử dụng một vectơ của những thay vì' aMat'? – flodel
@flodel - bạn chính xác. Typo cố định, bắt tốt –