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

金融随机分析课程
美式期权的二叉树定价 
1、对于连续随机游走:
    可以用离散格随机游走模型来表示,即标的资产的价格只在离散时间点,2,3,…,N取值,表示很小但非无穷小的时间步长;如果标的资产在时刻m的价格为,那么在时刻(m+1)其价格有两种可能的值:,并且标的资产的价格从上升到的概率为p。
2、风险中性假设在风险中性条件下,随机微分方程:
中的可以用r来表示。即
风险中性条件下,在时刻m衍生证券的价格是其在时刻(m+1)的期望值按照无风险利率r贴现所得到的,即
3、期权的计算
期权的计算是从二叉树图的末端(时刻T)开始向后倒退进行的。T时刻期权的价值已知。对于一个看涨期权来说,有
对于一个看跌期权来说,有
其中,n=0,1,2,…,N, K为执行价格。
在风险中性条件下,时刻的每个结点上的期权值都可以用T时刻期权价值的期望值在时间内用利率r贴现求出;同理,时刻的每个结点的期权值可以用时刻的期望值在时间内用利率r贴现求出,其它结点依次类推。
而如果对于美式期权,必须检查二叉树图的每个结点,以确定提前执行是否比继续持有时间更为有利。最后,向后倒推通过所有结点就求出了当前时刻的期权价值
下面对美式期权定价问题进行研究:
美式看涨期权被提前执行时,其内涵价值为
  n=0,1,2,…,m
对于看期权来说,有
  n=0,1,2,…,m
m时刻从节点(m,n)向(m+1)时刻的结点(m+1,n+1)移动的概率为p;向(m+1)时刻的结点(m+1,n)移动的概率为1-p。
假设期权不提前执行,有:
若期权提前执行,必须与内涵价值相比较。那么,对于看涨期权,有
对于看跌期权,有
4、计算美式看涨期权的价格的Matlab实现(基于具体的算例)
Matlab程序如下:
%输入具体参数
S0=100;      %当前股价
K=105;      %执行价格
r=0.05;      %利率
T=1;        %期权有效期
sigma=0.3;    %波动率
matlab 下载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