楼主: fantuanxiaot
2287 24

[源码分享] 随心做的,一个组合收益和风险的Gui,改编自离歌版主的例子 [分享]

助理

Ψ▄┳一大卫卍卐席尔瓦

大师

9%

还不是VIP/贵宾

-

威望
7
论坛币
-235058 个
通用积分
15.3381
学术水平
3780 点
热心指数
3816 点
信用等级
3451 点
经验
150465 点
帖子
7694
精华
32
在线时间
1323 小时
注册时间
2013-2-3
最后登录
2019-10-31

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

fantuanxiaot 发表于 2014-12-6 19:24:23 |显示全部楼层

portfolio_gui_plot1.jpg


portfolio_gui_plot2.jpg


portfolio_gui_plot3.jpg




主程序如下:


  1. %  制作投资组合与相关系数的一个简单的gui
  2. %  参数的变化主要在相关系数的变化
  3. %  参数的设置为-1到1
  4. %  copyright by fantuanxiaot
  5. clc
  6. clear all
  7. close all
  8. figure(1)
  9. %  作图的各类省略参数的设置
  10. %  default是省略的参数的设置
  11. set(figure(1),'unit','normalized','position',[0.2,0.1,0.64,0.75],...
  12.     'color',[0.5 1 1],'defaultuicontrolunits','normalized',...
  13.     'defaultuicontrolfontsize',12,'defaultuicontrolhorizontal','left',...
  14.     'defaultuicontrolfontname','Times New Roman','name',...
  15.     'portfolio theory: relation between expected return and deviation',...
  16.     'numbertitle','off');
  17. %  坐标轴的各类参数的设置
  18. axes_1=axes('unit','normalized','position',[0.3,0.1,0.65,0.85],...
  19.     'xlim',[0 1],'ylim',[-1 1],'xcolor','b','ycolor','b',...
  20.     'fontname','Times New Roman','fontsize',12);
  21. %  基础的参数设置
  22. base_correlation=0;
  23. %  两个组合
  24. return_1=0.15;
  25. std_1=0.24;
  26. return_2=0.12;
  27. std_2=0.18;
  28. portfolio_return=[];
  29. portfolio_std=[];
  30. %  组合的设置
  31. w1=linspace(0,1,50);
  32. w2=-w1+1;
  33. portfolio_return=[w1;w2]'*[return_1;return_2];
  34. for i=1:50
  35.     std=sqrt(w1(i)^2*std_1^2+w2(i)^2*std_2^2+...
  36.         2*base_correlation*w1(i)*w2(i)*std_1*std_2);
  37.     portfolio_std=[portfolio_std std];
  38. end
  39. portfolio_std=portfolio_std';
  40. plot_1=plot(portfolio_std,portfolio_return,'mp-','markerfacecolor',...
  41.     'm','markeredgecolor','k','markersize',10,...
  42.     'color','b','linewidth',1);
  43. %  标记一个说明
  44. control_text=uicontrol(figure(1),'style','text','position',...
  45.     [0.02,0.9,0.22,0.05],'string',['Correlation=',num2str(base_correlation)],...
  46.     'fontsize',14);
  47. another_text_1=uicontrol(figure(1),'style','text','position',...
  48.     [0.02,0.81,0.22,0.08],'string','Make a Choice from -1 to 1',...
  49.     'fontsize',14);
  50. another_text_2=uicontrol(figure(1),'style','text','position',...
  51.     [0.02,0.3,0.22,0.08],'string','Point Choice',...
  52.     'fontsize',14);
  53. %  两个按键
  54. control_push_1=uicontrol(figure(1),'style','push',...
  55.     'position',[0.02,0.54,0.22,0.1],'string','Grid on Yellow on',...
  56.     'callback',['grid on,','set(gca,''color'',''y'')']);
  57. control_push_2=uicontrol(figure(1),'style','push',...
  58.     'position',[0.02,0.43,0.22,0.1],'string','Grid off Yellow off',...
  59.     'callback',['grid off,','set(gca,''color'',''w'')']);
  60. %  相关系数的滑条设置
  61. control_slider=uicontrol(figure(1),'style','slider','position',...
  62.     [0.02,0.65,0.22,0.15],'max',1,'min',-1,'sliderstep',...
  63.     [0.1,0.1],'value',base_correlation);
  64. set(control_slider,'callback',['choice=get(gcbo,''value'');',...
  65.     'plot_1=portfolio_gui_plot(choice);']);
  66. %  几个不同的组合形状
  67. point_1=uicontrol(figure(1),'style','radio','string','triangle',...
  68.     'position',[0.02 0.24 0.15 0.05]);
  69. set(point_1,'value',get(point_1,'Max'));
  70. point_2=uicontrol(figure(1),'style','radio','string','round',...
  71.     'position',[0.02 0.18 0.15 0.05]);
  72. set(point_2,'value',get(point_2,'Min'));
  73. point_3=uicontrol(figure(1),'style','radio','string','square',...
  74.     'position',[0.02 0.12 0.15 0.05]);
  75. set(point_3,'value',get(point_3,'Min'));
  76. set(point_1,'callback',[...
  77.     'set(point_1,''value'',get(point_1,''Max''));',...
  78.     'set(point_2,''value'',get(point_2,''Min''));',...
  79.     'set(point_3,''value'',get(point_3,''Min''));',...
  80.     'set(plot_1,''marker'',''v'');']);
  81. set(point_2,'callback',[...
  82.     'set(point_1,''value'',get(point_1,''Min''));',...
  83.     'set(point_2,''value'',get(point_2,''Max''));',...
  84.     'set(point_3,''value'',get(point_3,''Min''));',...
  85.     'set(plot_1,''marker'',''o'');']);
  86. set(point_3,'callback',[...
  87.     'set(point_1,''value'',get(point_1,''Min''));',...
  88.     'set(point_2,''value'',get(point_2,''Min''));',...
  89.     'set(point_3,''value'',get(point_3,''Max''));',...
  90.     'set(plot_1,''marker'',''s'');']);
