2011-09-27 64 views
2

我使用CVXOPT進行二次編程,以使用均值 - 方差優化來計算Potfolio的最優權重。 http://abel.ee.ucla.edu/cvxopt/userguide/coneprog.html#quadratic-programming有一個很好的例子。然而,這些論據是以正式形式出現的(根據作者)。這個例子是一個基本版本。我期望做一些更復雜的問題,其中:Python:使用CVXOPT進行二次編程

min: 

x'Sx 

s.t.: 

x'a >= g 
x'1 = 0 
x >= -Wb 
x <= c1 - Wb 

where: 
x: active weights of assets (active weight = portfolio weight - benchmark weight) 
S: covariance matrix of asset returns 
a: expected stock excess returns 
g: target gain 
Wb: weights of assets in the benchmark 
c: upper limit (weight) of any asset in the portfolio 

假設所有變量都已計算或已知。

的文件中提出的基本的例子:

min: 

x'Sx 

s.t. 

p'x >= g 
1'x = 1 

其中p是資產回報。

什麼我不知道(在http://abel.ee.ucla.edu/cvxopt/examples/book/portfolio.html指的是代碼和上面的優化問題):

1.I認爲這些參數設置的限制,但我不能完全肯定:

G = matrix(0.0, (n,n)) 
G[::n+1] = -1.0 
h = matrix(0.0, (n,1)) 
A = matrix(1.0, (1,n)) 
b = matrix(1.0) 

2.我相信這是「監管形式」的最小化問題,我不知道的部分是什麼意思:

mus = [ 10**(5.0*t/N-1.0) for t in xrange(N) ] 

3.什麼的參數QP的(solver.qp是二次優化):

xs = [ qp(mu*S, -pbar, G, h, A, b)['x'] for mu in mus ] 

望着文檔,我敢肯定,畝* S(第一個參數)是要minimzed目標函數和-pbar是回報。這看起來像是一個最大化問題(最大化負面回報)。

我不知道,但是如何使用其他參數。

我正在尋找使用優化器的幫助,因爲我的最小化問題和上面的約束條件。

回答

1

我閱讀了文檔,我認爲您必須使用具有以下參數的函數。我假定x具有大小n

P = S 
q = (0,....0) 

A = (1, ...... 1) 
b = (0) 

G垂直從

-a 
+I_n 
-I_n 

其中I_n是大小n x n的單位矩陣疊置。而相應的右側h

-g 
    Wb 
    ... 
    Wb 
    C1-Wb 
    ... 
    C1-Wb 

那就是:一個-gnWbnC1-Wb

HTH。

+0

感謝您的回覆,但我沒有關注'G'和'h' ...對於'G',你是什麼意思'-a,... -a'?和'+ I_n'?對於'h',我一點也不清楚。此外,你的想法是什麼邏輯? –

+0

我剛剛制定了您的問題,以便它符合您鏈接到cvxopt的規範。 – rocksportrocker

+0

-a .... -a是錯誤的。I_n是大小爲n的單位矩陣,即矩陣在diagonl外部爲零。對角線只包含一個。 – rocksportrocker