R

投資組合優化 - 零貝塔投資組合

  • July 21, 2018

我正在嘗試解決 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 $ 將確保投資組合的貝塔為零。

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