求大神帮忙看看代码,我的y1-y4是不是写错了,对fun的最小值参数估计用optimset函数吗?
function [fun] = fun(parameter,lmt,ret)
%-----------------model-----------------------
%lmts(t)=lmt(t)^phi
%ret(t)=lmts(t-1)*rat(t)
%rat(t)=hat(t)^0.5*randn(1)
%ln(hat(t))=omega+alpha*ln(hat(t-1))+beta*randn(1)
omega=parameter(1);
alpha=parameter(2);
beta=parameter(3);
phi=parameter(4);
T=length(ret);
for k=1:T
lmts(k)=(lmt(k))^phi;
rat(k)=ret(k)/lmts(k);
end
hat(1)=sum(rat.^2)/T;
for k=2:T
hat(k)=exp(omega+alpha*ln(hat(k-1))+beta*randn(1));
end
lmts(1)=(lmt(1))^phi;
ratsim(1)=ret(1)/lmts(1);
hatsim(1)=sum(rat.^2)/T;
for k=2:T
hatsim(k)=exp(omega+alpha*log(hatsim(k-1))+beta*randn(1));
ratsim(k)=hatsim(k)^0.5*randn(1);
end
y1=sum(abs(rat)-abs(ratsim))^2;
y2=sum(rat.^2-ratsim.^2)^2;
y3=sum(rat.*lag(rat)-ratsim.*lag(ratsim))^2;
y4=sum(abs(rat.*lag(rat))-abs(ratsim.*lag(ratsim)))^2;
fun=y1+y2+y3+y4;
end