2017-06-24 4 views
1

Je n'arrive pas à comprendre comment fonctionne vraiment n.roll dans dccforecast. Je vais donner le code et les graphiques produits. S'il vous plaît aidez-moi à comprendre et à résoudre le problème.Que fait vraiment "n.roll" dans "dccforecast"?

D'abord, permettez-moi de présenter mes données. J'ai deux séries chronologiques: 4171 observations quotidiennes (16 ans). Je suis intéressé à utiliser les premières données de 6 ans pour l'estimation des coefficients de dcc et de prévoir la corrélation pour

i) les 10 dernières années (2609) des observations quotidiennes

[t = 0] ---- estimation période (1562) ----- [t = 1562] --- période de prévision (2609) --- [t = 4171]

ii) les 5 années suivantes (1305 observations quotidiennes).

[t = 0] ---- période d'estimation (1562) ----- [t = 1.562] --- période de prévision (1305) --- [t = 2864]

A chaque point de t dans ma période de prévision, je veux utiliser toutes les données disponibles au temps t et obtenir une prévision pour t + 1.

Pour une prévision à l'instant t + 1, utilisez toutes les données de 0 à t

Pour une prévision à l'instant t + 2, utilisez toutes les données de 0 à t + 1

Pour une prévision à l'instant t + 3, utiliser toutes les données de 0 à t + 2

pour une prévision à l'instant t + 4, utiliser toutes les données de 0 à t + 3

et ainsi de suite.

Voici mon code pour le cas i:

xspec = ugarchspec(mean.model = list(armaOrder = c(1, 0)), variance.model = list(garchOrder = c(1,1), model = 'gjrGARCH'), distribution.model = 'norm') 
uspec = multispec(replicate(2, xspec)) # 2 is the number of variables 

dccspec = dccspec(uspec = uspec, dccOrder = c(1, 1), model='aDCC', distribution = 'mvnorm') 

dcc.fit.focast = dccfit(dccspec, data = tst, out.sample = 2609, forecast.length = 2609, fit.control = list(eval.se=T)) 

dcc.focast=dccforecast(dcc.fit.focast, n.ahead = 1, n.roll = 0) 
plot(dcc.focast, which = 3, series=c(1,2)) 

Je suis en train de définir "n.roll = 0", car comme il est expliqué dans "rmgarch" manuel (Lorsque n.roll = 0, toutes les prévisions sont basé sur une routine de prévision n-ahead inconditionnelle basée sur la méthode d'approximation décrite dans l'article de ENGLE et SHEPPARD (2001), je m'intéresse à l'utilisation de la méthode d'approximation utilisée dans Engle et Sheppard (2001).

n.roll=0

Cependant, quand je change la n.roll 0-1305;

dcc.focast=dccforecast(dcc.fit.focast, n.ahead = 1, n.roll = 1305) 
plot(dcc.focast, which = 3, series=c(1,2)) 

puis-je obtenir le graphique suivant:

n.roll=1305

Et quand j'augmente n.roll, le point final des prévisions augmente également. Le manuel "rmgarch" décrit n.roll pour la moyenne inconditionnelle. Mais en quelque sorte, cela a à voir avec le nombre de prévisions produites.

Quelqu'un peut-il expliquer cela et donner des recommandations sur la façon d'obtenir les prévisions dont j'ai besoin s'il vous plaît?

Merci à l'avance,

Martin

Répondre

0

Je fini par faire une boucle pour faire la prévision de 1 étape. et ça a marché.