用於投資組合的 R 包
在現代投資組合理論的背景下,人們通常希望最小化 $ \mathbf{w}^{\mathrm{{\scriptstyle T}}}\boldsymbol{\Sigma}\mathbf{w} $ 受制於 $ \mathbf{w}^{T}\boldsymbol{\mu}=c_{1} $ , $ \left\Vert \mathbf{w}\right\Vert {1}<c{2} $ 和 $ \mathbf{w}^{T}\mathbf{1}=1 $ . 是否有 R 函式或包來執行此操作?
如果您可以添加線性約束(就像您在 quadprog 中所做的那樣),那麼您可以製定 $ w \mu = c_1 $ 作為線性約束,無論如何 $ \mu $ 是(首先通過將參數設置為零將其從目標中刪除。唯一的問題是一個規範。讓我澄清一下,這是:
$$ \sum_{i=1}^n |w_i| < c_2 $$ 因此,您允許賣空,但您想限制槓桿-> 對嗎?恐怕 quadprog 無法處理這樣的約束。 一些求解器可以處理二次約束
$$ \sum_{i=1}^n |w_i|^2 = w^T w< c_2^* $$ 會限制槓桿。上面的第一個方程描述了一個約束 $ L_1 $ -規範。如果你的意思是 $ |w_i| $ 應該對每個有界 $ i $ 那麼你當然可以通過兩個不等式得到這個: $$ w \le c_2 \quad \text{and} \quad w \ge -c_2. $$ 在 John 的評論之後編輯:包nloptr可以處理非線性約束。按照連結中的範例定義目標函式和約束。注意梯度
$$ f(w) = w^T \Sigma w $$ 是(誰)給的$$ 2 \Sigma w. $$ 提供梯度將改善此非線性優化器的結果。 編輯:如果您想要直接為投資組合優化而建構的東西,那麼您可以查看 fPorfolio 和例如thispresentaton。我發現文件缺乏細節,我想知道展示文稿中“承諾”的所有功能是否都能正常工作。他們在第 13 頁上說該包可以處理非線性約束。如果您嘗試,請告訴我們這是否有效。