Il y a cinq ans, une idée m'a frappé. J'ai décidé de simuler autant que l'économie mondiale afin de savoir exactement quelle dynamique attendre des actions, des obligations, des taux de change, etc. Il n'y avait qu'un petit problème, le modèle de tout cela n'existe pas. Et pire encore, les économistes soutiennent depuis des décennies lequel de leurs modèles économétriques les plus longs décrit ces processus complexes au moins approximativement correctement. Par conséquent, au lieu d'essayer de tirer un modèle fictif (et bien sûr incroyablement simplifié) sur une réalité multidimensionnelle, je me suis engagé dans une voie conceptuellement différente - modéliser les agents au niveau micro afin que, dans la lutte épuisante pour la survie, par essais et erreurs, ils parviennent à un état d'équilibre, qui au niveau macro s'exprime en la dynamique des prix, des taux, etc.
Le résultat de mes recherches est décrit ci-dessous. Pour la visualisation, j'ai enregistré le mouvement des agents et chaque pixel de cette vidéo cache un réseau neuronal, c'est-à-dire le cerveau d'un agent luttant pour survivre en concurrence avec son propre genre dans le monde cruel du profit et de la propreté.
Pourquoi cela devrait-il être facile à comprendre, par exemple sur les différends actuels entourant les «guerres commerciales»? Certains (principalement des économistes professionnels) affirment que les tarifs nuisent en fin de compte à l'économie dans son ensemble. D'autres pensent que le pays en bénéficiera.
Il n'y a rien à vérifier et à prouver sur les faits, car personne ne peut mettre une expérience, toutes choses égales par ailleurs, sur la même économie. Alors que la méthode décrite ci-dessous vous permet de contrôler les conditions et d'obtenir des preuves de la présence ou de l'absence des bénéfices d'une solution.
Contenu:
- Description générale du concept
- Description de la mise en œuvre du prototype (PoC)
- Direction du développement
1. Description générale du concept
Malgré une assez bonne compréhension des principes de base du fonctionnement de l'économie, il est très difficile d'appliquer les connaissances dans la pratique.
Par exemple, il existe les modèles (théories) suivants concernant les principes de la formation du taux de change:
- Modèle Obstfeld-Rogoff
- Modèle Dornbusch
- Modèle monétaire Frenkel-Mousse
Et ce n'est pas une liste complète. De plus, les mêmes facteurs, par exemple le déficit croissant dans différents modèles, donnent la direction opposée en termes d'impact sur le taux de change. Il semblerait que cela pourrait être plus facile que de regarder la dynamique du déficit budgétaire et de la comparer avec le taux de change?
En pratique, les difficultés de cette approche sont liées au problème de «l'explosion combinatoire», lorsque des centaines de facteurs multidirectionnels sont en vigueur, et bien que l'effet de chacun d'eux individuellement puisse encore être compris d'une manière ou d'une autre, leur résultante est presque impossible à calculer. La situation est compliquée par le fait que dans la vie réelle, il est impossible de faire une expérience contrôlée, en fixant tous les paramètres sauf un.
Vous pourriez penser que le taux de change est une chose très compliquée, mais il concerne les concepts les plus fondamentaux et clés, tels que l'inflation. C'est le principal paramètre que presque toutes les banques centrales du monde sont appelées à réglementer. Il semblerait que des milliers de théoriciens et de praticiens aient dû comprendre le mécanisme de ce phénomène il y a longtemps. Cependant, membre du conseil d'administration du Federal Reserve System (Banque centrale américaine), Daniel Tanullo écrit en 2017: "
Nous n'avons toujours pas de théorie de la dynamique inflationniste qui serait efficace en temps réel ".
Pendant ce temps, l'inflation est l'un des principaux motifs des décisions de la Fed d'augmenter ou de baisser le taux directeur, ce qui a un effet puissant sur les nombreux marchés boursiers et obligataires de plusieurs milliards de dollars du monde entier.
Ainsi, une compréhension des principes du fonctionnement macroéconomique permet d'appliquer les bons modèles et, par conséquent, de prévoir efficacement l'évolution de la situation.
Pour parvenir à cette compréhension, il est nécessaire de mettre en œuvre un modèle économique à grande échelle, qui inclut tous les principaux facteurs et industries qui existent dans la vie réelle. La principale différence entre ce modèle et les modèles existants réside dans l'abandon des tentatives de prédiction de résultats manifestement «corrects». Au lieu de cela, dans cet article, nous utilisons l'approche de la lutte évolutive des agents au niveau micro, lorsque des décisions incorrectes conduisent à l'élimination des agents du pool génétique, et que les décisions qui conduisent à un résultat financier positif sont enregistrées et distribuées avec succès en utilisant l'algorithme génétique.
En d'autres termes, tout comme une véritable économie de marché se développe, la méthode proposée met en œuvre les principes de concurrence et de développement continu, rejette ceux qui prennent des décisions inefficaces. Et en regardant déjà à quels agents en sont venus dans ce combat, nous pourrons juger de ce qu'est un état d'équilibre dans des conditions données.
2. Description du prototype disponible
Pour tester l'opérabilité du concept, c'est-à-dire la preuve que les agents, agissant au niveau micro, sont en principe capables d'atteindre des états d'équilibre avec un seul objectif - pour survivre, un modèle très simplifié (par rapport à l'économie réelle) a été développé, décrit ci-dessous.
C'est un monde habité par des agents - c'est-à-dire résidents, dont chacun représente un réseau neuronal distinct, qui analyse la réalité environnante et prend certaines décisions. Au moment du démarrage du programme, les réseaux de neurones sont initialisés avec des valeurs aléatoires et uniquement ceux qui, par hasard, «découvrent» comment obtenir des ressources et multiplier la transmission de leurs gènes à leurs descendants, comme ce qui se passe dans notre merveilleuse réalité objective.

Chacun de ces résidents reçoit une certaine somme d'argent. L'agent est également résident de l'un des deux pays: le conditionnel «USA» ou «Eurozone». Chaque pays a sa propre monnaie: «dollar» et «euro». Les agents ont la capacité de produire l'un des deux types de produits: «fromage» et «vin».
Dans chaque pays, ~ 50% des agents sont des «filles» et savent bien produire du fromage. Ils le font particulièrement bien s'ils ont du vin. Ils savent eux-mêmes produire du vin, mais cela tourne mal pour eux. C'est-à-dire chaque unité de marchandise a une mesure - la qualité (de 0 à 100%) et si les filles font du fromage, mais qu’elles n’ont pas de vin, alors la qualité est de 10%, mais avec un vinyle tout est à 100%.
La deuxième moitié des agents sont des garçons et ils
sont bien
couchés sur le canapé pour faire du vin. Surtout si le fromage est mangé avant. Et ils font mal le fromage, en général, tout est symétrique par rapport aux filles.
Les marchandises ont tendance à se détériorer avec le temps, c'est-à-dire chaque jour, la qualité des produits diminue. Pour la vie et pour une propagation réussie, chaque agent doit consommer un produit qu'il ne sait pas fabriquer. C'est-à-dire si l'agent produit bien du fromage, il est plus efficace pour lui de vendre du fromage et d'acheter du vin. Si vous projetez le modèle sur la vraie vie, nous pouvons dire que le boulanger fait de bons petits pains et les vend avec succès, mais pour le bonheur, il a besoin de vodka, de hareng et d'un garage, car certains petits pains ne peuvent pas faire.
De plus, les agents peuvent échanger des devises. Par exemple, un agent européen peut vendre le fromage produit (ou même déjà acheté) en dollars, puis les échanger contre des euros et acheter de la nourriture pour eux. Tous les échanges se font en soumettant des demandes d'enchères. L'application indique quel produit l'agent veut vendre (ou acheter), le prix souhaité, la qualité et le delta qu'il est prêt à passer. Les agents prennent toutes ces décisions en fonction des commandes des réseaux de neurones. C'est-à-dire des informations sur le monde qui l'entoure, telles que:
- les taux de change en vigueur pour la journée en cours (c'est-à-dire pas l'historique des changements, mais quel taux a été fixé lors de la dernière session tenue);
- le nombre de biens vendus dans le monde, le prix moyen d'un produit et l'âge moyen.
Et l'agent reçoit des informations sur son propre état:
- combien de monnaie il a (et à quel prix il l'a acheté)
- combien coûte le produit, la qualité du produit, son coût, etc.
- propre santé
Le réseau de neurones traite toutes les informations d'entrée et prend des décisions, telles que: combien produire, quel prix et quelle devise vendre, à quel taux échanger une devise contre une autre, etc.
Si l'agent agit efficacement, c'est-à-dire qu'il est capable de produire un produit qu'il ne peut pas produire et qu'il consomme, alors il reçoit de la «vitalité». Le maintien de toute activité nécessite cette vitalité, dont la capacité à se reproduire nécessite surtout beaucoup d'énergie. S'il y a deux agents de sexe différent, ils peuvent alors décider (retirer les enfants des écrans) d'avoir des relations sexuelles et de donner naissance à un autre agent.
Avec chaque jour vécu, il devient plus difficile à vivre (plus de vitalité est prise) et lorsque leur réserve s'épuise, l'agent meurt et transfère la réserve de monnaie accumulée à son héritier.
Le fait clé de cette expérience est que le nombre de dollars et d'euros dans le système est strictement limité et que le ratio du nombre total de devises est d'environ 1 à 3. Les agents eux-mêmes ne le savent pas. Ils n'ont qu'un certain montant en main et ils n'ont aucune idée de la quantité d'argent qui circule dans l'économie. C'est-à-dire on ne leur dit pas à quel taux l'argent doit être changé, et en fait ils fixent eux-mêmes tous les prix. La capacité des agents à parvenir à un cours d'équilibre, dont nous savons, possédant l'intégralité des informations, est de 3 à 1, est une preuve du concept de la possibilité de trouver une solution efficace sans professeur.
En d'autres termes, si les agents trouvent un taux d'équilibre grâce à la sélection naturelle dans un modèle simplifié (deux pays, deux devises, deux biens), il est probable qu'ils peuvent faire de même dans un modèle plus proche du monde réel.
Dans l'image ci-dessous, nous voyons combien l'euro se promène à l'intérieur de la zone euro et combien l'euro va à l'extérieur (c'est-à-dire dans ce cas aux États-Unis). Nous savons la même chose du dollar.

La dynamique rapide est d'abord liée à la particularité de l'implémentation (c'était plus simple de cette façon) et ne joue aucun rôle. En ce moment, les agents apprennent seulement à marcher et à se reproduire au moins d'une manière ou d'une autre. Dans l'image ci-dessous, nous voyons le rapport réel de la masse monétaire des deux devises (ligne rouge) et le taux de change moyen (basé sur les résultats de toutes les transactions de la journée) que les agents ont formé.

On peut voir que le taux moyen de transactions après quelques errances a atteint le niveau cible. Le niveau cible est la ligne rouge, c'est-à-dire le rapport réel du volume des devises et cette information n'est pas disponible pour les agents.
Cependant, jusqu'à présent, nous n'avons aucune confiance que ce n'est pas un accident. Modifiez les conditions de l'expérience, laissez le ratio du montant d'argent être d'environ 1 à 4,3 et voyez ce qui se passe dans ce cas:

Et encore une fois, les agents parviennent à une valeur d'équilibre. Maintenant, en regardant les graphiques, il peut sembler que tout cela va de soi, mais en réalité, plusieurs années ont été consacrées à faire converger le processus. En particulier, il s'est avéré que le nombre d'agents joue un rôle critique, quand il y en a relativement peu, le processus s'avère beaucoup moins stable, et pour résoudre le problème nous avons dû écrire une application distribuée fonctionnant sur trois PC en même temps.
La principale difficulté était que le simple fait d'augmenter le nombre d'agents ne suffisait pas, l'élément clé du succès étant le besoin de clustering. En d'autres termes, il s'est avéré efficace de ne pas développer 100 agents (nombre conditionnel) dans un espace commun, mais lorsqu'ils sont divisés en 10 «villes» de 10 pièces chacune. C'est-à-dire les parquets restent mondiaux et tout agent peut échanger avec n'importe quel autre, mais le code génétique évolue au sein de son groupe. Ce n'est que dans cette condition que le cours a commencé à converger vers l'équilibre.
Voici quelques-uns des paramètres les plus importants de la version de travail:
- 60 villes
- 5000 habitants dans la ville
- 4 blocs de réseaux de neurones (reproduction, production, commerce de marchandises, commerce de devises)
- les réseaux de neurones sont directs, à deux couches, avec régularisation (on soupçonne que le LSTM fonctionnera mieux)
3. La direction du développement
S'il n'est toujours pas très clair pourquoi tout cela est nécessaire, essayez de répondre à la question suivante - comment le taux eur / usd changera-t-il si:

Et maintenant, prenons en compte qu'il y a l'influence de la Chine, du Canada, du Japon, etc. Bien sûr, nous pouvons compter cela sous la forme de régressions VAR (ce qui n'est fait qu'avec beaucoup de succès, voir le commentaire de Tarullo), cependant, premièrement, il s'agit d'une simplification sans fin des processus réels, et deuxièmement, le nombre de combinaisons connues est de plusieurs ordres de grandeur plus petit que les potentielles. Vous pouvez donc imaginer la qualité d'un tel modèle.
Une alternative à cela est la simulation de processus réels au niveau micro avec seulement plus de puissance de calcul. S'il s'avère que les résultats de nombreux lancements convergeront vers la même solution et cela sera confirmé par des observations dans la pratique, alors ce sera un outil ineffablement puissant pour les investisseurs et les régulateurs des banques centrales.
Évidemment, pour la modération d'un système macroéconomique proche de la réalité, bien plus de modules sont nécessaires. Il est nécessaire de développer une architecture d'application pouvant s'exécuter en mode distribué sur le cluster (simultanément sur tous les nœuds) et de mettre en œuvre les fonctionnalités suivantes:
- Les agents sont des individus. Ils peuvent apprendre, c'est-à-dire augmenter leur productivité. Ils peuvent trouver un emploi auprès d'agents: entreprises, banques ou appareil d'État. Ils peuvent faire des achats, tomber malade, prendre leur retraite, effectuer des dépôts ou contracter des emprunts. Ils peuvent acheter une participation dans des entreprises (entreprises), c'est-à-dire devenir actionnaires.
- Agents - entreprises (entreprises) qui embauchent des individus et leur versent des salaires. Le produit fabriqué est commercialisé. Ils peuvent effectuer des dépôts ou contracter des emprunts. Capable de payer des impôts et de les éluder. Les entreprises peuvent produire des biens et des services tels que: nourriture, vêtements, transport, logement, pétrole, biens d'équipement, divertissement, médecine privée.
- Agents - banques, offrent des dépôts et des prêts. Employer des employés (agents de particuliers), interagir avec la Banque centrale.
- Le ministère des finances - est géré directement (c'est-à-dire sans modélisation par des réseaux de neurones). Définit les règles fiscales (TVA, impôt sur le revenu des particuliers, impôts sociaux, impôt sur le revenu des sociétés, droits d'exportation / importation, etc.). Déterminer le niveau des dépenses dans les domaines des soins de santé, de l'éducation, de la défense et des pensions. Émet des obligations d'État. Toutes ces valeurs sont publiées par des agences gouvernementales et introduites de manière exogène dans le modèle.
- Banque centrale - également des paramètres exogènes, tels que les opérations de génération et de stérilisation de la masse monétaire. Gestion des offres clés.
- L'appareil d'État est un ensemble d'agents spécifiques des individus qui mettent en œuvre les services publics (santé, éducation, défense, application des lois).
- Le système judiciaire est le degré de chaos dans le modèle. Il s'agit d'un ensemble de coefficients qui augmentent ou diminuent les risques pour l'entreprise. Par exemple, un coefficient de 0,1 signifie une probabilité de 10% de perdre l'entreprise à la suite d'une prise de contrôle par un raider. Ou une évaluation fiscale injuste, etc.
- Lieux pour transactions avec devises, actions, obligations, biens, vacances, services financiers (prêts / dépôts).
- Paramètres exogènes auxiliaires: réserves de pétrole, facilité de faire des affaires, durée de vie moyenne, etc.
Un tel ensemble de fonctions devra être mis en œuvre pour plusieurs des plus grandes économies (États-Unis, Chine, zone euro, etc.). Les proportions dans le nombre d'agents, les paramètres clés, les ratios, etc. doivent être ajustées conformément aux résultats des études internationales (FMI, ONU, etc.).
Difficulté clé: implémenter des algorithmes rapides et fiables pour les transactions et opérations réparties. Si vous faites tout séquentiellement, aucune ressource ne sera suffisante pour que toutes les fonctionnalités décrites fonctionnent dans un délai acceptable. Il est nécessaire de prévoir une évolutivité élevée, qui permet de connecter une puissance de calcul supplémentaire "à la volée", ainsi que l'ajout le plus simple possible de fonctionnalités au cours du développement.
Et tout cela nécessite bien sûr la technologie BigData. Le prototype a été écrit en C #, mais aujourd'hui choisirait le SpringBootYarn + HBase facilement évolutif. En fait, je pense que la principale raison pour laquelle cela n'a pas encore été réalisé est qu'il nécessite une énorme quantité de ressources, dans le sens du matériel + une bonne expertise dans les technologies bon marché comme Hadoop. Eh bien, l'idée elle-même n'est pas non plus anodine. Au moins, je n'ai jamais rien vu de tel nulle part. Saisissant cette opportunité, je demande à l'esprit collectif de jeter des liens si quelqu'un est familier avec le travail dans ce sens.
Naturellement, si jusqu'à présent cela a été maintenu avec enthousiasme, pendant votre temps libre, afin de vous assurer que le concept fonctionne, alors le développement ultérieur nécessite des investissements financiers à temps plein et importants. Honnêtement, je n'ai pas confiance dans l'investissement de plusieurs millions de dollars qui est nécessaire pour passer du PoC à un modèle à part entière. Quand j'ai commencé, je pensais que cela nécessiterait un ordre de grandeur moins de ressources. Cependant, je suis convaincu qu'un jour cette idée trouvera certainement son expression. Au moins, lorsque le fer nécessaire pour de tels volumes de calculs sera beaucoup moins cher et qu'il deviendra disponible non seulement pour les géants financiers (et lents), mais aussi pour les passionnés comme moi.
Conclusion lyrique:
L'argent est bien sûr génial, mais il y a un plaisir particulier à s'asseoir les longues soirées d'hiver, à regarder l'essaimage de ces petites créatures de ma volonté. Il y a quelque chose d'agréable à cela, du sentiment d'être un créateur, quoique si primitif, mais toujours la vie. , , , . , - , , …