Prédiction du marché basée sur des indicateurs macroéconomiques

 

Ainsi, la tâche consiste à prédire l'indice S&P 500 sur la base des indicateurs économiques disponibles.

Étape 1 : Trouvez les indicateurs. Les indicateurs sont accessibles au public ici : http://research.stlouisfed.org/fred2/ Il en existe 240 000. Le plus important est la croissance du PIB. Cet indicateur est calculé chaque trimestre. D'où notre étape - 3 mois. Tous les indicateurs pour une période plus courte sont recalculés pour une période de 3 mois, le reste (annuel) est rejeté. Nous écartons également les indicateurs pour tous les pays sauf les États-Unis et les indicateurs qui n'ont pas une histoire profonde (au moins 15 ans). Ainsi, avec un travail minutieux, nous filtrons un tas d'indicateurs et obtenons environ 10 000 indicateurs. Nous formulons une tâche plus spécifique consistant à prédire l'indice S&P 500 un ou deux trimestres à l'avance, en ayant 10 000 indicateurs économiques disponibles avec une période trimestrielle. Je fais tout en MatLab, même si c'est possible en R.

Étape 2 : Convertir toutes les données sous forme stationnaire par différenciation et normalisation. Il existe de nombreuses méthodes ici. L'essentiel est que les données d'origine puissent être restaurées à partir des données converties. Sans stationnarité, aucun modèle ne fonctionnera. La série S&P 500 avant et après la conversion est présentée ci-dessous.

Étape 3 : Choisissez un modèle. Peut-être un réseau de neurones. On peut faire une régression linéaire multi-variable. Vous pouvez faire une régression polynomiale multivariée. Après avoir testé des modèles linéaires et non linéaires, nous arrivons à la conclusion que les données sont si bruyantes qu'il est insensé d'entrer dans un modèle non linéaire. Le graphique y(x), où y = S&P 500 et x = l'un des 10 000 indicateurs, est un nuage presque circulaire. Ainsi, nous formulons la tâche encore plus précisément : prédire l'indice S&P 500 un ou deux trimestres à l'avance, en ayant 10 000 indicateurs économiques avec une période trimestrielle, en utilisant une régression linéaire multivariable.

Étape 4 : Nous sélectionnons les indicateurs économiques les plus importants parmi 10 000 (réduire la dimension du problème). C'est l'étape la plus importante et la plus difficile. Disons que nous prenons l'histoire du S&P 500 aussi longue que 30 ans (120 trimestres). Pour représenter le S&P 500 comme une combinaison linéaire d'indicateurs économiques de natures diverses, il suffit de disposer de 120 indicateurs pour décrire précisément le S&P 500 sur ces 30 années. De plus, les indicateurs peuvent être absolument quelconques afin de créer un modèle aussi précis de 120 indicateurs et 120 valeurs S&P 500. Vous devez donc réduire le nombre d'entrées en dessous du nombre de valeurs de fonction décrites. Par exemple, nous recherchons les 10 à 20 indicateurs d'entrée les plus importants. De telles tâches de description de données avec un petit nombre d'entrées sélectionnées parmi un grand nombre de bases candidates (dictionnaire) sont appelées codage parcimonieux.

Il existe de nombreuses méthodes pour sélectionner les entrées des prédicteurs. Je les ai tous essayés. Voici les deux principaux :

  1. Nous classons les 10 000 données en fonction de leur pouvoir prédictif S&P 500. Le pouvoir prédictif peut être mesuré par un coefficient de corrélation ou une information mutuelle.
  2. Nous parcourons les 10 000 indicateurs en bas et choisissons celui qui a donné le modèle linéaire y_mod = a + b*x1 décrivant le S&P 500 avec la plus petite erreur. Ensuite, nous sélectionnons à nouveau la deuxième entrée en triant les 10 000 -1 indicateurs restants afin qu'elle décrive le reste y - y_mod = c + d*x2 avec le moins d'erreur. Etc. Cette méthode est appelée régression pas à pas ou poursuite correspondante.

Voici le top 10 des indicateurs avec le coefficient de corrélation le plus élevé avec le S&P 500 :

Identifiant de la série Décalage Corr Infos Mut
'PPICRM' 2 0,315 0,102
'CWUR0000SEHE' 2 0,283 0,122
'CES1021000001' une 0,263 0,095
'B115RC1Q027SBEA' 2 0,262 0,102
'CES1000000034' une 0,261 0,105
'A371RD3Q086SBEA' 2 0,260 0,085
'B115RC1Q027SBEA' une 0,256 0,102
'CUUR0000SAF111' une 0,252 0,117
'CUUR0000SEHE' 2 0,251 0,098
'USMINE' une 0,250 0,102

