2
$\begingroup$

I'm currently working with historical index data from Yahoo Finance and would like to plot the GARCH(1,1) volatility of these indexes. I'm working with the Datafeed and Finance Tollboxes in Matlab right now, and I'm able to get the data and plot the indexes. However I'm having some difficulty understanding the following methodology to get the GARCH sigmas.

clf;
clear all;
%close all;
format short;

t = cputime;
Connect = yahoo;
dataFTSE=fetch(Connect,'^FTSE','Jan 1 1990',today, 'd');
dataN225=fetch(Connect,'^N225','Jan 1 1990',today, 'd');
dataGSPC=fetch(Connect,'^GSPC','Jan 1 1990',today, 'd');
close(Connect);
tsFTSE=fints(dataFTSE(:,1),dataFTSE(:,end),'FTSE100','d','FTSE100');
tsN225=fints(dataN225(:,1),dataN225(:,end),'NiKKEI225','d','NiKKEI225');
tsGSPC=fints(dataGSPC(:,1),dataGSPC(:,end),'SP500','d','SP500');
subplot 311;
plot(tsFTSE)
xlabel('Time (date)')
ylabel('Adjusted Close price ($)')
subplot 312;
plot(tsGSPC)
xlabel('Time (date)')
ylabel('Adjusted Close price ($)')
subplot 313;
plot(tsN225)
xlabel('Time (date)')
ylabel('Adjusted Close price ($)')
yt = get(gca,'YTick');
set(gca,'YTickLabel', sprintf('%.0f|',yt))
e = cputime - t

From then on I get the indexes in financial objects, where the prices are in cell arrays. What I think needs to happen is to fit the GARCH(1,1) model like so:

ugarch(U,1,1)

where U is a vector with just the prices of the index? I don't have a lot of experience with Matlab's data structures so any info or references will be greatly appreciated. The reason I don't want to use the R script is to have some uniformity of plots in my thesis.

--EDIT-- I'm appending some more code which I think produces the plot I was after. It should be relatively easy to vectorize the index inputs and produce different plots.

dataGSPCret = [0.0 price2ret(dataGSPC(:,end))'];
retGSPC=fints(dataGSPC(:,1),dataGSPCret','retSP500','d',...
    'retSP500');
[coeff3, errors3, LLF3, innovations3, sigmas3] = ...
    garchfit(dataGSPCret);
sigmaGSPC = fints(dataGSPC(:,1),sigmas3','retSP500',...
    'd','retSP500');

And then plot the GARCH variance over the daily returns.

figure(2);
subplot 311; hold on;
plot(retFTSE); plot(sigmaFTSE); hold off;
subplot 312; hold on;
plot(retN225); plot(sigmaN225); hold off;
subplot 313; hold on;
plot(retGSPC); plot(sigmaGSPC); hold off;
$\endgroup$
  • $\begingroup$ For anyone looking to do something similar, I believe the appended code above is what I was trying to show with GARCH. $\endgroup$ – cmdel Jul 12 '12 at 8:16
2
$\begingroup$

You would want to use garchfit if you have it. If you don't have access to that you could use the MFE toolbox.

Anyway, as for the inputs, it could be a vector with a constant mean of zero. This would be like fitting an AR(p) model to the prices and then estimating the Garch parameters on the residuals.

EDIT: Matlab has updated the Econometrics toolbox in recent years so that one would no longer use the garchfit function. These are instructions on how to convert the older garchfit code into the current code.

$\endgroup$
  • $\begingroup$ Any links to using GARCH without the econometrics toolbox? $\endgroup$ – JohnAndrews May 11 '17 at 9:53
  • 1
    $\begingroup$ @JohnAndrews Looks like the link above was dead. You can use the MFE toolbox to fit GARCH models in Matlab without the Econometrics toolbox. $\endgroup$ – John May 11 '17 at 11:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.