量化交易策略

二次規劃投資組合優化

  • October 1, 2014

我正在使用 MATLAB 進行優化。QP 最小化問題以如下所示的標準形式設置。優化用於計算投資組合的權重(下式中的 x 向量)。

Min    0.5 (x'Fx) + c'x
x 

st

x_low <= x <= x_up
b_low <= Ax <= b_up

where 

c is a n x 1 vector in the objective function
x is a n x 1 vector (weights of the stocks in the portfolio)
F is a n x n matrix in the objective function
A is the linear constraint matrix
b_low & up  are the lower and upper bounds for the linear constraints

試圖效仿一個例子,但有兩個問題。首先說投資組合有 500 隻股票,傳遞給優化器的 x 向量(x 這裡是我們的初始猜測)的維度將是 1000 x 1。第二個 500 的符號與第一個 500 的符號相反,我不明白為什麼會這樣是?

F 矩陣也有類似的作用。假設我有一個矩陣 R,其中包含一些風險因素,即 500 x 500。

然後 F 設置為以下(抱歉不確定如何在此站點上正確顯示矩陣)

F =  R   -R
    -R    R

你為什麼要這樣做?

更新

求解器實際上是 Tomlab(求解的使用者指南在此處連結)。

更多資訊

只是單步執行程式碼。

x0 作為初始猜測向量 1000 x 1 傳遞。前 500 個權重是之前的權重。接下來的 500 個權重都設置為零。

x_up 顯然也是一個 1000 x 1 的向量。進一步查看程式碼。前 500 個權重是買入的上限,接下來的 500 個是賣出的上限。

x_low 是相同的,但對於下限。前 500 個權重是購買的下限,接下來的 500 個是銷售的下限。

好的,我想到的一件事是重新制定約束的標準技巧,例如 $ |x_i|<=c $ (限制暴露 $ x_i $ 同時仍然允許負權重)。注意,那 $ |x_i| \leq c $ 不是線性約束,因此求解器在這種情況下不起作用。一個小技巧可以幫助:

您將變數分為正面和負面部分: $ x_i=x_i^+ + x_i^- $ 現在,根據定義, $ x_i^+ \geq 0 $ 和 $ x_i^-\leq 0 $

現在,請注意 $ |x_i|= x_i^+ - x_i^- $ 並且約束變為線性:

$$ x_i^+ - x_i^- \leq c, \quad x_i^+ \geq 0, \quad x_i^-\leq 0 $$ 如果您有其他線性約束 $ x_i $ , 你只需插入 $ x_i = x_i^+ + x_i^- $ .

這種方法會使尺寸加倍,但會神奇地“線性化”約束。其中,您需要重新制定整個功能(例如 $ F = 1/2* (R,-R; -R,R) $ 這幾乎與您的觀察相符)

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