Actualmente estoy trabajando con datos de índices históricos de Yahoo Finance y me gustaría trazar la volatilidad GARCH(1,1) de estos índices. Estoy trabajando con el Datafeed y Finance Tollboxes en Matlab en este momento, y soy capaz de obtener los datos y trazar los índices. Sin embargo, estoy teniendo algunas dificultades para entender la siguiente metodología para obtener los sigmas GARCH.
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
A partir de ahí obtengo los índices en objetos financieros, donde los precios están en arrays de celdas. Lo que creo que hay que hacer es ajustar el modelo GARCH(1,1) así:
ugarch(U,1,1)
donde U es un vector con sólo los precios del índice? No tengo mucha experiencia con las estructuras de datos de Matlab así que cualquier información o referencia será muy apreciada. La razón por la que no quiero usar el R script es para tener cierta uniformidad de gráficos en mi tesis.
--EDIT-- Estoy adjuntando algo más de código que creo que produce la trama que buscaba. Debe ser relativamente fácil de vectorizar las entradas de índice y producir diferentes parcelas.
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');
Y, a continuación, trazar la varianza GARCH sobre los rendimientos diarios.
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;