優化

優化 ETF 投資組合

  • March 20, 2012

我知道如何使用以下約束進行均值變異數或最小變異數投資組合優化

  • 權重必須加到 1.0
  • 沒有賣空
  • 任何股票的最大重量

使用基本的二次規劃技術。但是,我被以下內容難住了:

我的股票程式碼世界由 ETF 組成。假設我想要形式的約束:

  • 債券基金不超過投資組合的20%(有很多可能的債券基金)
  • 一種資產類別(如房地產)的基金不超過投資組合的 30%

我怎樣才能執行這樣的投資組合優化?

在 R 中使用solve.QP,一種簡單的方法是為您要約束的每個組添加一個二元曝光向量作為不等式約束到您的Amat矩陣。

唯一的問題是曝光和b_0向量中的值應該是負數,因為該函式確實滿足約束:A^T b >= b_0

對於我們要約束的兩個組的簡單均值變異數範例:

library(quadprog)
library(MASS)

# Generate some returns
set.seed(100)
n <- 100   # number of assets
m <- 200   # number of states of the world
rho <- 0.7
sigma <- 0.2
mu <- .1
Cov <- matrix(rho*sigma*sigma, ncol=n, nrow=n)
diag(Cov) <- rep(sigma*sigma, n)
S <- 1 + matrix(mvrnorm(m, rep(mu, n), Sigma=Cov), ncol=n)

# Calculate a covariance matrix
Cov <- var(S)

# Setup quadratic problem
mu <- apply(S, 2, mean)
mu.target <- mean(mu)
bLo <- rep(0, n)

# Define group membership (arbitrary example)
group1 <- matrix(0,100)
group2 <- matrix(0,100)
group3 <- matrix(0,100)

group1[mu <= mean(mu) - .005] <- -1    
group2[mu > (mean(mu) - .005) & mu <= (mean(mu) + .005)] <- -1
group3[mu > mean(mu) + .005] <- -1

Amat <- rbind(1, mu)
dim(bLo) <- c(n,1)    
bvec <- t(rbind(1, mu.target, bLo))
zMat <- diag(n)
Amat <- t(rbind(Amat, zMat))
Dmat <- Cov
dvec <- rep(0, nrow(Amat))
meq <- 2  # the first two columns are equality constraints

sol <- solve.QP(Dmat=Dmat, dvec=dvec, Amat=Amat, bvec=bvec, meq)

cat(paste("Without group constraints:\n"))
data.frame(Group1=sum(sol$solution * -group1), Group2=sum(sol$solution * -group2), Group3=sum(sol$solution * -group3))

# Add group constraints:
#   Group1 <= 20%
#   Group2 <= 30%
Amat <- rbind(1, mu, t(group1), t(group2))
dim(bLo) <- c(n,1)    
bvec <- t(rbind(1, mu.target, -.20, -.30, bLo))
zMat <- diag(n)
Amat <- t(rbind(Amat, zMat))
Dmat <- Cov
dvec <- rep(0, nrow(Amat))

sol <- solve.QP(Dmat=Dmat, dvec=dvec, Amat=Amat, bvec=bvec, meq)

cat(paste("With group constraints:\n"))
data.frame(Group1=sum(sol$solution * -group1), Group2=sum(sol$solution * -group2), Group3=sum(sol$solution * -group3))

組權重:

                    1      2      3  
Without constraints  26.4%  53.1%  20.4%  
With constraints     20.0%  30.0%  50.0%

引用自:https://quant.stackexchange.com/questions/3089