数学建模算法与应用|投资的收益和风险|模型一分析

我在重点强调和不理解的地方都做了笔记。

目录

1 问题提出

 2 符号规定和基本假设

 3 模型的分析与建立

4 模型一

5 建模公式

 6.MATLAB编程代码

7 结果分析


1 问题提出

 2 符号规定和基本假设

 3 模型的分析与建立

4 模型一

 第一个max的式子的意思是(平均收益率-交易费率)*资金=利润。利润当然是最高越好,但是因为matlab只能算最小值,所以就转化为(交易费率-平均收益率)*资金。

第二个约束条件就是把风险控制在一个可控范围内。

第三个则是所有投资项目的金额和交易费的和应该等于本金。

5 建模公式

 第四部分已经说了,max变为min,所以需要计算(p-r),结果各个率的表计算。

因为r0时,只有存款利率,就是风险率p0为0,所以系数(p-r)为(0-0.05)=-0.05 

这样当第1~4种投资项目时,他们的 交易费率-平均收益率如下所示:

s1 0.01-0.28 -0.27
s2 0.02-0.21 -0.19
s3 0.045-0.23 -0.185
s4 0.065-0.25 -0.185

所以min的各个系数就计算出来了,对应如下公式:

 

前面又提到了(1+交易费)*项目资金=本金和,可以计算出各个项目的系数,即(1+交易费),也就是(1+p)。 

投资项目 1+交易费率 系数
s0 1+0 1
s1 1+0.01 1.01
s2 1+0.02 1.02
s3 1+0.045 1.045
s4 1+0.065 1.065

所以恒等公式如下所示:

 接下来的约束就是控制风险,因为假设本金为1,所以只需要计算qx,也就是风险损失率*投入资金。又因为投入资金x都应该>=0.

投资项目 风险损失率*投入资金
s0 0*x0
s1 0.025*x1
s2 0.015*x2
s3 0.055*x3
s4 0.026*x4

所以约束公式为:

 6.MATLAB编程代码

 假设风险从0开始,每次增加0.001,当风险大于等于0.05时停止分析。

值得注意的是,在约束条件下,我们需要设置一个对角矩阵,这样计算结果就是针对某一个项目的资金。diag就是对角矩阵。

a=0;
hold on;
while a<0.05
   c=[-0.05 -0.27 -0.19 -0.185 -0.185];
   A=[zeros(4,1),diag([0.025 0.015 0.055 0.026])];
   b = [a;a;a;a];
   Aeq = [1 1.01 1.02 1.045 1.065];
   beq = 1;
   LB = zeros(5,1);
   [x,Q]= linprog(c,A,b,Aeq,beq,LB);
   Q=-Q;
   plot(a,Q,'*k');
   a = a+0.001;
end
xlabel('a'),ylabel('Q')

可以看到A长这个样子:

结果如图所示:

7 结果分析

可以观察到,结果与书上的分析一致。

猜你喜欢

转载自blog.csdn.net/qq_43604183/article/details/131744096