B.三叉树模拟 s=50 k=49 r=0.1
theta=0.4 t=5/12 q=0 kz=1
y=c() for(n in 1:50)
{u=exp(theta*(3*t/n)^0.5) d=1/u
pd=-sqrt(t/n/12/theta^2)*(r-q-1/2*theta^2)+1/6 pm=2/3
pu=sqrt(t/n/12/theta^2)*(r-q-1/2*theta^2)+1/6 stock=matrix(0,n+1,2*n+1) option=matrix(0,n+1,2*n+1) stock[1,1]=s
for(i in 2:(n+1)) {
for(j in 1:(2*i-1)) {
if(j<=i)
stock[i,j]=stock[i-1,j]*u else
stock[i,j]=stock[i-1,j-2]*d } }
for(j in 1:(2*n+1)) {
if(kz==1) {
if(stock[n+1,j]<=k) option[n+1,j]=0 else
option[n+1,j]=stock[n+1,j]-k } else {
if(stock[n+1,j]>=k)
24
option[n+1,j]=0 else
option[n+1,j]=k-stock[n+1,j] } }
for(i in n:1) {
for(j in 1:(2*i-1))
option[i,j]=(option[i+1,j]*pu+option[i+1,j+1]*pm+option[i+1,j+2]*pd)*exp(-r*t/n) }
print(option[1,1]) x=c(1:n)
y[n]=option[1,1]
plot(x,y,main=\三叉树方法模拟期权定价\步数\期权价格\}
d1=(log(s/k)+(r+theta^2)/t)/(theta*sqrt(t)) d2=d1-theta*sqrt(t)
c=s*pnorm(d1)-k*pnorm(d2)*exp(-r*t) c
25