Voici le top 10 des indicateurs avec le plus d'informations mutuelles avec le S&P 500 :

Identifiant de la série Décalage Corr Infos Mut
'CPILEGSL' 3 0,061 0,136
'B701RC1Q027SBEA' 3 0,038 0,136
'CUSR0000SAS' 3 0,043 0,134
'PIBPOT' 3 0,003 0,134
'NGDPPOT' 5 0,102 0,134
'AUTRESEC' 4 0,168 0,133
'LNU01300060' 3 0,046 0,132
'LRAC25TTUSM156N' 3 0,046 0,132
'LRAC25TTUSQ156N' 3 0,046 0,131
'CUSR0000SAS' une 0,130 0,131

Le décalage est le retard de la série d'entrées par rapport à la série simulée du S&P 500. Comme on peut le voir dans ces tableaux, différentes méthodes de choix des entrées les plus importantes se traduisent par différents ensembles d'entrées. Étant donné que mon objectif ultime est de minimiser l'erreur de modèle, j'ai choisi la deuxième méthode de sélection d'entrée, c'est-à-dire énumération de toutes les entrées et sélection de l'entrée qui a donné le moins d'erreur.

Étape 5 : Choisissez une méthode pour calculer l'erreur et les coefficients du modèle. La méthode la plus simple est la méthode COEX, c'est pourquoi la régression linéaire utilisant cette méthode est si populaire. Le problème avec la méthode RMS est qu'elle est sensible aux valeurs aberrantes, c'est-à-dire ces valeurs aberrantes affectent significativement les coefficients du modèle. Pour réduire cette sensibilité, la somme des valeurs d'erreurs absolues peut être utilisée à la place de la somme des erreurs au carré, conduisant à la méthode des moindres modules (LSM) ou régression robuste. Cette méthode n'a pas de solution analytique pour les coefficients du modèle contrairement à la régression linéaire. Habituellement, les modules sont remplacés par des fonctions d'approximation lisses/différentiables et la solution est effectuée par des méthodes numériques et prend beaucoup de temps. J'ai essayé les deux méthodes (régression maigre et MHM) et je n'ai pas remarqué beaucoup d'avantages de MHM. Au lieu de MHM, j'ai fait un détour. Dans la deuxième étape d'obtention de données stationnaires en les différenciant, j'ai ajouté une opération de normalisation non linéaire. Autrement dit, la série d'origine x[1], x[2], ... x[i-1], x[i] ... est d'abord convertie en une série de différences x[2]-x[1] . .. x [i]-x[i-1] ... puis chaque différence est normalisée en la remplaçant par sign(x[i]-x[i-1])*abs(x[i]-x[ i-1] )^u, où 0 < u < 1. Pour u=1, on obtient la méthode COSE classique avec sa sensibilité aux valeurs aberrantes. À u = 0, toutes les valeurs de la série d'entrée sont remplacées par des valeurs binaires +/- 1 avec presque aucune valeur aberrante. Pour u=0.5, on obtient quelque chose proche de MNM. La valeur optimale de u se situe quelque part entre 0,5 et 1.

Il convient de noter que l'une des méthodes populaires pour convertir des données en une forme stationnaire consiste à remplacer les valeurs de la série par la différence des logarithmes de ces valeurs, c'est-à-dire log(x[i]) - log(x[i-1]) ou log(x[i]/x[i-1]). Le choix d'une telle transformation est dangereux dans mon cas, car le dictionnaire de 10 000 entrées comporte de nombreuses lignes avec des valeurs nulles et négatives. Le logarithme a également l'avantage de réduire la sensibilité de la méthode RMS aux valeurs aberrantes.Essentiellement, ma fonction de transformation sign(x)*|x|^u a le même objectif que log(x), mais sans les problèmes associés à zéro et valeurs négatives.

Étape 6 : Calculez la prédiction du modèle en remplaçant les nouvelles données d'entrée et en calculant la sortie du modèle à l'aide des mêmes coefficients de modèle que ceux trouvés par régression linéaire dans les segments d'historique précédents. Ici, il est important de garder à l'esprit que les valeurs trimestrielles des indicateurs économiques et du S&P 500 arrivent presque simultanément (avec une précision de 3 mois). Par conséquent, afin de prédire le S&P 500 pour le prochain trimestre, le modèle doit être construit entre la valeur trimestrielle actuelle du S&P 500 et des entrées retardées d'au moins 1 trimestre (Lag>=1). Pour prédire le S&P 500 avec un trimestre d'avance, le modèle doit être construit entre la valeur trimestrielle actuelle du S&P 500 et des entrées retardées d'au moins 2 trimestres (Lag>=2). Etc. La précision des prédictions diminue de manière significative avec un retard croissant supérieur à 2.

