Prev Section 13.6: Dynamiques des marchés financiersUp Chapitre 13: Dynamique des industries et des marchésChapitre 14: Dynamique macroéconomique Next
13.7
Application : Un marché financier simpliste avec des agents à intelligence zéro
Vous êtes invités à développer un modèle de NetLogo qui reproduit le fonctionnement d’un marché financier très simple décrit ci-dessous.
Description des éléments du modèle
Le marché d’un titre financier contient agents à intelligence zéro (zero-intelligence agents). A chaque période, agents, choisis aléatoirement parmi les , participent au marché. Chacun de ces agents décide de manière équiprobable entre faire de proposition de transaction ) ou non . De manière équiprobable, chaque agent qui décide de parler peut se placer du coté offre (ask) du marché ou du coté demande (bid) et proposer un volume de titres sur le marché, tiré de manière uniforme dans l’intervalle . Le prix de marché évolue alors en fonction du déséquilibre du marché :
représente la rugosité du marché en termes d’ajustement du prix. Le prix initial du titre est .
L’objectif du modèle est d’observer la dynamique du prix de marché dans ce contexte extrêmement simple, en fonction des paramètres du modèle.
Programme NetLogo
L’interface visuelle doit contenir :
Un Monde (World) où nous allons représenter l’ensemble des agents, de taille une taille cases (Origine=Center; ; ; Patch size = ).
Un curseur (slider) pour sélectionner que vous appellerez dans le programme NetLogo.
Un curseur (slider) pour sélectionner que vous appellerez dans le programme NetLogo.
Un curseur (slider) pour sélectionner que vous appellerez dans le programme NetLogo.
Un curseur (slider) pour sélectionner que vous appellerez dans le programme NetLogo.
Un curseur (slider) pour sélectionner que vous appellerez dans le programme NetLogo.
Un indicateur (observer) qui donne le prix actuel, .
Un indicateur (observer) qui donne le total des ordres ask.
Un indicateur (observer) qui donne le total des ordres bid.
Un graphique qui montre l’évolution du prix de marché.
Un histogramme qui donne la distribution des rentabilités depuis le début du marché
Un bouton «Setup» permettant l’exécution de la procédure setup (voir ci-dessous).
Un bouton «Go» permettant l’exécution continue de la procédure go. Pour arrêter le simulation l’utilisateur recliquera sur ce bouton.
Le code doit contenir :
Déclaration des variables globales et des variables pour les agents.
Une procédure setup qui initialise le modèle et qui crée les individus. Les agents ont la couleur verte initialement et ils ont la forme «person». Ils sont distribués aléatoirement dans le Monde.
Une procédure go qui contient les instructions correspondant au déroulement d’une période dans le modèle et qui :
choisit aléatoirement agents et leur demande de prendre une décision d’ordre, en faisant appel à une procédure make-decision. L’agent choisit d’abord de parler ou non. S’il choisit de parler, le choix du coté du marché et du volume .
change la couleur de l’agent en fonction de ses choix : s’il ne parle pas, il récupère la couleur verte, s’il parle du coté bid, il prend la couleur rouge et s’il parle du coté ask, la couleur jaune.
calcule le nouveau prix de marché en faisant appel à une procédure execute-orders.
remet à zéro les décisions et les ordres des agents en faisant appel à une procédure cancel-orders.
Expériences
Le modèle étant très simple, il ne laisse pas beaucoup de place à la discussion. On peut néanmoins faire des expériences en modifiant les différents paramètres du modèle et observer ensuite la dynamique et la distribution des rentabilités, en faisant des simulations assez longues (jusqu’à 15000 ticks).
Fixez pour commencer. Faites plusieurs runs. Que pensez-vous de la dynamique des prix et de leur volatilité? Est-ce que vous observez une convergence vers une valeur d’équilibre?
Même question avec des valeurs différentes de . Quelle influence a cette variable sur la dynamique des prix et sur la distribution des rentabilités?
Même question pour .
Même question pour .
Extension 1 : prise en compte de la richesse et de la contrainte de revenu des agents
Les demandes et offres des agents vont tenir compte maintenant de leur contrainte de budget imposée par le niveau de leur richesse. Les transactions sur les marchés vont tenir compte du rationnement potentiel d’un coté ou de l’autre du marché. Ces éléments étaient complètement absents de la version de ce modèle.
Les transactions effectives sur le marché auront lieu à chaque période en tenant compte d’un rationnement proportionnel. Par exemple, si la demande est supérieure à l’offre à une période donnée, chacun des demandeurs ne pourra effectivement acheter que titres ( étant la demande initiale de ).
Chaque agent aura maintenant deux variables supplémentaires : qui représente sa richesse et qui correspond au nombre de titres détenus par lui.
Nous allons introduire un curseur richesseInitiale dans l’interface avec . Dans setup chaque agent verra sa fixée à ce niveau initial de richesse.
Cette richesse conditionnera par la suite la quantité de titres que peut demander l’agent (il va supposer que le prix sera le même que celui de la période précédente pour tenir compte de sa contrainte de budget), ainsi que la quantité effective qu’il pourra acheter une fois que le prix de la période est fixé définitivement. L’agent ne pourra ni emprunter, ni prêter de l’argent dans le modèle. La richesse évoluera ensuite en fonction des quantités effectivement achetées/vendues et le prix de marché.
Notre modèle contiendra maintenant un histogramme représentant la distribution des richesses à chaque période entre les agents et un autre qui représente celle des portfolios.
Les autres éléments du modèle seront identiques à ceux du modèle de base.
Créez un nouveau modèle NetLogo appeléapplication-sfmzit-ext-1.nlogoet commentez de manière détaillée les modifications introduites dans ce programme.
Extension 2 : apprentissage social simple dans le modèle complété
A partir de l’extension 1, nous introduisons dans le modèle un apprentissage social simplifié.
La stratégie de chaque agent est maintenant caractérisée par un triplet , avec ( : parler; : ne pas parler), ( : bid, : ask), Donc le nombre d’agents qui choisiront de parler à chaque période et le coté du marché où ils choisiront de se placer deviennent endogènes dans cette version du modèle.
Apprentissage : Les stratégies des agents évoluent, à la fin de chaque période, selon un schéma d’apprentissage social basé sur deux mécanismes simples :
L’imitation qui se base sur la performance moyenne passée de chaque agent. L’horizon passé qui sera considéré pour cette évaluation est commandé par la variable qui détermine le nombre de périodes passées qui sont considérées. et sa valeur doit être fixée dans l’interface graphique grâce à un curseur. Etant donné la mémoire, la performance de chaque agent sera calculée, à la fin de la période , comme une moyenne mobile :
Chaque agent peut chercher à imiter la stratégie utilisée par un autre agent avec une probabilité (appelé probImit dans le code). En cas d’imitation, l’agent tire aléatoirement l’agent à imiter, et la probabilité d’être tiré pour chaque agent est proportionnelle à sa richesse moyenne relative pendant les périodes passées (roulette wheel) :
De plus, n’imitera effectivement l’agent tiré que si et seulement si (rationalité individuelle). En cas d’imitation, adopte telle qu’elle la stratégie utilisée par .
L’expérimentation aléatoire qui peut avoir lieu ensuite, de manière indépendante, avec une probabilité (appelé probMut dans le code) et qui mute aléatoirement l’une des trois composantes de la stratégie en modifiant aléatoirement sa valeur dans son domaine de définition : mutation entre et pour et entre et pour et un tirage uniforme dans pour . Les valeurs de et de doivent être fixées dans l’interface grâce à deux curseurs dédiés.
Un graphique intégré dans l’interface doit montrer l’évolution dans le temps de la moyenne des offres de chaque coté du marché.
Un autre graphique similaire doit montrer l’écart-type de ces offres.
Créez un nouveau modèle NetLogo appeléapplication-sfmzit-ext-2.nlogoet commentez de manière détaillée les modifications introduites dans ce programme.
Prev Section 13.6: Dynamiques des marchés financiersUp Chapitre 13: Dynamique des industries et des marchésChapitre 14: Dynamique macroéconomique Next