使用matlab解决收益和风险问题 2021/1/25
解决一般数学建模问题的步骤
看完一道例题,感觉按照书上这样的步骤是挺好的。
1、问题提出
2、符号规定和基本假设
3、模型分析与建立
4、求解
5、结果分析
投资的收益和风险
市场上有n种资产si,(i=1,2,.,n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买 si;的平均收益率为ri;,风险损失率为qi;,投资越分散,总的风险越少,总体风险可用投资的si;中最大的一个风险来度量。购买si;时要付交易费,费率为pi;,当购买额不超过给定值ui;时,交易费按购买u;计算。另外,假定同期银行存款利率是T0,既无交易费又无风险(r0 =5%)。
已知n=4时相关数据如下表所列。
si | ri/% | qi/% | pi/% | ui/元 |
---|---|---|---|---|
s1 | 28 | 2.5 | 1 | 103 |
s2 | 21 | 1.5 | 2 | 198 |
s3 | 23 | 5.5 | 4.5 | 52 |
s4 | 25 | 2.6 | 6.5 | 40 |
提出问题
试给该公司设计一种投资组合方案,即用给定资金M ,有选择地购买若干种资产或存银行利息,使净收益尽可能大,总体风险尽可能小。
符号规定和基本假设
si 表示第i种投资项目
ri,pi,qi分别表示si的平均收益率、交易费率、风险损失率
ui表示si的交易定额
xi表示投资项目si的资金
a表示投资风险度
Q表示总体收益
假设M=1
投资越分散,总风险越小
总风险用投资项目si中最大的风险来度量
n+1种资产是相互独立的
在投资的这一时期ri,pi,qi为定值
净收益和总体风险只受ri,pi,qi影响,不受其他因素影响
模型的分析与建立
(1)风险评估
max{ qixi | i = 1,2,…,n}。
(2)交易费
当 xi > ui 时,为 pixi。反之,为piui。
但由于交易金额巨大,这里ui偏小,所以,交易费的值为pixi。
这样净收益就为(ri-pi)xi。
(3)收益尽可能大,风险尽可能小
目标函数
max { (i=0,n)∑(ri-pi)xi}
min{max{qixi}} ( i =1,2,…,n)
约束条件
(i=0,n) ∑(1+pi)xi=M,
xi>=0,i=0,1,2,…,n。
(4)模型简化
给定一共风险一个固定的界限a,使最大的一个风险率为a,即qixi/M<=a( i =1,2,…,n),这样把多目标规划变成一个目标的线性规划。
max (i=0,n)∑(ri-pi)xi,
qixi/M<=a,i=1,2,…,n,
(i=0,n)∑(1+pi)xi = M ,xi>=0, i=0, 1,…,n。
模型的求解
根据题目所给的数据
min f = [-0.05,-0.27,-0.19,-0.185,-0.185] · [x1,x2,x3,x4,x5]',
x0 + 1.01x1 + 1.02x2 + 1.045x3 + 1.065x4 = 1,
0.025x1 <= a,
0.015x2 <= a,
0.055x3 <= a,
0.026x4 <= a,
xi >= 0, i = 0, 1, 2, 3, 4。
这里设置初始a为0,步长为0.001,最大为0.065。
clc,clear;
a = 0;
hold on
while a < 0.065
c = [-0.05,-0.27,-0.19,-0.185,-0.185];
% 解释一下这里为什么是 4x5的矩阵,因为矩阵的乘法法则
% (a,b)x(b,c)=(a,c)
% 因为这里的x的值为一个长度为5的一列矩阵
% (4,5)x(5,1)=(4,1)
% 因此,为了保证数据的准确性,这里将第一列都设置为0。
% 这样既保证了程序的鲁棒性,又不会对计算有什么影响。
A = [zeros(4,1),diag([0.025,0.015,0.055,0.026])];
b = a*ones(4,1);
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);
plot(a,-Q,'*k');
a = a + 0.001;
end
xlabel('a'),ylabel('Q');
得出数据图:
结果分析
这里根据图可以看出,若投资者追寻极致的收益,则,当第二个转折点a=0.025时,收益饱和。
但是若投资者对于风险和收益没有特殊偏好,应该选择第一个转折点,该店左边,收益增加很快,但是右边收益增加变缓慢。该点约是 a = 0.006, Q=0.2。代码中设置一下就可以得到比较精确的数值了。
所以对应的投资方案为
风险度为 a = 0.006,收益 Q = 0.2019
x0=0.0000,
x1=0.2400,
x2=0.4000,
x3=0.1091,
x4=0.2212