老师是专攻realized garch的金融计量老师··· 课后要求我们用matlab实现realized garch··· 请问realized garch到底和garch模型有什么区别,然后function code和garch有什么区别吗?
附 garch funciton code:
function [param,outs] = garch11_m(r10y,r3m)
%% optimization
options = optimset('Algorithm','interior-point','Display','iter');
%param0 = [0.1;0.15;0.75;0.1;0.8;0;1];
param0 = [0.0001;0.01;0.95;-0.305;0.95;-0.59;1]; %local minnum
A = [0,1,1,0,0,0,0];
b = 1;
lb = [0,0,0,-inf,-inf,-inf,-inf]';
ub = [inf,1,1,inf,inf,inf,inf];
[param,ll,exitflag,~,~,grad,hessen] = fmincon(@neglogl,param0,A,b,[],[],lb,ub,[],options,r10y,r3m);
%% output
if nargout == 2
outs.cov = inv(hessen);
outs.exitflag = exitflag;
outs.ll = -ll;
outs.grad = -grad;
outs.hessen = -hessen;
alpha0 = param(1);
alpha1 = param(2);
beta1 = param(3);
gamma0 = param(4);
gamma1 = param(5);
phi = param(6);
rho = param(7);
n = length(r10y);
sigma = zeros(n,1);
mu = zeros(n,1);
for t = 2:n
sigma(t) = alpha0 + alpha1*mu(t-1) + beta1*sigma(t-1);
mu(t) = gamma0 + gamma1*r3m(t) + phi*sigma(t)^(rho/2);
end
outs.mu = mu;
outs.sigma = sigma;
end
end
%% define the objective function
function ll = neglogl(param,r10y,r3m)
alpha0 = param(1);
alpha1 = param(2);
beta1 = param(3);
gamma0 = param(4);
gamma1 = param(5);
phi = param(6);
rho = param(7);
n = length(r10y);
sigma = zeros(n,1);
mu = zeros(n,1);
mu(1) = r10y(1);
for t = 2:n
sigma(t) = alpha0 + alpha1*mu(t-1) + beta1*sigma(t-1);
mu(t) = gamma0 + gamma1*r3m(t) + phi*sigma(t)^(rho/2);
end
ll = -mean(log(pdf('norm',r10y(2:end),mu(2:end),sqrt(sigma(2:end)))));
end