Take the 2-minute tour ×
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

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;
share|improve this question
    
For anyone looking to do something similar, I believe the appended code above is what I was trying to show with GARCH. –  cmdel Jul 12 '12 at 8:16
add comment

1 Answer

up vote 2 down vote accepted

You would want to use garchfit if you have it. If you don't have access to that you could use http://www.kevinsheppard.com/wiki/MFE_MATLAB_Introduction.

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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