搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  Markowitz_Frontile_Data.zip
资料下载链接地址: https://bbs.pinggu.org/a-1673255.html
本附件包括:
  • Markowitz_Frontile_Data.mat
附件大小:
33.74 KB   举报本内容


需用到的数据





copyright by fantuanxiaot

代码如下


[hide]

  1. function Markowitz_Frontile()
  2. %X是股价的序列:每一列代表一个股价的序列
  3. %copyright by fantuanxiaot
  4. load Markowitz_Frontile_Data
  5. [~,N]=size(X);
  6. %共有N只股票
  7. %建立回报矩阵
  8. X1=X(1:end-1,:);
  9. X2=X(2:end,:);
  10. ReturnMatrix=(X2-X1)./X1;
  11. %期望收益
  12. ExpectedReturn=mean(ReturnMatrix);
  13. %最大期望收益和最小的期望收益
  14. MaxR=max(ExpectedReturn);
  15. MinR=min(ExpectedReturn);
  16. Cov_Var=cov(ReturnMatrix);
  17. Var=var(ReturnMatrix);
  18. R=linspace(5.5*MinR,4*MaxR,100);
  19. Parameters=[];
  20. Std=[];
  21. StdVar=sqrt(Var);
  22. for i=1:length(R)
  23. [beta,fval]=quadprog(Cov_Var,zeros(N,1),[],[],[ones(1,10);ExpectedReturn],[1;R(i)]);
  24. Parameters=[Parameters beta];
  25. Std=[Std sqrt(fval*2)];
  26. end
  27. %% 最小方差边界作图
  28. figure(1)
  29. set(figure(1),'color','w')
  30. hold on
  31. plot(StdVar,ExpectedReturn,'ys','markersize',12,'markerfacecolor','b','markeredgecolor','k')
  32. FrontierReturn=zeros(1,length(R));
  33. for i=1:length(R)
  34. FrontierReturn(i)=ExpectedReturn*Parameters(:,i);
  35. end
  36. plot(Std,FrontierReturn,'k','linewidth',3)
  37. plot(Std,FrontierReturn,'mp','markersize',12,'markerfacecolor','m','markeredgecolor','k')
  38. title('最小方差边界作图','fontname','Times New Roman','fontsize',16)
  39. xlabel('标准差','fontname','Times New Roman','fontsize',16)
  40. ylabel('期望收益','fontname','Times New Roman','fontsize',16)
  41. hold on
  42. %计算其他任意投资组合
  43. ExpectedReturn=ExpectedReturn';
  44. Para1=unifrnd(-0.8,1.2,1200,9);
  45. Para1=[Para1 ones(1200,1)-sum(Para1,2)];
  46. Return1=Para1*ExpectedReturn;
  47. for i=1:size(Return1)
  48. Var1(i)=Para1(i,:)*Cov_Var*Para1(i,:)';
  49. end
  50. Std1=sqrt(Var1);
  51. plot(Std1(1:300),Return1(1:300),'gv','markerfacecolor','g','markeredgecolor','k')
  52. plot(Std1(301:600),Return1(301:600),'ro','markerfacecolor','r','markeredgecolor','k')
  53. plot(Std1(601:900),Return1(601:900),'c<','markerfacecolor','c','markeredgecolor','k')
  54. plot(Std1(901:1200),Return1(901:1200),'bh','markerfacecolor','b','markeredgecolor','k')
  55. legend('个股','最小方差边界','最小方差边界组合','其他组合1','其他组合2','其他组合3','其他组合4')
  56. hold off
  57. %%有效边界作图
  58. figure(2)
  59. set(figure(2),'color','w')
  60. hold on
  61. [~,index]=min(Std);
  62. plot(Std(index:end),FrontierReturn(index:end),'k','linewidth',3)
  63. plot(Std(index:end),FrontierReturn(index:end),'r>','markersize',10,'markerfacecolor','r','markeredgecolor','k')
  64. title('有效边界作图','fontname','Times New Roman','fontsize',16)
  65. xlabel('标准差','fontname','Times New Roman','fontsize',16)
  66. ylabel('期望收益','fontname','Times New Roman','fontsize',16)
  67. hold on
  68. %计算其他任意投资组合
  69. Para1=unifrnd(-0.5,1,2000,9);
  70. Para1=[Para1 ones(2000,1)-sum(Para1,2)];
  71. Return1=Para1*ExpectedReturn;
  72. for i=1:size(Return1)
  73. Var1(i)=Para1(i,:)*Cov_Var*Para1(i,:)';
  74. end
  75. Std1=sqrt(Var1);
  76. %寻找位于有效边界下方大于最低期望收益的组合
  77. index1=find(Return1>FrontierReturn(index));
  78. Return2=Return1(index1);
  79. Std2=Std1(index1);
  80. MM=length(Return2);
  81. a1=round(MM/3);
  82. a2=2*a1;
  83. plot(Std2(1:a1),Return2(1:a1),'m*')
  84. plot(Std2(a1+1:a2),Return2(a1+1:a2),'bv','markerfacecolor','b','markeredgecolor','k')
  85. plot(Std2(a2:end),Return2(a2:end),'go','markerfacecolor','c','markeredgecolor','k')
  86. legend('有效边界','有效边界离散组合','其他组合1','其他组合2','其他组合3')
  87. hold off
复制代码
[/hide]





    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-1-19 06:08