r收益 q风险 p交易
1、简单约束条件和目标函数条件的方程optimproblem函数
prob=optimproblem('ObjectiveSense','max=');%求函数max/min类型
x=optimvar('x','5,1',LowerBound',0,'UpperBound',1);% 设置xi 5行1列=五个
f=[,,,,]
prob.Objective=f*x; %目标函数
p=[矩阵]%等号约束
M=1
prob.Constraints.c1=sum((1+p).*x)==M
%.*按元素乘 *按矩阵乘
q=[矩阵]%不等式约束条件
aa=[];QQ=[];XX=[];a=0;%初始化
while a<0.05;hold on
prob.Constraints.c2=q.*x<=a;
[sol, Q, flag,out]=solve(prob); %解出函数prob( sol是xi,QQ是f最优值,flag在非线性规划不能为负)
aa=[aa;a]
QQ=[QQ;Q]
XX=[XX,sol.x] %sol.x 表示xi的值
a=a+0.01
end
plot(aa,QQ,'*k') %(x轴 y轴 线形)二维线图 - MATLAB plot - MathWorks 中国
xlabel()
ylabel()
%Matlab中xlabel函数用法_matlab xlabel-CSDN博客具体
2.第二模min max{qixi} (注:q=0 r=0,05)
prob=optimproblem('ObjectiveSense','min');
x=optimvar('x','6,1',LowerBound',0,);
q=[0,,,,]
prob.Constraints.c1=q(2,end).*x(2,end-1)<x(end); %q1x1....<x6
prob.Objective=x(end)/M%方法:添加条件x6做最大值
p=[]
M=1
prob.Constraints.c2=sum((1+p).*x(1:end-1))==M
r=[]
aa=[];XX=[];kk=0;
k=0;
while k<0.05;hold on
prob.Constraints.c3=sum((r-p).*x(1:end-1))>=k*M;
[sol,a, flag,out]=solve(prob); %k固定率收益,a风险率
aa=[aa;a]
kk=[kk;k]
XX=[XX,sol.x] %sol.x 表示xi的值
k=k+0.01
end
plot(kk,aa,'*k')
xlabel()
ylabel()
模型三
prob=optimproblem
x=optimvar('x','6,1',LowerBound',0,);
r=[]
p=[]
q=[]
w=0:0.1:1;%0-1 单位0.1一维矩阵
R=[];Q=[];Z=[];M=1;%初始化
prob.Constraints.c1=q(2,end).*x(2,end-1)<x(end);
prob.Constraints.c2=sum((1+p).*x(1:end-1))==M;
for i=1;length(w) %循环遍历
prob.Objective=w(i)*x(end)-(1-w(i))*sum((r-p).*x(1:end-1))
prob.Constraints.c3=sum((r-p).*x(1:end-1))>=k*M;
[sol,z, flag,out]=solve(prob); %k固定率收益,a风险率
xx=sol.x;
R=[R,max(q.*x(1:end-1))]
Q=[Q,sum((r-p).*x(1:end-1))]
Z=[Z,xx'] %MATLAB 运算符和特殊字符 - MATLAB & Simulink - MathWorks 中国
text(R,Q,['w=',num2str(w(i),'','')])
%类型转换:类型2类型
%向数据点添加文本描述 - MATLAB text - MathWorks 中国
end
grid on%显示网格线
xlabel('风险'),ylabel('收益')