2 votos

¿Cómo puedo modelar la volatilidad GARCH(1,1) para índices históricos en Matlab?

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;

2voto

Brendan Puntos 150

Te convendría usar garchfit si lo tienes. Si no tiene acceso a él, puede utilizar el programa Caja de herramientas MFE .

De todas formas, en cuanto a los inputs, podría ser un vector con una media constante de cero. Sería como ajustar un modelo AR(p) a los precios y luego estimar los parámetros de Garch en los residuos.

EDIT: Matlab ha actualizado la caja de herramientas de Econometría en los últimos años para que uno ya no utilice la función garchfit. Estos son las instrucciones para convertir el código antiguo de garchfit en el código actual.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X