%% This program is writed by Danniel tulip lew
% Danny have this program`s copyright @2010
%% The first step:Loading data to whcih will be used to analysis
CleanUp;
load mygarchdata
markpound = SSret;
figure
plot(markpound)
title('市场序列')
adfval = adftest(SSret);
disp('The test value of Augmented Dickey-Fuller test for unit root');
disp('------------------------------------------------------------');
disp(adfval)
kpssval = kpsstest(SSret);
disp('The test value of kpsstes');
disp('---------------------------');
disp(kpssval)
[h,pValue,stat,cValue] = archtest(SSret,1:5,0.01);
disp('Engle test for residual heteroscedasticity');
disp('---------------------------------------------');
disp(h)
disp('----------------------------------------------');
disp(pValue);
%% Bulding GARCH Model and fit the parameters
spec = garchset('VarianceModel','GJR','R',1,'M',1,'P',1,'Q',1);
spec = garchset(spec,'Display','off','Distribution','T');
[coeff,errros,LLF,~,~] = garchfit(spec,markpound);
[eFit,sFit] = garchinfer(coeff,markpound);
spec11=garchset;
spec11=garchset(spec11,'Display','off');
[coeff1,erros1,LLF1,eFit1,sFit1]=garchfit(spec11,markpound);
%% Monte carlo simulation and visulise the simulation result using
horizon = 30;
nPaths = 10000;
strm = RandStream('mt19937ar','Seed',5489);
RandStream.setDefaultStream(strm);
[eSim,sSim,ySim] = garchsim(coeff,horizon,nPaths,[],[],[],eFit,sFit,markpound);
Y=ret2tick(ySim);
[eSim1,sSim1,ySim1]=garchsim(coeff1,horizon,nPaths,[],[],[],eFit1,sFit1,markpound);
Y1=ret2tick(ySim1);
% plot result
figure
subplot(2,1,1),plot(Y)
subplot(2,1,2),plot(Y1)
%% Garch simulation and garch predict
NumPeriods=30;
fprintf('Garchpred result: Sigma and Mena\n');
[SigmaForecast,MeanForecast,sigmaTotal,meanRMSE] = ...
garchpred(coeff,markpound,NumPeriods);
disp('Sigma')
disp(SigmaForecast)
disp('Mean')
disp(MeanForecast)
%% Standardized residuel
figure
autocorr(markpound);
% Compare Sigmas
figure
plot(SigmaForecast,'.-b')
hold('on')
grid('on')
plot(sqrt(mean(sSim.^2,2)),'.r')
title('Forecast of STD of Residuals')
legend('forecast results','simulation results')
xlabel('Forecast Period')
ylabel('Standard Deviation')
% Compare Returns
figure
plot(MeanForecast,'.-b')
hold('on')
grid('on')
plot(mean(ySim,2),'.r')
title('Forecast of Returns')
legend('forecast results','simulation results',4)
xlabel('Forecast Period')
ylabel('Return')
% Compare Standard Errors
figure
plot(meanRMSE,'.-b')
hold('on')
grid('on')
plot(std(ySim'),'.r')
title('Standard Error of Forecast of Returns')
legend('forecast results','simulation results')
xlabel('Forecast Period')
ylabel('Standard Deviation')
%% Hypothesis test: | lrationtest |
% A likelihood ratio test is another way to compare the model which is
% beest
[H,pValue]=lratiotest(LLF,LLF1,1);
fprintf('Result of the GARCH model compare using "lrationtest"\n');
if H==0
disp('The GARCH(1,1) model is suported at the 5% significant level')
else
disp('The GJR(1,1) model is suported at the 5% significant level')
end
%-----------------------------EOF------------------------------------------