复制代码


所要用到的一个函数如下:


本帖隐藏的内容



  1. function plot_1=portfolio_gui_plot(correlation)
  2. %  copyright by fantuanxiaot
  3. %  组合的其他系数
  4. %  两个组合
  5. control_text=uicontrol(figure(1),'style','text','position',...
  6.     [0.02,0.9,0.22,0.05],'string',['Correlation=',num2str(correlation)],...
  7.     'fontsize',14);
  8. return_1=0.15;
  9. std_1=0.24;
  10. return_2=0.12;
  11. std_2=0.18;
  12. portfolio_return=[];
  13. portfolio_std=[];
  14. %  组合的设置
  15. w1=linspace(0,1,50);
  16. w2=-w1+1;
  17. portfolio_return=[w1;w2]'*[return_1;return_2];
  18. for i=1:50
  19.     std=sqrt(w1(i)^2*std_1^2+w2(i)^2*std_2^2+...
  20.         2*correlation*w1(i)*w2(i)*std_1*std_2);
  21.     portfolio_std=[portfolio_std std];
  22. end
  23. portfolio_std=portfolio_std';
  24. plot_1=plot(portfolio_std,portfolio_return,'mp-','markerfacecolor',...
  25.     'm','markeredgecolor','k','markersize',10,...
  26.     'color','b','linewidth',1);
  27. end
复制代码





关键词:GUI fantuanxiaot correlation horizontal Portfolio 收益

回帖推荐

金融29号 发表于19楼  查看完整内容

谢谢楼主分享 要好好学习一下~

gssdzc 发表于16楼  查看完整内容

非常感谢分享

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

gui画图小王子

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

学习学习!

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

谢谢楼主!

孤独红狐 发表于3楼  查看完整内容

谢谢分享

汪小孩儿 发表于4楼  查看完整内容

这是用Matlab做的吗

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

来顶一个!
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
slrosssss + 5 + 4 + 4 + 4 精彩帖子
chenyi112982 + 100 + 5 + 5 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
离歌レ笑 + 100 + 5 精彩帖子

总评分: 经验 + 200  论坛币 + 105  学术水平 + 19  热心指数 + 14  信用等级 + 9   查看全部评分

本帖被以下文库推荐

stata SPSS
zxxsm 发表于 2014-12-6 19:27:55 来自手机 |显示全部楼层
来顶一个!
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 1 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 1  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

回复

使用道具 举报

孤独红狐 发表于 2014-12-6 19:55:20 |显示全部楼层
谢谢分享
回复

使用道具 举报

汪小孩儿 发表于 2014-12-6 20:21:10 |显示全部楼层
这是用Matlab做的吗
回复

使用道具 举报

tstone318 发表于 2014-12-6 20:41:09 |显示全部楼层
感谢楼主分享
回复

使用道具 举报

离歌レ笑 发表于 2014-12-6 20:43:00 |显示全部楼层
果然牛人
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 5 + 5 + 5 + 5 精彩帖子

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

回复

使用道具 举报

fantuanxiaot 发表于 2014-12-6 20:53:27 |显示全部楼层
离歌レ笑 发表于 2014-12-6 20:43
果然牛人
小的菜鸟一个 不足挂齿
回复

使用道具 举报

榄外人L 发表于 2014-12-6 22:21:28 |显示全部楼层
感谢LZ,楼主不要谦虚,真的好厉害啊
回复

使用道具 举报

mike68097 发表于 2014-12-7 00:09:00 |显示全部楼层
支持!!!!
回复

使用道具 举报

sunyiping 发表于 2014-12-7 10:04:14 |显示全部楼层
学习学习!
回复

使用道具 举报

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

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

GMT+8, 2019-11-20 08:15