私は現在、ポートフォリオの選択と最適化を行うグループ プロジェクトに参加しています。参照されている論文はここにあります:(具体的には5ページと6ページ、式7-10)
http://faculty.london.edu/avmiguel/DeMiguel-Nogales-OR.pdf
以下に示すように、M-Portfolios を使用して最適化問題を作成するのに問題があります。
min (wrt w,m) (1/T) * sum_(rho)*(w'*r_t - m) (申し訳ありませんが、フォーマットを機能させることができませんでした)
st w'e = 1 (すべての重みの合計が 1 になるという条件のみ)
これまでのところ、これは私たちが試みたことです:
function optPortfolio = portfoliofminconM(returns,theta)
% Compute the inputs of the mean-variance model
mu = mean(returns)';
sigma = cov(returns);
% Inputs for the fmincon function
T = 120;
n = length(mu);
w = theta(1:n);
m = theta((n+1):(2*n));
c = 0.01*ones(1,n);
Aeq = ones(1,(2*n));
beq = 1;
lb = zeros(2,n);
ub = ones(2,n);
x0 = ones(n,2) / n; % Start with the equally-weighted portfolio
options = optimset('Algorithm', 'interior-point', ...
'MaxIter', 1E10, 'MaxFunEvals', 1E10);
% Nested function which is used as the objective function
function objValue = objfunction(w,m)
cRp = (w'*(returns - (ones(T,1)*m'))';
objValue = 0;
for i = 1:T
if abs(cRp(i)) <= c;
objValue = objValue + (((cRp(i))^2)/2);
else
objValue = objValue + (c*(abs(cRp(i))-(c/2)));
end
end
問題は、w と m のベクトルとして使用されるシータの定義から始まります。目的関数に 2 つの変数がある fmincon を適切に使用する方法がわかりません。さらに、目的関数の値は別の値を条件としており (論文に示されているように)、これは合計 264 か月の 120 か月のローリング タイム ウィンドウで実行する必要があります (したがって、for ループとif-else)
さらに情報が必要な場合は、喜んで提供します。
同様の問題に対処する例を追加で提供できる場合は、そのリンクを教えてください。
前もって感謝します。