Je pense que vous avez bien compris, mais lors de la construction d'un modèle VAR, je m'assure généralement de suivre ces étapes:
1. Sélectionnez les variables
C'est la partie la plus importante de la construction de votre modèle. Si vous souhaitez prévoir le prix d'un actif, vous devez inclure des variables liées au mécanisme de formation des prix. La meilleure façon d'y parvenir est d'utiliser un modèle théorique. Puisque vous n'avez pas mentionné quel est l'actif et quelles sont les autres variables que vous avez incluses dans votre modèle, je ne peux vraiment pas en dire beaucoup sur cet article, mais vous pouvez trouver un résumé des modèles de tarification des actifs ici .
2. Vérifiez les données et effectuez les réglages appropriés
Une fois que vous avez sélectionné les variables, vous pouvez apporter quelques ajustements aux données qui amélioreront l'estimation et l'interprétation du modèle. Il est utile d'utiliser des statistiques récapitulatives et de voir un tracé de la série pour détecter les valeurs aberrantes, les données manquantes et d'autres comportements étranges. Lorsque vous travaillez avec des données de prix, les gens prennent généralement des journaux naturels, ce qui est une transformation stabilisatrice de la variance et a également une bonne interprétation (la différence de prix dans les journaux devient des rendements composés continus). Je ne sais pas si vous avez pris des journaux avant d'estimer le modèle, mais c'est une bonne idée de le faire si vous travaillez avec les prix des actifs.
3. Vérifiez si les données contiennent des composants non stationnaires
Vous pouvez maintenant utiliser des tests de racine unitaire pour vérifier si vos séries sont stationnaires. Si vous êtes uniquement intéressé par les prévisions, comme indiqué par @JacobH, vous pouvez exécuter VAR dans les niveaux même lorsque vos séries ne sont pas stationnaires, mais vos erreurs standard ne peuvent pas être fiables, ce qui signifie que vous ne pouvez pas faire d'inférence sur la valeur de les coefficients. Vous avez testé stationnaire à l'aide du test ADF, qui est très couramment utilisé dans ces applications, mais notez que vous devez spécifier si vous souhaitez exécuter le test avec i) aucune constante et aucune tendance; ii) une tendance constante et aucune tendance; et iii) une constante et une tendance. Habituellement, les séries de prix ont des tendances stochastiques, donc une tendance linéaire ne sera pas précise. Dans ce cas, vous pouvez choisir la spécification ii. Dans votre code, vous avez utilisé lendiffs
fonction de l'ensemble de prévisions. Je ne sais pas laquelle de ces trois alternatives cette fonction implémente pour calculer le nombre de différences (je ne l'ai pas trouvée dans la documentation). Pour vérifier votre résultat, vous pouvez utiliser la ur.df
fonction dans le package "urca":
adf <- ur.df(x[, "VAR1"], type = "drift", lags = 10, selectlags = "AIC")
Notez que cette commande exécutera le test ADF avec une constante et les décalages sélectionnés par la commande AIC, avec un décalage maximum de 10. Si vous avez des problèmes d'interprétation des résultats, regardez cette question . Si les séries sont I (1), utilisez simplement la différence, qui sera égale aux rendements composés en continu. Si le test indique que la série est I (2) et que vous avez des doutes sur le fait que vous pouvez utiliser d'autres tests, par exemple le test de Phillips-Perron (PP.test
fonction dans R). Si tous les tests confirment que votre série est I (2) (n'oubliez pas d'utiliser le journal de la série avant d'exécuter les tests), prenez la deuxième différence, mais notez que votre interprétation des résultats changera, puisque maintenant vous travaillez avec le différence des rendements composés en continu. Les prix des actifs sont généralement I (1) car ils sont proches d'une marche aléatoire, ce qui est un bruit blanc lors de l'application de la première différence.
4. Sélectionnez l'ordre du modèle
Cela peut être fait avec des critères couramment utilisés tels que Akaike, Schwarz (BIC) et Hannan-Quinn. Vous l'avez fait avec la VARselect
fonction et c'est vrai, mais rappelez-vous quel est le critère que vous avez utilisé pour prendre votre décision. Des critères généralement différents indiquent des commandes différentes pour le VAR.
5. Vérifiez s'il existe des relations de cointégration
Si toutes vos séries sont I (1) ou I (2), avant d'exécuter un modèle VAR, c'est généralement une bonne idée de vérifier s'il n'y a pas de relations de cointégration entre les séries, spécialement si vous voulez faire une analyse de réponse impulsionnelle avec le résidus. Vous pouvez le faire en utilisant le test de Johansenn ou Engle-Granger (uniquement pour les modèles bivariés). Dans R, vous pouvez exécuter le test Johansen avec la ca.jo
fonction du package "urca". Notez que ce test a également des spécifications différentes. Pour les séries de prix, j'utilise généralement le code suivant (où p
est la longueur de décalage de l'article 4, effectuée avec la série en niveaux):
jo_eigen <- ca.jo(x, type = "eigen", ecdet = "const", K = p)
jo_trace <- ca.jo(x, type = "trace", ecdet = "const", K = p)
6. Estimer le modèle
Si vos séries ne sont pas cointégrées, vous pouvez facilement estimer le modèle avec la VAR
commande, comme cela se fait dans votre code. Dans le cas où les séries sont cointégrées, vous devez considérer la relation à long terme en estimant un modèle de correction d'erreur vectorielle avec le code suivant (où k
est l'ordre de cointégration):
vecm <- cajorls(joeigen, r = k)
7. Exécutez des tests de diagnostic
Pour tester si votre modèle est bien spécifié, vous pouvez exécuter un test de corrélation série sur les résidus. Dans votre code, vous avez utilisé un test Portmanteau avec la serial.test
fonction. Je n'ai jamais utilisé cette fonction mais je pense que c'est OK. Il existe également une version multivariée du test Ljung-Box implémentée dans le package MTS que vous pouvez exécuter avec la fonction mq
.
8. Faites des prédictions
Une fois que vous êtes sûr que votre modèle est bien spécifié, vous pouvez utiliser la predict
fonction comme vous l'avez fait dans votre code. Vous pouvez même tracer des fonctions de réponse impulsionnelle pour vérifier comment les variables répondent à un choc particulier à l'aide de la irf
fonction.
9. Évaluer les prédictions
Une fois que vous avez fait vos prédictions, vous devez les évaluer et comparer avec d'autres modèles. Certaines méthodes pour évaluer l'exactitude des prévisions peuvent être trouvées ici , mais pour ce faire, il est essentiel de diviser votre série en une formation et un ensemble de tests, comme expliqué dans le lien.