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:
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;