【问题标题】:Maximixing Sharpe Ratio Matlab using Cplex使用 Cplex 最大化夏普比率 Matlab
【发布时间】:2017-02-16 22:03:16
【问题描述】:

我正在解决一个问题,我需要使用 Matlab 中的 IBM Cplex 工具根据最大化夏普比率来找到重新平衡的投资组合。从我的想法来看,我已经添加了所有条件和约束,但是当我尝试解决它时,我得到整数不可行。

代码如下:

% mu and covariance matrix Q is given
% No of stocks
n = 20;
% Risk free rate
r = 0.045; 

% Optimization problem data
lb = zeros(n,1);
ub = inf*ones(n,1);
A = [(mu' - r) 0; ones(1,n) -1];
lhs = [1;0];
rhs = [1;0];
b  = 1;

% Define continuous and binary variables
variabtype = [char(ones([1 n])*('C')) char(ones([1 1])*('B'))];

% Compute minimum variance portfolio
cplex1 = Cplex('minYK');
% cplex1.Model.sense = 'minimize';
cplex1.addCols(zeros(n+1,1), [], [lb; 0], [ub; inf], variabtype);
cplex1.addRows(lhs, A, rhs);
cplex1.Param.qpmethod.Cur = 6; % concurrent algorithm
cplex1.Param.barrier.crossover.Cur = 1; % enable crossover
cplex1.Model.Q = [2*Q zeros(n,1)];

【问题讨论】:

  • 您尝试过使用conflict refiner 吗?例如,您可以在调用 solve() 之前将模型导出为 SAV 格式,然后使用 CPLEX 交互。

标签: matlab finance cplex computational-finance


【解决方案1】:

夏普比率问题本身不是二次规划,但可以转换为二次规划(Link Here)。然后按照步骤操作,确保平均收益的维度与您的程序一致(如果它的行或列,则相应地进行转换)。

Q=[Q;zeros(1,n)];
Q=[Q zeros(n+1,1)];
%% CPLEX Solution
% Initialize the CPLEX object
cplex3 = Cplex('max_Sharpe');
cplex3.Model.sense = 'minimize';

% Optimization problem data
lb = zeros(n+1,1);
ub = inf*ones(n+1,1);
%
A = [[(  mu- r_rf/252) 0];[ones(1,n) -1]; [eye(n,n) -1*ones(n,1)]];
y = ones(n+1,1);
lhs = [1; 0; -inf*ones(n,1)];
rhs = [1; 0; zeros(n,1)];

y = ones(n+1,1);

% Add objective function and bounds on variables to CPLEX model
cplex3.addCols(zeros(n+1,1), [], lb, ub);
% Add constraints to CPLEX model
cplex3.addRows(lhs, A, rhs);

% Add quadratic part of objective function to CPLEX model
cplex3.Model.Q = 2*Q;
% Set CPLEX parameters
cplex3.Param.qpmethod.Cur = 6;
cplex3.Param.barrier.crossover.Cur = 1;% Concurrent algorithm
% Optimize the problem
cplex3.DisplayFunc = [];
cplex3.solve();

y = cplex3.Solution.x(1:n);
k = cplex3.Solution.x(n+1);

w_maxsharpe = y/k;

【讨论】:

    猜你喜欢
    • 2017-02-26
    • 1970-01-01
    • 2017-04-12
    • 2018-08-11
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多