function Call_Option_Pricing_Plot(varargin)

%  copyright by fantuanxiaot

%  关注fantuanxiaot的量化分析新浪博客:http://blog.sina.com.cn/u/2029278253

%  期权定价作图的帽子图和三角图

%  Rate年无风险收益率,K是执行价格,T是到期时间(以年计量)

%  Sigma是年波动率,S是基期价格

%  N是划分的时间段数

%  基于二叉树的期权定价作图

%% Call_Option_Pricing is begin

%  参数的输入

S=varargin{1};

K=varargin{2};

T=varargin{3};

Rate=varargin{4};

Sigma=varargin{5};

N=varargin{6};

%  单期收益率

r=Rate*T/360/N;

DeltaT=T/N;

%  初始化期权价格矩阵

Call_Option_Pricing_Matrix=zeros(N+1);

%  在Q测度下的风险中性概率

U=exp(Sigma*sqrt(DeltaT));

D=1/U;

P=(exp(r*DeltaT)-D)/(U-D);

%  最后一列的期权价值

for i=1:N+1

Call_Option_Pricing_Matrix(i,N+1)=max(0,S*D^(i-1)*U^(N+1-i)-K);

end

%  期权价值向前推移

%  Call_Option_Pricing_Matrix形成了期权价格递归矩阵

for j=N:-1:1

for i=1:j

Call_Option_Pricing_Matrix(i,j)=exp(-DeltaT*r)*...

(Call_Option_Pricing_Matrix(i,j+1)*P+Call_Option_Pricing_Matrix(i+1,j+1)*(1-P));

end

end

%% Call_Option_Pricing_Hat_Plot is begin

%  期权定价的帽子作图

%  形成元胞位置矩阵:position_matrix

figure(1)

set(figure(1),'color','w')

hold on

xlim([-0.1 1.1])

ylim([-0.1 1.1])

for i=1:(N+1)

position_matrix{i,N+1}=[1 (N+1-i)/N];

end

for i=1:N

for j=1:i

position_matrix{j,i}=[(i-1)/N (i+1-j)/(i+1)];

end

end

%  形成二叉树基础图

hold on

for i=1:N

for j=1:i

position_1=[position_matrix{j,i};position_matrix{j,i+1}];

[arrowx,arrowy]=arrow_plot(gca,position_1(:,1),position_1(:,2));

annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','m')

position_2=[position_matrix{j,i};position_matrix{j+1,i+1}];

[arrowx,arrowy]=arrow_plot(gca,position_2(:,1),position_2(:,2));

annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','r')

end

end

hold on

%  基于Call_Option_Pricing_Matrix来标注期权价值

for i=1:(N+1)

for j=1:i

index=num2str(Call_Option_Pricing_Matrix(j,i));

pos=position_matrix{j,i};

text(pos(1),pos(2)+0.02,index,'fontsize',12,'fontname','Times New Roman');

end

end

title('欧式看涨期权定价的尖尖帽子图','fontsize',16,'fontname','楷体')

ylabel('Call Options Value','fontsize',16,'fontname','Times New Roman')

xlabel('时间分段','fontsize',16,'fontname','楷体')

hold off

%% Call_Option_Pricing_Triangle_Plot is begin

%  期权定价的三角形作图

clear position_matrix

figure(2)

set(figure(2),'color','w')

hold on

xlim([-0.1 1.1])

ylim([-0.1 1.1])

%  形成元胞位置矩阵:position_matrix

for i=1:(N+1)

position_matrix{i,N+1}=[1 (N+1-i)/N];

end

for i=1:N

high=0.5-(i-1)/N*0.5;

if i==1

delta=0;

else

delta=(1-2*high)/(i-1);

end

for j=1:i

position_matrix{j,i}=[(i-1)/N 1-high-(j-1)*delta];

end

end

%  形成二叉树基础图

hold on

for i=1:N

for j=1:i

position_1=[position_matrix{j,i};position_matrix{j,i+1}];

[arrowx,arrowy]=arrow_plot(gca,position_1(:,1),position_1(:,2));

annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','g')

position_2=[position_matrix{j,i};position_matrix{j+1,i+1}];

[arrowx,arrowy]=arrow_plot(gca,position_2(:,1),position_2(:,2));

annotation('textarrow',arrowx,arrowy,'headwidth',10,'color','c')

end

end

hold on

%  基于Call_Option_Pricing_Matrix来标注期权价值

for i=1:(N+1)

for j=1:i

index=num2str(Call_Option_Pricing_Matrix(j,i));

pos=position_matrix{j,i};

text(pos(1),pos(2)+0.02,index,'fontsize',12,'fontname','Times New Roman');

end

end

title('欧式看涨期权定价的三角图','fontsize',16,'fontname','楷体')

ylabel('Call Options Value','fontsize',16,'fontname','Times New Roman')

xlabel('时间分段','fontsize',16,'fontname','楷体')

hold off

end

%  标注箭头函数

function varargout=arrow_plot(varargin)

if length(varargin{1})== 1 && ishandle(varargin{1}) && ...

strcmp(get(varargin{1},'type'),'axes')

hAx=varargin{1};

varargin=varargin(2:end);

else

hAx = gca;

end;

if length(varargin)==1

pos = varargin{1};

else

[x,y] = deal(varargin{:});

end

%%Get limits

axun = get(hAx,'Units');

set(hAx,'Units','normalized');

axpos = get(hAx,'Position');