Étape 7 : Vérifier l'exactitude des prédictions sur l'historique précédent. La technique originale décrite ci-dessus (mettre chaque entrée dans l'historique précédent, choisir l'entrée qui donne le plus petit MSD et calculer la prédiction à partir de la nouvelle valeur de cette entrée) a produit une prédiction MSD qui était encore pire que les prédictions aléatoires ou nulles. Je me suis posé cette question : pourquoi une entrée qui s'inscrit bien dans le passé devrait-elle avoir une bonne capacité de prévisibilité pour l'avenir ? Il est logique de sélectionner les entrées du modèle en fonction de leur erreur de prédiction précédente, plutôt qu'en fonction de la plus petite erreur de régression sur les données connues.

Au final, mon modèle peut être décrit pas à pas comme ceci :

  1. Téléchargement des données économiques de stlouisfed (environ 10 000 indicateurs).
  2. Données Preobrazeum à une forme stationnaire et normaliser.
  3. Nous choisissons un modèle linéaire de l'indice S&P 500, résolu analytiquement par la méthode RMS (régression linéaire).
  4. Nous choisissons la durée de l'histoire (1960 - Q2 2015) et la divisons en un segment de formation (1960 - Q4 1999) et un segment de test (Q1 2000 - Q2 2015).
  5. Nous commençons les prévisions à partir de 1960 + N + 1, où N*4 est le nombre initial de valeurs trimestrielles connues du S&P 500.
  6. Sur les N premières données, un modèle linéaire est construit y_mod = a + b*x pour chaque indicateur économique, où y_mod est le modèle S&P 500 et x est l'un des indicateurs économiques.
  7. Nous prévoyons N + 1 bar avec chaque modèle.
  8. Nous calculons les erreurs de prédiction de N + 1 barres par chaque modèle. Nous nous souvenons de ces erreurs.
  9. Nous augmentons de 1 le nombre de valeurs connues du S&P 500, c'est-à-dire N + 1, et répétez les étapes 6 à 9 jusqu'à ce que nous atteignions la fin du segment de formation (Q4 1999). A cette étape, nous avons stocké les erreurs de prédiction de 1960 + N +1 au T4 1999 pour chaque indicateur économique.
  10. Nous commençons à tester le modèle dans la deuxième période de l'histoire (Q1 2000 - Q2 2015).
  11. Pour chacune des 10 000 entrées, nous calculons l'erreur standard des prévisions pour 1960 - Q4 1999.
  12. Sur 10 000 entrées, nous sélectionnons celle qui avait la prédiction RMS la plus basse pour 1960 - Q4 1999.
  13. Nous construisons un modèle linéaire y_mod = a + b*x pour chaque indicateur économique pour 1960 - Q4 1999.
  14. Nous prédisons Q1 2000 par chaque modèle.
  15. La prédiction de l'entrée sélectionnée avec la valeur efficace la plus faible des prédictions pour l'intervalle de temps précédent (1960 - Q4 1999) est choisie comme notre prédiction principale du Q1 2000.
  16. Nous calculons les erreurs de prédiction de toutes les entrées pour Q1 2000 et les ajoutons à la valeur efficace des mêmes entrées pour la période précédente (1960 - Q4 1999).
  17. Passez au Q2 2000 et répétez les étapes 12 à 17 jusqu'à ce que nous atteignions la fin de la zone de test (Q2 2015) avec une valeur inconnue pour le S&P 500, qui est notre principal objectif de prédiction.
  18. Nous accumulons les erreurs de prédiction pour Q1 2000 - Q4 2014 faites par les entrées avec l'écart type le plus bas des prédictions dans les segments précédents. Cette erreur (err2) est notre modèle d'erreur de prédiction hors échantillon.

En bref, le choix d'un prédicteur dépend de leur RMS des prédictions précédentes du S&P 500. Il n'y a pas de regard vers l'avenir. Le prédicteur peut changer au fil du temps, mais à la fin du segment de test, il cesse essentiellement de changer. Mon modèle a sélectionné PPICRM avec un décalage de 2 trimestres comme première entrée pour prédire Q2 2015. La régression linéaire du S&P 500 avec l'entrée PPICRM(2) sélectionnée pour 1960 - Q4 2014 est illustrée ci-dessous. Cercles noirs - régression linéaire. Cercles multicolores - données historiques pour 1960 - Q4 2014. La couleur du cercle indique l'heure.


