美式期权二叉树定价及MATLAB程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

金融随机分析课程

美式期权的二叉树定价

1、对于连续随机游走:

SdZ Sdt dS σμ+=

可以用离散格随机游走模型来表示,即标的资产的价格只在离散时间点t ∆,2t ∆,3t ∆,…,N t ∆取值,t ∆表示很小但非无穷小的时间步长;如果标的资产在时刻m t ∆的价格为m S ,那么在时刻(m+1)t ∆其价格有两种可能的值:)1(>u uS m 和)1(

2、风险中性假设在风险中性条件下,随机微分方程:

SdZ Sdt dS σμ+=

其中的μ可以用r 来表示。即

SdZ rSdt dS σ+=

风险中性条件下,在时刻m t ∆衍生证券的价格m V 是其在时刻(m+1)t ∆的期望值按照无风险利率r 贴现所得到的,即][1+∆-=m t r m V e E V 。

3、期权的计算

期权的计算是从二叉树图的末端(时刻T )开始向后倒退进行的。T 时刻期权的价值N n V 已知。对于一个看涨期权来说,有

)0,max (K S V N n N n -=

对于一个看跌期权来说,有

)0,max (N n N n S K V -=

其中,n=0,1,2,…,N, K 为执行价格。

在风险中性条件下,t T ∆-时刻的每个结点上的期权值都可以用T 时刻期权价值的期望值在时间t ∆内用利率r 贴现求出;同理,t T ∆-2时刻的每个结点的期权值可以用t T ∆-时刻的期望值在t ∆时间内用利率r 贴现求出,其它结点依次类推。

而如果对于美式期权,必须检查二叉树图的每个结点,以确定提前执行是否比继续持有t ∆时间更为有利。最后,向后倒推通过所有结点就求出了当前时刻的期权价值0V 。

下面对美式期权定价问题进行研究:

美式看涨期权被提前执行时,其内涵价值为

)0,max (K S V m n m n -= n=0,1,2,…,m

对于看跌期权来说,有

)0,max (m n m n S K V -= n=0,1,2,…,m

在m t ∆时刻从节点(m,n)向(m+1)t ∆时刻的结点(m+1,n+1)移动的概率为p ;向(m+1)t ∆时刻的结点(m+1,n)移动的概率为1-p 。

假设期权不提前执行,有:

])1([111+++∆--+=m n

m n t r m n V p pV e V 若期权提前执行,必须与内涵价值相比较。那么,对于看涨期权,有

]})1([),0,m ax {m ax (111+++∆--+-=m n

m n t r m n m n V p pV e K S V 对于看跌期权,有

]})1([),0,m ax {m ax (111+++∆--+-=m n

m n t r m n m n V p pV e S K V 4、计算美式看涨期权的价格的Matlab 实现(基于具体的算例) Matlab 程序如下:

%输入具体参数

S0=100; %当前股价

K=105; %执行价格

r=0.05; %利率

T=1; %期权有效期

sigma=0.3; %波动率

q=0.02; %红利率

n=1000; %步数

dt=T/n; %时间步长

%计算二叉树各参数

u=exp(sigma*sqrt(dt)); %计算上升比率

d=1/u; %计算下降比率

p=(exp((r-q)*dt)-d)/(u-d); %计算上升的概率

%构造二叉树矩阵,i 表示行数,j 表示列数,Sx 为股价矩阵,fx 为期权的内在

价值

for j=1:n+1

for i=1:j

Sx(i,j)=S0*(u^(j-i))*(d^(i-1));

fx(i,j)=max(Sx(i,j)-K,0);

end;

end;

%计算美式期权价格矩阵Afx和欧式期权价格矩阵Efx

for i=1:n+1 %到期时(j=n+1)期权价格

Afx(i,n+1)=fx(i,n+1);

Efx(i,n+1)=fx(i,n+1);

end;

for jj=1:n %倒推前面各期(j=n-1,n-2,…,1)期权价格j=n+1-jj;

for i=1:j

Efx(i,j)=exp(-r*dt)*(p*Efx(i,j+1)+(1-p)*Efx(i+1,j+1));

Afx(i,j)=max(exp(-r*dt)*(p*Afx(i,j+1)+(1-p)*Afx(i+1,j+1)),fx(i,j));

end;

end;

%输出结果

AmeOptionPrice=Afx(1,1)

ErouOptionPrice=Efx(1,1)

AmeOptionPrice = 10.89434691587509

ErouOptionPrice = 10.89432408424911

相关文档
最新文档