function [LCL,CL] = jumpgarchfun(initial,data)
% These are application programs. The first uses only the jumpgarch function and does constant
% intensity jump GARCH models
% Replication of constant intensity models from Chan and Maheu(2002), "Conditional
% Jump Dynamics in Stock Market Returns", JBES, vol 20, no. 3, 377-389.
% Constant intensity jump model (table 2)
% 该程序不考虑滞后项,该程序仅为一个主程序,优化条件及参数初始值由作者自行给定
T = size(data,1);
if max(max(isnan(data)))==1 || max(max(isinf(data)))==1
error('data is NaN or inf')
end
% 定义参数
mu = initial(1);%mu
omega = initial(2);
alpha = initial(3);%alpha
beta = initial(4) ;%beta
delta = initial(5);
theta = initial(6);
lambda = initial(7);
% 计算残差序列
r = data; % data为收益率数据
%若考虑收益率滞后阶,则可以在定义参数部分引入滞后阶系数,那么u = r - mu -a_1r1-a_2r2等等;
%r1 = [0;r(1:end-1)];
%r2 = [0;0;r(1:end-2)];
u = r - mu; % u为残差
% 计算方差序列
h = zeros(T,1);
h(1,1) = var(u); %h(1,1)作为条件方差的初始值,也可以考虑设定为无条件方差,但是不同的GARCH形式会有不一样的无条件方差,这一点请注意。
%alpha = a^2/(1+a^2+b^2); %若令alpha = a^2/(1+a^2+b^2),则参数alpha无约束
%beta = b^2/(1+a^2+b^2); %若令beta = b^2/(1+a^2+b^2),则参数beta无约束
for i = 2:T
h(i,1) = omega+alpha*u(i-1)^2+beta*h(i-1,1);
end
[LCL,CL] = jumpgarch(u,h,lambda,delta,theta);