Prédictions stationnaires du S&P 500 (ligne rouge) :

Prédictions S&P 500 sous forme brute (ligne rouge) :

Le graphique montre que le modèle prédit la croissance du S&P 500 au deuxième trimestre de 2015. L'ajout d'une deuxième entrée augmente l'erreur de prédiction :

1 err1=0.900298 err2=0.938355 PPICRM (2)

2 err1=0.881910 err2=0.978233 PERMIS1 (4)

où err1 est l'erreur de régression. Il est évident qu'il diminue dès l'ajout d'une deuxième entrée. err2 est l'erreur de prédiction quadratique moyenne divisée par l'erreur de prédiction aléatoire. Autrement dit, err2>=1 signifie que la prédiction de mon modèle n'est pas meilleure que les prédictions aléatoires. err2<1 signifie que la prédiction de mon modèle est meilleure que les prédictions aléatoires.

PPICRM = Indice des prix à la production : Matières brutes pour transformation ultérieure

PERMIT1 = Nouvelles Unités de Logement Privées Autorisées par Permis de Construire - Dans des Structures avec 1 Unité

Le modèle décrit ci-dessus peut être reformulé de cette manière. Nous réunissons 10 000 économistes et leur demandons de prédire le marché pour le trimestre à venir. Chaque économiste fait sa propre prédiction. Mais au lieu de choisir une prédiction basée sur le nombre de manuels qu'ils ont écrits ou le nombre de prix Nobel qu'ils ont remportés dans le passé, nous attendons quelques années pour recueillir leurs prédictions. Après un nombre important de prédictions, nous voyons quel économiste est le plus précis et commençons à croire ses prédictions jusqu'à ce qu'un autre économiste le surpasse en précision.

Federal Reserve Economic Data - FRED - St. Louis Fed
Federal Reserve Economic Data - FRED - St. Louis Fed
  • fred.stlouisfed.org
Download, graph, and track 240,000 economic time series from 77 sources.
 
gpwr:
A suivre ...
N'est-il pas embarrassant que le gouvernement américain en général et le Comité de l'Open Market en particulier aient été soupçonnés à plusieurs reprises de falsifier et de manipuler les statistiques macroéconomiques américaines sur le marché du travail et le PIB américain afin d'influencer les marchés financiers ?
 
Demi:
Est-il déroutant que le gouvernement américain en général et le Comité de l'open market en particulier aient été soupçonnés à plusieurs reprises de falsifier et de manipuler les statistiques macroéconomiques du marché du travail et du PIB américains afin d'influencer les marchés financiers ?
Oui, c'est embarrassant. Il est également déconcertant que les données publiées soient ajustées de nombreuses fois après leur publication. Mais d'un autre côté, les traders réagissent aux données qui leur sont fournies par le gouvernement américain, faisant évoluer le marché dans une direction ou une autre, que ces données soient falsifiées, incomplètes ou prématurées. La technique de prédiction du marché basée sur ces données devrait donc en principe fonctionner.
 
gpwr:
Oui, c'est déroutant. Le fait que les données publiées soient ajustées plusieurs fois après leur publication prête également à confusion. Mais d'un autre côté, les traders réagissent aux données qui leur sont fournies par le gouvernement américain, faisant évoluer le marché dans un sens ou dans l'autre, que ces données soient falsifiées, incomplètes ou prématurées. La technique consistant à prédire le marché sur la base de ces données devrait donc en principe fonctionner.

Vous intéressez-vous uniquement au S&P ou le prenez-vous simplement comme exemple ?

C'est juste que le S&P a un modèle de mouvement particulier, un peu comme le ratio des devises.

 
Urain:

Vous intéressez-vous uniquement au S&P ou le prenez-vous simplement comme exemple ?

C'est juste que le S&P a un modèle de mouvement particulier, un peu comme la relation entre les monnaies.

Il est pris comme exemple en raison de la facilité de trouver des données d'entrée (accessibles au public). Tout peut être modélisé de cette manière : l'économie russe, les taux de change, etc. Les prix du marché sont les plus difficiles à prévoir car ils comportent beaucoup de bruit. Il est beaucoup plus facile de prédire les processus physiques.
 
