这是我在 stackoverflow 上的第一篇文章。基本上我正在研究一些金融模型,我必须为最多样化的投资组合模型(Chuouefaity 2008)创造有效的前沿。该模型是照片中的模型,我确信可以使用 quadprog 解决。特别是我无法处理约束,特别是第二个模型。
重点是我创建了一个实际上不起作用的代码(出于财务和逻辑原因)。我在这里放下它:
`clear all
close all
clc
A=load('weekly_EUROSTOXX50_price_time.txt');
times=A(:,1);
P=A(:,2:end);
RR=diff(P)./P(1:end-1,:);
[T,N]=size(RR);
mu=mean(RR);
Sigma=cov(RR);
H=2*Sigma;
vol=(diag(Sigma).^0.5)';
LB=zeros(1,N);
UB=[];
Aeq=vol;
beq=1;
[X,var] = quadprog(H,[],[],[],Aeq,beq,[],[]);
eta_min=mu*X;
eta_max=max(mu)*sum(X);
NN=100;
eta=linspace(eta_min,eta_max,NN);
beq_=[1;0];
XX=NaN(N,length(eta));
Den=NaN(1,length(eta));
x0=ones(1,N)./100;
% options=optimoptions('quadprog','Algorithm','interior-point-convex','OptimalityTolerance',1e-3);
for j=1:length(eta)
Aeq_=[vol;mu-repmat(eta(j),1,N)];
[x_starr,f_starr] =quadprog(H,[],[],[],Aeq_,beq_,[],[]);
XX(:,j)=x_starr;
Den(j)=f_starr;
end
num=(XX'*vol');
DR2=num'./Den;
plot(eta,DR2,'k','LineWidth',2)
xlabel('expected return')
ylabel('DR')
pesi=XX./sum(XX,2);`
有人有什么想法吗?非常感谢您的关注