axlim = axis(hAx);

axwidth = diff(axlim(1:2));

axheight = diff(axlim(3:4));

if exist('x','var')

varargout{1} = (x-axlim(1))*axpos(3)/axwidth + axpos(1);

varargout{2} = (y-axlim(3))*axpos(4)/axheight + axpos(2);

else

pos(1) = (pos(1)-axlim(1))/axwidth*axpos(3) + axpos(1);

pos(2) = (pos(2)-axlim(3))/axheight*axpos(4) + axpos(2);

pos(3) = pos(3)*axpos(3)/axwidth;

pos(4) = pos(4)*axpos(4)/axheight;

varargout{1} = pos;

end

set(hAx,'Units',axun)

end

matlab 期权图,欧式看涨期权定价作图|MATLAB 程序化交易(量化投资)|MATLAB技术论坛 - Powered by Discuz!...相关推荐

  1. matlab数组数据绘图命令,基本绘图命令、数组与数据拟合|Mathematica MathCAD 论坛|MATLAB技术论坛 - Powered by Discuz!...

    2.2        基本绘图命令.数组与数据拟合 2.2.1        基本绘图命令 1. 二维作图函数Plot Plot[函数或函数组,{自变量,下限,上限},选项] 例:画y=sinx在[ ...

  2. matlab 做偏回归分析,偏最小二乘回归分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...

    clear;clc; pz = load('pz.txt'); mu = mean(pz);       % 均值 sig = std(pz);           % 方差 rr = corrcoe ...

  3. 光伏出力预测的神经网络matlab编程,神经网络预测光伏出力|MATLAB 神经网络|MATLAB技术论坛 - Powered by Discuz!...

    %晴天预测 clc; clear; %clear; close all; ptrain = Columns 1 through 8 93.6908  115.1887   22.5978   96.1 ...

  4. matlab rof算法,ROF|MATLAB 其它技术应用|MATLAB技术论坛 - Powered by Discuz!

    谢谢您的回复 那个程序是下的 %% ROFdenoise % %  This denoising method is based on total-variation, originally prop ...

  5. 常用零件形状 matlab,汽车零部件的形状优化|Simulink 快速原型、实时仿真和测试|MATLAB技术论坛 - Powered by Discuz!...

    CAESES为复杂汽车零部件探索和优化设计提供综合软件解决方案.结合专业知识和CFD软件工具,CAESES不仅能大幅提升汽车零部件及产品的性能,还能大大节省时间和成本. CAESES是传统CAD和仿真 ...

  6. matlab 计算一组数据的方差分析,多因素方差分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...

    一般来讲,使用anovan函数进行多因素方差分析时,调用格式是第二种形式,{A,B,C,D}里面是没有编码的形式,返回一个方差分析表的形式,不过如果要求精度高的话,似乎不能显示更多的小数点位数. 不过 ...

  7. 基于量子计算的无收益标的资产欧式看涨期权定价和delta风险分析

    目录 1. 问题 1.1. 描述 1.2. 解读 2. 原理 2.1. BSM模型 2.2. 经典蒙特卡洛算法 2.3. 量子蒙特卡洛算法 2.4. 量子.量子计算和量子算法 2.5. 量子算法在金融 ...

  8. matlab 期权图,如何使用matlab计算期权价格

    参考论文 期权定价理论是现代金融学中最为重要的理论之一,也是衍生金融工具定价中最复杂的.本文给出了欧式期权定价过程的一个简单推导,并利用Matlab对定价公式给出了数值算例及比较静态分析,以使读者能更 ...

  9. matlab 期权图,期权定价matlab程序.docx

    1.三叉树法matlab程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

最新文章

  1. Ubuntu搭建Spark运行环境
  2. Matlab随笔之矩阵入门知识
  3. 神经网络早期的M-P(Warren McCulloch-Walter Pitts)模型
  4. flex 字体加载方式4
  5. LeetCode 38外观数列39组合总和
  6. VTK:参数化超环形用法实战
  7. nodejs 框架 中文express 4.xxx中文API手册
  8. 谷歌已推送 Android Q Beta 1
  9. python作业高级FTP(第八周)
  10. 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
  11. 怎么把一个Java应用打包成Docker镜像
  12. [bzoj 3226]校门外的区间
  13. dicom文件的后缀_dcm文件扩展名,dcm文件怎么打开?
  14. 干货 | PyTorch常用代码段整理合集
  15. python 获取进程id_使用python 获取进程pid号的方法
  16. fly bird用java怎么写,java-flybird_wang-51CTO博客
  17. 工业物联网设计普遍存在哪些问题?
  18. 快速实现ARM和DSP的通信和协同工作
  19. 从Unix看文言文为什么短
  20. [组合数学] NC13611树 (逆元的计算)

热门文章

  1. E. Jumpy Robot(枚举题)
  2. 基于Opencv和STM32物理鼠标的目标跟踪器
  3. 华为云计算产品白皮书与案例合集
  4. STM32CubeMX学习笔记(44)——USB接口使用(HID按键)
  5. 师徒结对活动记录表计算机,师徒结对活动记录表一.doc
  6. 一个用户只能登录一次
  7. c语言社团管理系统实验报告,C语言课程设计大学社团管理系统
  8. delphi使用Foxit Quick PDF Library读写pdf文本和图片
  9. 计算机女学霸,邹楚杭:计算机学院走出来的才女学霸
  10. 网络基础—HTTP、HTPPS、GET、POST、Socket