1. 问题提出
市场上有 n 种资产 si ( i = 1,2,L, n )可以选择,现用数额为 M 的相当大的资金作一个时期的投资。这 n 种资产在这一时期内购买 si 的平均收益率为 ri ,风险损失率为qi ,投资越分散,总的风险越少,总体风险可用投资的 si 中最大的一个风险来度量。
购买 si 时要付交易费,(费率 pi ),当购买额不超过给定值 ui 时,交易费按购买 ui计算。另外,假定同期银行存款利率是r0,既无交易费又无风险。(r0 =5%)已知 n = 4 时相关数据如表 1。
试给该公司设计一种投资组合方案,即用给定资金 M ,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风险尽可能小。
2.符号规定和基本假设
符号规定:
si :第 i 种投资项目,如股票,债券
r , p , q :分别为 s 的平均收益率,交易费率,风险损失率
iii iui : si 的交易定额
r0 :同期银行利率
xi :投资项目 si 的资金
a :投资风险度Q :总体收益
基本假设:
1.投资数额M相当大,为了便于计算,假设M =1;2. 投资越分散,总的风险越小;
3. 总体风险用投资项目 si 中最大的一个风险来度量;
4. n 种资产 si 之间是相互独立的;
5. 在投资的这一时期内, r , p , q , r 为定值,不受意外因素影响;
iii0
6. 净收益和总体风险只受 r , p , q 影响,不受其它因素干扰。
3.模型分析与建立
1. 总体风险用所投资的 si 中最大的一个风险来衡量,即
max{qixi |i=1,2,L,n}
2.购买 si 所付交易费是一个分段函数,即
交易费
而题目所给定的定值 ui (单位:元)相对总投资 M 很少, pi ui 更小,可以忽略不计,这样购买s 的净收益为(ri − pi )xi 。
3. 要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型:
4.代码示例
//线性规划实现代码示例
a=0; //将风险控制在a以下
while (a<0.1)
c=[-0.05 -0.27 -0.19 -0.185 -0.185]; // 求MAX值,故需转换符号,求MIN -z
// 不等式约束,最大风险小于a转换为每个风险均小于a
A=[0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026];
b=[a;a;a;a];
// 等式约束条件
Aeq=[1 1.01 1.02 1.045 1.065];
beq=[1];
// 自变量取值约束条件
vlb=[0;0;0;0;0];
vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub);
Q=-fval; // 收益率转回正值
plot(a,Q,'.');hold on //每次只画一个点,不关
a=a+0.001;
end
xlabel('a');ylabel('Q');