Cannot debug the optimizer
이전 댓글 표시
Hi All,
I have written the following code
% Optimize EMBI Global Diversified BM
clear all;
clc;
[~,~,raw] = xlsread('U:\Matlab\SolverError.xlsx');
countryArray = raw(2:end,3:3);
isinArray =raw(2:end,1:1);
qtdPerformance = raw(2:end,17:17);
isinWeight = raw(2:end,13:13);
countryFilter = unique(countryArray);
A = zeros(size(isinArray));
v(1:120) = -1; %%min number of securities
A = diag(v);
pad = zeros(120,size(isinArray,1)-120); %%Atleast first 120 securities have non-zero value
A = horzcat(A,pad);
a = zeros(size(A),1);
c = cell2mat(qtdPerformance);
for i = 0:size(countryFilter)-1
evalStmt = sprintf('x%s = double(strcmp(countryArray,countryFilter(%s)));',num2str(i+1),num2str(i+1));
evalStmt2 = sprintf('A = vertcat(A,x%s'');',num2str(i+1));
countryWeight = sum(cell2mat(isinWeight(strcmp(countryArray,countryFilter(i+1))))) ;
if countryWeight > 0.035
targetWeight = countryWeight + 0.05;
else
targetWeight = countryWeight + 0.03;
end
evalStmt3 = sprintf('a(%s) = targetWeight;',num2str(i+120+1));
%%disp(evalStmt);
eval(evalStmt);
%%disp(evalStmt2);
eval(evalStmt2);
%%disp(evalStmt3);
eval(evalStmt3);
end %%end for loop
disp(evalStmt);
A = vertcat(A,ones(1,size(isinArray)));
a(size(A,1))=1; %%sum of all countries should be 100 percent
lb = zeros(size(A,1),1);
ub = 0.02 * ones(size(A,1),1);
[xsol,fval,flag,output,lagMult] = linprog(c,A,a,[],[],lb,ub);
to optimize the weights of instruments in a portfolio. I get the following error after 37 iterations
Exiting: One or more of the residuals, duality gap, or total relative error has grown 100000 times greater than its minimum value so far: the dual appears to be infeasible and the primal unbounded since the primal objective < -1e+10 and the dual objective < 1e+6.
The linear program I am trying to solve is
I have a list of securities sorted by performance. I want to use this list to create an optimal portfolio.
sum of all weights < = 100% each security between 0 and 2% Atleast first 120 securities have non-zero value Atleast first 120 securities should have non zero weights Securities belonging to one country are restricted by upper limit and positive numbers.
Can someone please help me out and let me know how should I go about debugging this ?
Regards, Abhishek
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Portfolio Optimization and Asset Allocation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!