CVXOPT を使用して二次計画法を実行し、平均分散最適化を使用してポットフォリオの最適な重みを計算しています。http://abel.ee.ucla.edu/cvxopt/userguide/coneprog.html#quadratic-programmingに素晴らしい例があります。ただし、引数は正規化された形式です (著者によると)。例は基本バージョンです。私はもう少し複雑な問題を解決しようとしています:
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.これらの引数は制約を設定すると思いますが、完全にはわかりません:
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 ]
ドキュメントを見ると、mu*S (最初の引数) が最小化される目的関数であり、-pbar が戻り値であると確信しています。ただし、これは最大化の問題のように見えます (負のリターンの最大化)。
わかりませんが、他の引数がどのように使用されているかはわかりません。
上記の最小化の問題と制約を考慮して、オプティマイザの使用に関するヘルプを探しています。