Matlab 上机实验报告
一. 题目
设有三种证劵 S1,S2,S3,期望收益率分别为 10%, 15%和 40%,风险分别是 10%,5%和 20%。假定投资总风险用最大一种投资股票的风险来度量,且同期银行存款利率为 r0=5%,无风险,为投资者建议一种投资策略(投资比例),使其尽可能获得最大收益。
二. 问题分析
本题是一种投资问题, 可以转化为具有约束条件的线性函数的极值求解问题。
根据各种投资方式的收益率, 列出总收益与投资比例 (各种投资方式的投资数目)的方程。以总投资数为 1,各种投资方式的的风险不大于最大投资风险,各种投资方式投资数大于 0 为约束条件,建立含约束条件的线性函数。通过求极值解决问题。
三. 假设约定
假设投资三种证劵的资金分别为 s1,s2,s3,投资银行存款的资金
s0,总投资金额为 S,投资的风险度为 a,设这三种证劵之间是相互独立的,且在投资的同一时期内, 证劵收益率, 风险度及银行的利率都不发生变化。
四. 模型建立
由题目的已知条件可以知道投资后获得的各项收益为 0.05s0, 0.1s1,0.15s2,0.4s3,投资三种证劵的风险度分别为 0.1s1/S, 0.05s2/S, 0.2s3/S,为使投资者获得最大收益, 在总风险不超过 a 的情况下,可以建立如下模型:
max 0.05s0+0.1s1+0.15s2+0.4s3
且: s0+s1+s2+s3=S
0.1s1/S<=a
0.05s2/S<=a
0.2s3/S<=a
s1>=0,s2>=0,s3>=0
五. 模型简化
令 xi=si/S,则原模型可以简化为:
min f=-0.05x0-0.1x1-0.15x2-0.4x3
其中: x1+x2+x3+x4=1
0.1x1<=a
0.05x2<=a
0.2x3<=a
x1>=0,x2>=0,x3>=0
六. 程序代码
使用 MATLAB编写的程序如下所示:
a=0;
c=[-0.05,-0.1,-0.15,-0.4];
A=[0,0.1,0,0,;0,0,0.05,0;0,0,0,0.2];
aeq=[1,1,1,1];
beq=[1];
vlb=[0,0,0,0];
vub=[0];
for a=0:0.01:0.3
b=[a,a,a,a];
[x,val]=linprog(c,A,b,aeq,beq,vlb,vub);
a
x=x’
Q=-val
plot(a,Q,’.)
hold on
end
七. 实验结果
程序运行后所得的结果如下所示
原始数据如下:
a =0.1990
x =0
0.0000
0.0050
0.9950
=0.3987 a =0.2000
x = 0
0.0000
0.0000
1.0000
Q = 0.4000
a =0.2010
x =0
0.0000
0.0000
1.0000
Q = 0.4000
a = 0.2020
x =0
0.0000
0.0000
1.0000
Q = 0.4000
a =0.2030
x =0
0.0000
0.0000
1.0000
Q = 0.4000
八. 结果分析
1) 风险越大,收益也越大,但不承线性分布。
2) 风险较小时, 收益随风险的增加较明显。
风险较大时, 收益随风险的增加不明显。
3) 经过对风险与收益的关系图可知,在转折点处,风险较小但受益最大。
通过对结果的分析可以得出最佳的投资策略(投资比例) :
风险度
收益
x0
X1
X2
X3
0.0200
0.4000
0
0
0
1.0000
九.
总结体会
本题目考察了 matlab 软件中 for 语句的灵活运用, 以及各种语句之间的配合,
体现了该
软件灵活丰富的编程功能。
实验锻炼了我们分析实际问题、 转化问题、 并用所学解决问题的能力。
尤其是将身边的实际问题转化为数学问题,再将数学问题经过模型建立、简化,运用软件解决问题的能力。
实验中小组成员之间的相互协作, 提高了解决问题的效率, 同时增强了我们的团
队 意 识
X