投資組合優化 - 零貝塔投資組合
我正在嘗試解決 R 中的優化組合,其中我執行以下約束:
- 將權重總和設置在邊界內
- 設置返回某個值
- 將投資組合 beta 設置為 0
其目的是在上述約束條件下將風險降至最低。
雖然我這樣做沒有任何問題,但接下來是我的問題。我想讓權重使得投資組合對某個因子的總敞口為 0。想像資產 a 的 beta 為 0.3,資產 b 為 0.7,資產 c -0.3。如何設置此約束?我的問題是使用 quadprog 我只能添加一個外部參數向量(在這種情況下是平均回報)。有沒有辦法解決這個問題,還是我看錯了?
我到目前為止的程式碼如下:
6 種資產和 6 種平均收益。另外,一個 6*6 var-cov 矩陣。權重上限為 lev_ub,下限為 lev_lb。Returns_full 是帶有返回的向量。
dvec = matrix(colMeans(returns_full),ncol = 1) Dmat = cov(returns_full) A.Constraint1 <- matrix(c(1,1,1,1,1,1), ncol=1) A.Constraint2 = matrix(c(1,1,1,1,1,1), ncol=1) Amat <- cbind(A.Equality1,A.Equality2, dvec) bvec <- c(-lev_ub,lev_lb,target_return) qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=0)
現在我的問題來自這樣一個事實,即假設我有另一個長度為 6 的向量,每個資產都有一個 beta。我想讓權重和 beta 的乘積之和為零,或者換句話說,將總投資組合 beta 設置為 0。如何添加此約束?
使用投資組合分析
在此處查看我之前的回复:https ://quant.stackexchange.com/a/16002/2154 ,您會在此處找到文件的連結。
您可以使用約束函式添加因子暴露約束為 0。
使用 add.constraint(your_portfolio_name,type=‘factor_exposure’,B = your_vector_of_betas,lower=0,upper=0)
說我們有 $ n $ 資產。假設共變異數矩陣是 $ \Sigma $ . 現在假設 $ x $ 是資產權重的向量, $ \mu $ 是資產平均收益的向量, $ \mathbb{1} $ 是所有的向量, $ B $ 是每個資產的 beta 向量,並且 $ \tau $ 你的目標回報。您要求解以下二次程序
$$ Min_x;; \frac{1}{2}x^T\Sigma x $$ 在約束下 $$ x^T \mathbb{1}=1 $$ $$ \mu^Tx \geq \tau $$ $$ B^Tx=0 $$ 約束 $ B^Tx=0 $ 將確保投資組合的貝塔為零。