gpwr:
Oui, c'est déroutant. Le fait que les données publiées soient ajustées plusieurs fois après leur publication prête également à confusion. Mais d'un autre côté, les traders réagissent aux données que le gouvernement américain leur fournit, faisant évoluer le marché dans un sens ou dans l'autre, que ces données soient falsifiées, incomplètes ou prématurées. La technique de prédiction du marché basée sur ces données devrait donc en principe fonctionner.

OK, jetons un coup d'oeil. C'est ce que j'ai fait aussi.

Un test d'allusion persistant

 
gpwr:

Il s'agit donc de prévoir l'indice S&P 500 sur la base des données économiques disponibles.

C'est un sujet très intéressant. J'ai essayé de créer des indicateurs basés sur le fichier de données : emploi, construction de logements neufs, ventes de logements neufs, etc. Et vous savez, vous pouvez voir à l'œil nu que certaines données ont une certaine corrélation avec le marché boursier. Mais, il ne semble pas y avoir de corrélation avec le marché des devises. J'ai utilisé des statistiques américaines de base.

Ne pensez-vous pas que vous avez choisi trop de types de données ? À mon avis, vous devez exclure les données sans importance des données valables, celles qui affectent le marché.

Cependant, je ne suis pas familier avec l'analyse neuronale. J'ai commencé à lire sur le sujet, mais je n'ai pas trouvé d'explication claire de son fonctionnement.

 
L'algorithme de régression permet de prédire n'importe quel indicateur à partir de n'importe quelle donnée, même s'il n'existe pas de relation évidente entre eux.
 
forexman77:

C'est un sujet assez intéressant. J'ai essayé de créer des indicateurs basés sur le fichier de données : emploi, construction de nouveaux logements, ventes de nouveaux logements, etc. Et vous savez, vous pouvez voir à l'œil nu que certaines données ont une certaine corrélation avec le marché boursier. Mais, il ne semble pas y avoir de corrélation avec le marché des devises. J'ai utilisé les statistiques américaines de base.

Ne pensez-vous pas que vous avez choisi trop de types de données ? À mon avis, vous devez exclure les données sans importance des données valables, celles qui affectent le marché.


La quantité de données d'entrée, grande ou petite, est toute relative.

L'autre est plus important.

Toutes les entrées se répartissent en deux catégories :

  • ceux qui ont un impact sur la variable cible
  • ceux qui n'ont pas ou peu d'influence.

J'utilise délibérément le mot influence plutôt que corrélation. La corrélation est un outil vide car la corrélation a toujours une certaine valeur et aucune valeur n'est NA, ce qui est fondamental pour déterminer l'impact des données brutes sur la variable cible.

Les variables qui n'ont aucun (ayant un faible impact - notez qu'il s'agit d'une caractéristique qualitative) sont des bruits pour déterminer l'effet sur la variable cible. L'écueil ici est qu'en partant d'un certain montant non déterminé par l'algorithme, ce bruit "encombre" les variables importantes et qu'ensuite les variables "importantes" ne peuvent pas être extraites algorithmiquement de ce montant agrégé.

Il faut donc examiner manuellement toute la liste des variables d'entrée et décider intuitivement, ou sur la base d'une autre considération, que "cette variable d'entrée est susceptible d'avoir un effet et que celle-ci ne l'aura probablement pas".

Je connais plusieurs dizaines d'algorithmes pour déterminer l'importance des variables, que j'ai testés sur un ensemble provenant de mon article et de mon livre (jusqu'à 100 variables d'entrée). Le résultat est exactement comme décrit. J'ai sélectionné manuellement une liste, puis je l'ai filtrée avec l'algorithme et j'ai obtenu la liste. Et la valeur d'une telle liste est fondamentale : les modèles utilisant un tel ensemble de données d'entrée "influentes" (utilisant 3 types de modèles différents) n'ont PAS la propriété de sur-apprendre, ce qui est le principal problème. Le surajustement est la principale conséquence de l'utilisation de données d'entrée "bruyantes".

PS.

La stationnarité ne joue aucun rôle dans mes modèles, qui sont randomForest, ada, SVM.

 
gpwr:

...

.... Aucun modèle ne fonctionne sans stationnarité.

...

L'exigence de stationnarité est très rigide et totalement injustifiée.

.

Et les modèles "non stationnaires" fonctionnent très bien ;)

 
transcendreamer:
Un algorithme de régression peut prédire n'importe quel indicateur sur la base de n'importe quelle donnée, même s'il n'existe pas de relation explicite entre eux.
Cela peut être dit de n'importe quel modèle, non seulement de régression mais aussi de modèles neuronaux, ARMA et autres. S'il n'y a pas de relation entre les entrées et les sorties, tout modèle générera une prédiction, mais de manière inexacte.