请选择 进入手机版 | 继续访问电脑版
楼主: fantuanxiaot
2658 15

[源码分享] 随心做了一个马克维茨的Gui,分享一下 [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

威望
7
论坛币
-234475 个
通用积分
123.7824
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150207 点
帖子
7546
精华
32
在线时间
1327 小时
注册时间
2013-2-3
最后登录
2022-2-24

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

fantuanxiaot 发表于 2014-12-5 15:56:11 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
随心做了一个马克维茨的Gui,分享一下

更多量化分析请见:离歌量化

Markowitz_Gui_Simulation1.jpg


Markowitz_Gui_Simulation.jpg





发现随机生成的收益率数据感觉不对啊,这个图老是画的不正确咋办


输入1或者2即可


代码如下:

本帖隐藏的内容

  1. % copyright by fantuanxiaot
  2. % 构造马克维茨最小方差边界或者有效边界的简单Gui作图
  3. % Learing Markowitz_Gui
  4. % 马克维茨的有效边界为3个股价
  5. % 可以自己改编
  6. clc
  7. clear all
  8. close all
  9. % 先构造股价的100个收益率
  10. return_random1=normrnd(0.1,0.04,100,1);
  11. return_random2=normrnd(-0.1,0.05,100,1);
  12. % 收益率的组合形成具有相关性质的收益
  13. return_1=0.45*return_random1+0.55*return_random2;
  14. return_2=0.35*return_random1+0.65*return_random2;
  15. return_3=0.5*return_random1+0.5*return_random2;
  16. return_matrix=[return_1 return_2 return_3];
  17. % 马克维茨矩阵的各类参数的构造
  18. expected_return=mean(return_matrix);
  19. sigma_return=std(expected_return);
  20. cov_var_matrix=cov(return_matrix);
  21. frontile_return=linspace(min(expected_return),max(expected_return),50);
  22. % 有三只股票
  23. N=3;
  24. frontile_std=[];
  25. for i=1:length(frontile_return)
  26. [~,fval]=quadprog(cov_var_matrix,zeros(N,1),[],[],[ones(1,3);expected_return],[1;frontile_return(i)]);
  27. frontile_std=[frontile_std sqrt(2*fval)];
  28. end
  29. % 计算其他组合
  30. another_ratio=unifrnd(-1,1,300,2);
  31. another_ratio=[another_ratio ones(300,1)-sum(another_ratio,2)];
  32. another_return=another_ratio*expected_return';
  33. another_std=zeros(300,1);
  34. for j=1:length(another_std)
  35. another_std(j)=sqrt(another_ratio(j,:)*cov_var_matrix*another_ratio(j,:)');
  36. end
  37. % 形成有效边界组合
  38. [~,index]=min(frontile_std);
  39. efficient_return=frontile_return(index+1:end);
  40. efficient_std=frontile_std(index+1:end);
  41. index_another=find(another_return>=frontile_return(index));
  42. efficient_another_return=another_return(index_another);
  43. efficient_another_std=another_std(index_another);
  44. % frontile_return,frontile_std形成了最小方差边界的的组合
  45. % another_return,another_std形成了其他组合
  46. % efficient_return,efficient_std为有效边界的组合
  47. % efficient_another_return,efficient_another_std为中间线位于投资收益的上方
  48. figure(1)
  49. set(figure(1),'color',[0.5 1 1])
  50. set(figure(1),'unit','normalized','position',[0.22,0.14,0.55,0.7])
  51. H=axes('position',[0,0,1,1],'visible','off');
  52. % 则在版面上作出了一个Gui之图,而不是在方框里面
  53. set(gcf,'currentaxes',H)
  54. my_str='\fontname{Times New Roman}\fontsize{10}Markowitz Gui Simple Example';
  55. text(0.37,0.97,my_str,'fontsize',12)
  56. % 标注一个图
  57. axes_1=axes('unit','normalized','position',[0.3,0.1,0.65,0.85],'fontsize',8,...
  58. 'fontname','Times New Roman');
  59. h_text=uicontrol(figure(1),'style','text','unit','normalized','position',[0.03,0.65,0.23,0.3],...
  60. 'horizontal','left','string',{'选择有效边界:1或者最小方差边界:2','make_your_choice='},'fontsize',12,...
  61. 'fontname','楷体');
  62. h_edit=uicontrol(figure(1),'style','edit','unit','normalized','position',[0.03,0.44,0.23,0.2],...
  63. 'horizontal','left',...
  64. 'callback',[...
  65. 'choice=str2num(get(gcbo,''string''));',...
  66. 'switch choice;',...
  67. 'case 1;',...
  68. 'plot(efficient_std,efficient_return,''r<-'',''markerfacecolor'',''r'',''markersize'',5);',...
  69. 'hold on;',...
  70. 'plot(efficient_another_std,efficient_another_return,''g*'',''markerfacecolor'',''g'',''markersize'',5);',...
  71. 'hold off;',...
  72. 'case 2;',...
  73. 'plot(frontile_std,frontile_return,''r<-'',''markerfacecolor'',''r'',''markersize'',5);',...
  74. 'hold on;',...
  75. 'plot(another_std,another_return,''g*'',''markerfacecolor'',''g'',''markersize'',5);',...
  76. 'hold off;',...
  77. 'end;']);
  78. h_push_1=uicontrol(figure(1),'style','push','unit','normalized','position',[0.03,0.3,0.23,0.13],'string','Yellow Color',...
  79. 'callback','set(gca,''color'',''y'')');
  80. h_push_2=uicontrol(figure(1),'style','push','unit','normalized','position',[0.03,0.1,0.23,0.19],'string','Grid on',...
  81. 'callback','grid on');
复制代码






二维码

扫码加我 拉你入群

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

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

关键词:马克维茨 分享一下 GUI fantuanxiaot horizontal copyright 收益率

回帖推荐

繁清 发表于9楼  查看完整内容

学习学习

sunyiping 发表于7楼  查看完整内容

谢谢楼主!

sunyiping 发表于6楼  查看完整内容

学习学习!

tstone318 发表于5楼  查看完整内容

学习学习

slrosssss 发表于2楼  查看完整内容

秒抢沙发~~~~~~~~~~~~~~
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
离歌レ笑 + 40 + 3 + 3 + 3 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献

总评分: 经验 + 100  论坛币 + 40  学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

本帖被以下文库推荐

slrosssss 在职认证  企业认证  发表于 2014-12-5 16:00:39 |显示全部楼层 |坛友微信交流群
秒抢沙发~~~~~~~~~~~~~~

使用道具

fantuanxiaot 发表于 2014-12-5 16:09:25 |显示全部楼层 |坛友微信交流群
slrosssss 发表于 2014-12-5 16:00
秒抢沙发~~~~~~~~~~~~~~
[lol][lol]

使用道具

zbin7451f 发表于 2014-12-5 16:42:45 |显示全部楼层 |坛友微信交流群
马克维茨的Gui

使用道具

tstone318 发表于 2014-12-5 20:24:47 |显示全部楼层 |坛友微信交流群
学习学习

使用道具

sunyiping 发表于 2014-12-6 12:13:21 |显示全部楼层 |坛友微信交流群
学习学习!

使用道具

sunyiping 发表于 2014-12-6 12:20:55 |显示全部楼层 |坛友微信交流群
谢谢楼主!

使用道具

jxnu_xx 发表于 2014-12-6 12:49:30 |显示全部楼层 |坛友微信交流群
不错,看看先

使用道具

繁清 发表于 2014-12-6 12:49:48 |显示全部楼层 |坛友微信交流群
学习学习

使用道具

mike68097 发表于 2014-12-7 00:10:07 |显示全部楼层 |坛友微信交流群
支持!!!!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 07:48