|
是一个期权定价公式的程序,总是各种报错。麻烦高手指导
function d=d_param1(C,B,K,r,sigma,T,tau)
a=log((C-B)/K);
b=(r+sigma^2/2);
d=(a+b*(T-tau))/(sigma*sqrt(T-tau));
function d=d_param2(C,B,K,r,sigma,T,tau)
a=log((C-B)/K);
b=(r-sigma^2/2);
d=(a+b*(T-tau))/(sigma*sqrt(T-tau));
function N=norm_int(d)
%syms y;
N=0;
int_low=-10000;
int_up=d;
n=10000;
dy=(d-int_low)/n
Ay=int_low:dy:int_up;
for i=1:n
y=Ay(i)+dy/2;
N=N+1/sqrt(2*pi)*exp(-y^2/2)*dy;
end
function price=F_make_price(st,K,C,B,r,sigma,T,t)
price=0.0;
int_low=t;
int_up=T;
n=10000;
dtau=(int_up-int_low)/n;
Atau=int_low;dtau:int_up;
for i=1:n
tau=Atau(i)+dtau/2;
price=price+(exp(-r*(tau-t))*((C-B)*norm_int(d_param1(C,B,K,r,sigma,T,tau))-K*exp(-r*(T-tau))*norm_int(d_param2(C,B,r,sigma,T,tau))) *...log((C-B)/st)*(2*pi*sigma^2*(tau-t)^3)^(-0.5)*...
exp(-(log((C-B)/st)+(r-sigma^2/2)*(tau-t)^2/(2*sigma^2*(tau-t))))*dtau)
end;
|