楼主: fantuanxiaot
14325 96

[源码分享] [原创]欧式看涨期权作图   [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

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

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

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
fantuanxiaot出品

2.jpg


1.jpg



Call_Option_Pricing_Plot_2.jpg


Call_Option_Pricing_Plot_1.jpg

Call_Option_Pricing_Plot_3.jpg



主程序


Call_Option_Pricing_Plot(10,12,1,0.03,0.16,8)

或者

Call_Option_Pricing_Plot(10,12,1,0.03,0.16,3)


函数代码如下



本帖隐藏的内容




  1. function Call_Option_Pricing_Plot(varargin)
  2. % copyright by fantuanxiaot
  3. % 关注fantuanxiaot的量化分析新浪博客:http://blog.sina.com.cn/u/2029278253
  4. % 期权定价作图的帽子图和三角图
  5. % Rate年无风险收益率,K是执行价格,T是到期时间(以年计量)
  6. % Sigma是年波动率,S是基期价格
  7. % N是划分的时间段数
  8. % 基于二叉树的期权定价作图
  9. %% Call_Option_Pricing is begin
  10. % 参数的输入
  11. S=varargin{1};
  12. K=varargin{2};
  13. T=varargin{3};
  14. Rate=varargin{4};
  15. Sigma=varargin{5};
  16. N=varargin{6};
  17. % 单期收益率
  18. r=Rate*T/360/N;
  19. DeltaT=T/N;
  20. % 初始化期权价格矩阵
  21. Call_Option_Pricing_Matrix=zeros(N+1);
  22. % 在Q测度下的风险中性概率
  23. U=exp(Sigma*sqrt(DeltaT));
  24. D=1/U;
  25. P=(exp(r*DeltaT)-D)/(U-D);
  26. % 最后一列的期权价值
  27. for i=1:N+1
  28. Call_Option_Pricing_Matrix(i,N+1)=max(0,S*D^(i-1)*U^(N+1-i)-K);
  29. end
  30. % 期权价值向前推移
  31. % Call_Option_Pricing_Matrix形成了期权价格递归矩阵
  32. for j=N:-1:1
  33. for i=1:j
  34. Call_Option_Pricing_Matrix(i,j)=exp(-DeltaT*r)*...
  35. (Call_Option_Pricing_Matrix(i,j+1)*P+Call_Option_Pricing_Matrix(i+1,j+1)*(1-P));
  36. end
  37. end
  38. %% Call_Option_Pricing_Hat_Plot is begin
  39. % 期权定价的帽子作图
  40. % 形成元胞位置矩阵:position_matrix
  41. figure(1)
  42. set(figure(1),'color','w')
  43. hold on
  44. xlim([-0.1 1.1])
  45. ylim([-0.1 1.1])
  46. for i=1:(N+1)
  47. position_matrix{i,N+1}=[1 (N+1-i)/N];
  48. end
  49. for i=1:N
  50. for j=1:i
  51. position_matrix{j,i}=[(i-1)/N (i+1-j)/(i+1)];
  52. end
  53. end
  54. % 形成二叉树基础图
  55. hold on
  56. for i=1:N
  57. for j=1:i
  58. position_1=[position_matrix{j,i};position_matrix{j,i+1}];
  59. [arrowx,arrowy]=arrow_plot(gca,position_1(:,1),position_1(:,2));
  60. annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','m')
  61. position_2=[position_matrix{j,i};position_matrix{j+1,i+1}];
  62. [arrowx,arrowy]=arrow_plot(gca,position_2(:,1),position_2(:,2));
  63. annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','r')
  64. end
  65. end
  66. hold on
  67. % 基于Call_Option_Pricing_Matrix来标注期权价值
  68. for i=1:(N+1)
  69. for j=1:i
  70. index=num2str(Call_Option_Pricing_Matrix(j,i));
  71. pos=position_matrix{j,i};
  72. text(pos(1),pos(2)+0.02,index,'fontsize',12,'fontname','Times New Roman');
  73. end
  74. end
  75. title('欧式看涨期权定价的尖尖帽子图','fontsize',16,'fontname','楷体')
  76. ylabel('Call Options Value','fontsize',16,'fontname','Times New Roman')
  77. xlabel('时间分段','fontsize',16,'fontname','楷体')
  78. hold off
  79. %% Call_Option_Pricing_Triangle_Plot is begin
  80. % 期权定价的三角形作图
  81. clear position_matrix
  82. figure(2)
  83. set(figure(2),'color','w')
  84. hold on
  85. xlim([-0.1 1.1])
  86. ylim([-0.1 1.1])
  87. % 形成元胞位置矩阵:position_matrix
  88. for i=1:(N+1)
  89. position_matrix{i,N+1}=[1 (N+1-i)/N];
  90. end
  91. for i=1:N
  92. high=0.5-(i-1)/N*0.5;
  93. if i==1
  94. delta=0;
  95. else
  96. delta=(1-2*high)/(i-1);
  97. end
  98. for j=1:i
  99. position_matrix{j,i}=[(i-1)/N 1-high-(j-1)*delta];
  100. end
  101. end
  102. % 形成二叉树基础图
  103. hold on
  104. for i=1:N
  105. for j=1:i
  106. position_1=[position_matrix{j,i};position_matrix{j,i+1}];
  107. [arrowx,arrowy]=arrow_plot(gca,position_1(:,1),position_1(:,2));
  108. annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','g')
  109. position_2=[position_matrix{j,i};position_matrix{j+1,i+1}];
  110. [arrowx,arrowy]=arrow_plot(gca,position_2(:,1),position_2(:,2));
  111. annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','c')
  112. end
  113. end
  114. hold on
  115. % 基于Call_Option_Pricing_Matrix来标注期权价值
  116. for i=1:(N+1)
  117. for j=1:i
  118. index=num2str(Call_Option_Pricing_Matrix(j,i));
  119. pos=position_matrix{j,i};
  120. text(pos(1),pos(2)+0.02,index,'fontsize',12,'fontname','Times New Roman');
  121. end
  122. end
  123. title('欧式看涨期权定价的三角图','fontsize',16,'fontname','楷体')
  124. ylabel('Call Options Value','fontsize',16,'fontname','Times New Roman')
  125. xlabel('时间分段','fontsize',16,'fontname','楷体')
  126. hold off
  127. end
  128. % 标注箭头函数
  129. function varargout=arrow_plot(varargin)
  130. if length(varargin{1})== 1 && ishandle(varargin{1}) && ...
  131. strcmp(get(varargin{1},'type'),'axes')        
  132. hAx=varargin{1};
  133. varargin=varargin(2:end);
  134. else
  135. hAx = gca;
  136. end;
  137. if length(varargin)==1        
  138. pos = varargin{1};
  139. else
  140. [x,y] = deal(varargin{:});
  141. end
  142. %%Get limits
  143. axun = get(hAx,'Units');
  144. set(hAx,'Units','normalized');
  145. axpos = get(hAx,'Position');
  146. axlim = axis(hAx);
  147. axwidth = diff(axlim(1:2));
  148. axheight = diff(axlim(3:4));
  149. if exist('x','var')
  150. varargout{1} = (x-axlim(1))*axpos(3)/axwidth + axpos(1);
  151. varargout{2} = (y-axlim(3))*axpos(4)/axheight + axpos(2);
  152. else
  153. pos(1) = (pos(1)-axlim(1))/axwidth*axpos(3) + axpos(1);
  154. pos(2) = (pos(2)-axlim(3))/axheight*axpos(4) + axpos(2);
  155. pos(3) = pos(3)*axpos(3)/axwidth;
  156. pos(4) = pos(4)*axpos(4)/axheight;
  157. varargout{1} = pos;
  158. end
  159. set(hAx,'Units',axun)
  160. end      
复制代码









二维码

扫码加我 拉你入群

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

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

关键词:fantuanxiaot Copyright position function Triangle 新浪博客 copyright function 收益率 二叉树

回帖推荐

Freddy0110 发表于94楼  查看完整内容

好东西 顶一个

lwell20 发表于96楼  查看完整内容

看看再看看

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

顶起来~

lipj 发表于66楼  查看完整内容

michaelxie_1981 发表于64楼  查看完整内容

看看先

blood_akm 发表于63楼  查看完整内容

大王小王 发表于57楼  查看完整内容

感谢分享,楼主辛苦了。

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

Thank You For Sharing! Very Nice Work!

Crsky7 发表于44楼  查看完整内容

Matlab能画出这样的图,不容易

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

非常感谢分享

地下爆菊 发表于37楼  查看完整内容

zbin7451f 发表于23楼  查看完整内容

好资料不断啊

gyqznufe 发表于21楼  查看完整内容

很漂亮的图!

莪的噯°迩罘懂 发表于25楼  查看完整内容

来支持下LZ

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

学习,呵呵

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

牛气哄哄

LIXUANHANK 发表于4楼  查看完整内容

看看。。。
已有 10 人评分经验 学术水平 热心指数 信用等级 收起 理由
Freddy0110 + 1 + 1 + 1 精彩帖子
zhdefei + 2 精彩帖子
三世相思2013 + 5 + 5 + 5 精彩帖子
chenyi112982 + 100 + 5 + 5 小T总是分享好料!
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
shanshantz + 50 + 3 + 3 + 3 精彩帖子
离歌レ笑 + 3 + 3 + 3 精彩帖子
狂热的爱好者 + 3 + 3 + 3 精彩帖子
sxghp + 5 + 3 + 3 精彩帖子
LIXUANHANK + 3 精彩帖子

总评分: 经验 + 250  学术水平 + 33  热心指数 + 33  信用等级 + 26   查看全部评分

本帖被以下文库推荐

沙发
6688dhj 发表于 2014-11-29 19:28:20 |只看作者 |坛友微信交流群
学习学习!

使用道具

藤椅
huyiustc 发表于 2014-11-29 19:31:30 |只看作者 |坛友微信交流群
have q look

使用道具

板凳
LIXUANHANK 学生认证  发表于 2014-11-29 19:38:38 |只看作者 |坛友微信交流群
看看。。。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 5 + 5 + 5 精彩帖子

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

使用道具

报纸
weitingkoala 发表于 2014-11-29 20:00:29 |只看作者 |坛友微信交流群
牛气哄哄
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 5 + 5 + 5 精彩帖子

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

使用道具

地板
榄外人L 发表于 2014-11-29 20:26:21 |只看作者 |坛友微信交流群
大赞!!

使用道具

7
sxghp 发表于 2014-11-29 21:12:23 |只看作者 |坛友微信交流群
学习,呵呵

使用道具

8
yuan.ying 发表于 2014-11-29 22:18:00 |只看作者 |坛友微信交流群
学习一下

使用道具

9
狂热的爱好者 学生认证  发表于 2014-11-29 22:36:08 |只看作者 |坛友微信交流群

使用道具

10
cooper56 在职认证  发表于 2014-11-29 22:42:24 |只看作者 |坛友微信交流群
看看那

使用道具

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

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

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

GMT+8, 2024-4-25 04:20