matlab - 向后工作以在每个节点上为期权定价
问题描述
我正在尝试向后工作并为 Matlab 中每个节点的选项定价,但是当我这样做时,我没有得到正确的答案。我想在时间 0 找到看涨期权的价值。任何帮助/建议将不胜感激。谢谢
% generate the tree
K=100; r=0.05; delta=0.1; T=1; sigma=0.2; n=100; b=2; dt=1/3;
S1=130*ones(1,1); % stock price at time t = 0
S2=zeros(b,1); % stock price at time t = 1/3
S3=zeros(b*b,1); % stock price at time t = 2/3
S4=zeros(b*b*b,1); % stock price at time t = 1
t=[0;1/3;2/3;1];
for i=1:b
z=normrnd(0,1);
S2(i)=S1*exp((r-delta-(sigma)^2)*(dt)+sigma*sqrt(dt)*z);
end
for i=1:b
for j=1:b
z=normrnd(0,1);
S3((i-1)*b+j)=S2(i)*exp((r-delta-(sigma)^2)*(dt)+sigma*sqrt(dt)*z);
end
end
for i=1:b*b
for j=1:b
z=normrnd(0,1);
S4((i-1)*b+j)=S3(i)*exp((r-delta-(sigma)^2)*(dt)+sigma*sqrt(dt)*z);
end
end
matrix=NaN*ones(size(S4,1),4);
%NaN=0;
matrix(1:size(S1,1),1)=S1;
matrix(1:size(S2,1),2)=S2;
matrix(1:size(S3,1),3)=S3;
matrix(1:size(S4,1),4)=S4;
S=[S1;S2;S3;S4];
% work backwards to price the option at each nodes
theta4=max(S4-K,0)
for i=1:length(S3)
theta3(i)=max(S3(i)-K,exp(-r*(1/3))*theta4(i))
end
for i=1:length(S2)
theta2(i)=max(S2(i)-K,exp(-r*(1/3))*theta3(i))
end
theta1=max(S1-K, exp(-r*(1/3))*theta2(i))
解决方案
推荐阅读
- qt - Linux 与 Windows 的部署规模
- php - 使用 composer 替换 Laravel 中的库自动加载源
- random - 如何将此代码转换为扫描随机数据而不是分箱数据?
- python - 如何在不使用已弃用的 Gdk.Screen.get_width() 的情况下在 Python / GTK 中获取总屏幕大小?
- angular - PascalCase to camelCase,在角度项目中查找和替换
- java - 是否可以在 @Cacheable 注释中使用 ENUM 值作为#key?
- javascript - How to find Virtual key Code of keys i.e 0x41
- python - 如何在python中将特定列数据打印为用户输入列名?
- r - 读取全局变量
- laravel - Laravel 弹性搜索以最高顺序显示相关数据