Backtesting dans Excel

Le backtesting en modélisation fait référence au test d'un modèle prédictif à l'aide de données historiques. L'article traite de la manière de procéder dans Microsoft Excel, et non du contexte théorique du backtesting.

Comment procède-t-on à un backtesting ? Nous remontons le temps jusqu'au début de notre série temporelle, nous calibrons les paramètres du modèle en utilisant les données disponibles jusqu'à ce moment-là et nous effectuons une prédiction (c'est-à-dire une prévision) pour la période suivante. Ensuite, nous avançons dans le temps, recalibrons les valeurs des paramètres et effectuons une autre projection, et ainsi de suite. À la fin de notre exercice, nous disposerons d'un ensemble de prédictions.

Notez qu'à chaque point, la seule hypothèse que nous faisons est la définition générale du modèle (par exemple, ARMA(1,1)). Néanmoins, nous calibrerons les valeurs des paramètres en utilisant uniquement les informations disponibles à ce moment-là.

Cette approche est cohérente avec les pratiques de la vie réelle : on part d'un modèle initial et on effectue une prévision pour la période suivante. Le temps passe. Une nouvelle période s'est produite, nous ajoutons donc le nouveau point de données à l'ensemble des données d'entrée actuelles, nous recalibrons les paramètres, nous effectuons une prévision pour la période suivante et nous répétons l'opération.

Pourquoi devrais-je m'en soucier ?

Cet article vous guidera à travers les étapes de Microsoft Excel nécessaires à la réalisation d'un backtesting. Nous utiliserons principalement deux puissantes fonctions intégrées d'Excel : INDEX(.) et SEQUENCE(.) : INDEX(.) et SEQUENCE(.), et nous tirerons parti du mécanisme de "tableau de données" d'Excel pour exécuter les différents scénarios.

Le backtesting génère ce qui aurait été des erreurs de prévision, de sorte que vous pouvez examiner de près la série temporelle des erreurs de prévision pour détecter les corrélations sérielles, les distributions, les valeurs aberrantes et autres, afin de mieux comprendre la précision et la performance du modèle.

C'est parti !

Pour cette question, nous utilisons un ensemble de données stationnaires synthétiques de 200 observations. L'ensemble de données suit un processus ARMA(1,1), comme indiqué ci-dessous.

Cette figure montre l'ensemble de données stationnaires synthétiques de 200 observations.

Le modèle proposé est ARMA(1,1)

Cette figure montre le tableau du modèle ARMA original

Procédure de backtesting

Pour chaque itération, nous devons procéder comme suit : (1) définir l'ensemble des données d'entrée (un sous-ensemble de la série temporelle originale), (2) à l'aide de l'ensemble de données (1), calibrer les valeurs des paramètres du modèle ARMA(1,1), (3) à l'aide du modèle (2) et de l'ensemble de données (1), calculer une prévision à l'horizon d'une période.

1. Ensemble de données d'entrée

Pour décrire complètement l'ensemble de données d'entrée, nous avons besoin de deux indices : le début et la fin, puis, à l'aide de la fonction SEQUENCE(.), nous générons un ensemble d'indices entre le début et la fin. Nous utilisons ensuite la fonction INDEX(.) pour renvoyer tous les intervalles de cellules de l'ensemble de données d'origine avec les indices de ligne de l'ensemble de séquences.

Exemple : 

L'ensemble des données d'entrée originales est \$A\$3:\$A\$202. Pour sélectionner les cellules entre les indices 1 et 50.

=INDEX(\$A\$3:\$A\$202,SEQUENCE(50,1,1,1),1)

Notez que vous pouvez définir un nom pour vos données d'entrée et faire référence à ce nom à la place de la plage de cellules d'entrée.

2. Étalonnage du modèle

Nous utiliserons la fonction NumXL ARMA_PARAM(.) et spécifierons le type de retour=2 pour les paramètres calibrés.

Cette figure montre le modèle ARMA calibré.

Notez que ARMA_PARAM(.) renvoie une forme compacte des paramètres du modèle, de sorte que dans la figure ci-dessus, le processus ARMA est : \[\begin{array}{l} {X_t} = 1.485 + 0.401{X_{t - 1}} + 0.734{a_{t - 1}} + {a_t}\\ {a_t} \sim N(0,1.14) \end{array}\]

3. Les prévisions

En utilisant l'ARMA_FORE(.), les données de (1) et les paramètres du modèle calculés en 2, nous pouvons calculer les valeurs prévisionnelles pour l'horizon d'une période.

Calcul des valeurs prévisionnelles à l'horizon d'une période.

Notez que j'ai généré la prévision moyenne, l'erreur de prévision et l'intervalle de confiance.

Tableau des données

Nous venons de terminer le calcul d'une étape. Nous utiliserons la fonction "Tableau de données" d'Excel pour effectuer les mêmes calculs pour les périodes restantes jusqu'à l'étape 200.

Tout d'abord, nous devons préparer le tableau de sortie :

Mise en place d'un tableau de données

Sélectionnez ensuite l'ensemble du tableau de données, en commençant par la ligne de sortie et en incluant la colonne d'index d'arrivée, comme indiqué ci-dessous :

Sélection d'une plage de cellules de tableau de données

Ensuite, passez à la barre d'outils "Données" et localisez l'élément "Tableau de données" sous "Scénario d'hypothèse".

Cette figure montre le menu du tableau de données Excel

La boîte de dialogue "Tableau de données" apparaît. Localisez la "cellule d'entrée de colonne", entrez une référence à l'index "finish" de l'ensemble de données et cliquez sur le bouton OK.

Cette figure montre la boîte de dialogue Tableau de données

Le tableau de données remplacera les valeurs de l'indice d'arrivée par celles de notre tableau de données et enregistrera les résultats.

Cette figure montre la sortie du tableau de données avec les erreurs réelles.

Notez que l'"erreur standard" est générée par la fonction ARMA_FORE(.), tandis que la colonne la plus à droite ("erreur") est l'erreur entre la prévision et la valeur réelle réalisée.

Analyse des tests rétrospectifs

Tout d'abord, examinons visuellement les résultats des prévisions du backtesting par rapport aux valeurs réelles réalisées, puis nous approfondirons les propriétés statistiques.

Cette figure montre le graphique de données du backtesting des prévisions par rapport à la réalité.

La zone ombrée du graphique correspond à l'intervalle de confiance de la prévision à 95 %.

Le graphique montre une bonne adéquation du modèle et, par conséquent, une bonne précision des prévisions.

Examinons ensuite les propriétés statistiques de l'erreur de prévision (Prévision - Réalité) à l'aide des statistiques récapitulatives de la barre d'outils NumXL.

Cette figure montre les statistiques récapitulatives des erreurs de back-testing.

Le tableau récapitulatif des statistiques indique que l'erreur de prévision est un bruit gaussien de moyenne nulle et d'écart-type de 1,0.

Cette figure montre les résultats du back-testing KDE par rapport à la méthode gaussienne.

En conclusion, le modèle ARMA(1,1) est un modèle prédictif approprié pour l'ensemble de données donné.

Quelle est la prochaine étape ?

À ce stade, vous vous interrogez probablement sur les valeurs des paramètres du modèle. Sont-elles stables ?

Tout d'abord, nous construisons un deuxième "tableau de données", mais dans la ligne de sortie se trouvent les valeurs des paramètres du modèle, et nous exécutons le tableau de données comme nous l'avons fait précédemment.

Cette figure montre les paramètres du tableau de données

Analysez maintenant les valeurs de chaque paramètre comme vous l'avez fait pour l'erreur de prévision.

Backcasting ARMA (1,1) mu plotBackcasting ARMA (1,1) - sigma plot
Backcasting ARMA (1,1) -phi plotBackcasting ARMA (1,1) - theta plot

Les valeurs des paramètres (sauf thêta) sont stables et tendent vers une valeur constante. Les valeurs de thêta (coefficient MA) sont plus volatiles mais se situent entre 0,6 et 0,9.

Ensuite, nous devrions examiner les statistiques descriptives et les distributions sous-jacentes des valeurs des paramètres, mais nous vous laissons le soin de faire cet exercice.

Veuillez vous référer à la feuille de calcul ci-jointe pour l'ensemble des données et l'analyse.

Conclusion

Cet article présente les étapes à suivre pour réaliser un backtesting pour un modèle prédictif avec peu ou pas de calculs intermédiaires. Nous avons utilisé les fonctions intégrées d'Excel : INDEX(.) et SEQUENCE(.) et nous avons tiré parti de la fonction "Tableau de données" pour effectuer le calcul pour tous les indices prédéfinis.

Une fois que nous avons obtenu les résultats du backtesting, nous nous tournons vers l'analyse statistique et évaluons leurs propriétés et leur distribution afin de déceler d'éventuels biais (par exemple, une corrélation sérielle) dans les résultats.

  Pièces jointes

Commentaires

Vous devez vous connecter pour laisser un commentaire.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 7 sur 8