全隐式有限差分欧式看跌期权定价代码
function price=euputimpl(s0,K,r,T,sigma,smax,ds,dt)
m=round(smax/ds)
ds=smax/m
n=round(T/dt)
dt=T/n
matval=zeros(m+1,n+1)
vets=linspace(0,smax,m+1)
veti=0:m
vetj=0:n
matval(:,n+1)=max(K-vets,0)
matval(1,:)=K*exp(-r*dt*(n-vetj))
matval(m+1,:)=0
a=0.5*(r*dt*veti-sigma^2*dt*(veti.^2))
b=1+sigma^2*dt*(veti.^2)+r*dt
c=-0.5*(r*dt*veti+sigma^2*dt*(veti.^2))
coeff=diag(a(3:m),-1)+diag(b(2:m))+diag(c(2:m-1),1)
[L,U]=lu(coeff)
aux=zeros(m-1,1)
for j=n:-1:1
aux(1)=-a(2)*matval(1,j)
matval(2:m,j)=U\(L\(matval(2:m,j+1)+aux))
end
price=interp1(vets,matval(:,1),s0)
全隐式有限差分美式看跌期权定价代码