市场上有几种资金(股票,债券)Si(i=1,….n)供投资者选择,现一公司有M万元的资金可用做一段时期的投资,公司财务分析人员对几种资产进行了评估,估算出此时期内购买Si平均收益率为ri,并预测出购买Si的风险损失率为qi,考虑到投资越分散,总风险越小,公司决定用此资金购买若干资产,总体风险可用所投资的Si中最大的一个风险来度量。
购买Si时要付交易费,费率pi,当购买不超过给定值ui时,交易费按购买ui计算。另外,假定同期银行存款利率 ( =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,有选择购买若干资产或存在银行生息,使净收益率尽可能大,总风险尽可能小。
各位大哥大姐啊,这道题怎么用matlab建模啊.......
用惩罚函数做了,结果感觉不太对,哪位能帮一下啊~~~~~~任何方法都行
%编写惩罚函数pen.m
function y=pen(x)
s=0;
for i=1:1:length(x)
s=s+x(i)
end
y=min(0,min(x)).^2+(1-s).^2;
%编写交易费用函数h.m
function y=h(x,u,p)
if(x>u)
y=x*p
else
if(i>0)
y=x*p
else
y=0
end
end
%编写目标函数f.m
function y=f(x)
global w;
global M;
r=[0.28,0.21,0.23,0.25,0.05];
q=0.01*[2.5,1.5,5.5,2.6,0];
p=0.01*[1,2,4.5,6.5,0];
u=[103,198,52,40,0];
penalty=1e-25;
t=0;
for i=1:1:4
t=t+h(x(i)*M,u(1),p(i));
end
t=t-M*sum(r.*x);
y=w*t-(1-w)*max(x.*q)*M+penalty*pen(x);
for k=1:1:11
w=(k-1)*0.1;
s=5000;
for j=1:1:50
c=rand(1,5);
d=sum©;
x0=c/d;
[x,fval]=fminsearch('f',x0);
if(f(x)<s)
s=f(x);
xc=x;
end
t=0;
for i=1:1:4
t=t=h(xc(i)*M,u(i),p(i));
end
FR(k)=f(xc);
net(k)=t+M*sum(r.*xc);
risk(k)=M*max(xc.q);
xn(k,
=xc;
end
figure(1);
plot(w,xn(:,1),'.',w,xn(:2),'-',w,xn(:3),'--',w,xn(:,4),'\-',w,xn(:,5),'\');
自己找了这个方法,但是最后为什么画不出表啊~~~~~~
[em06][em06][em06]
这个问题你解决了吧?
哦 都过去快一年了诶
姐姐 我拿到了同样的题目 你可以帮我吗??
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |