Brevet FR2890206A1 — publié le 20070302

OPPORTUNITÉS D'EXÉCUTION LOCALE DES ORDRES DE BOURSE La présente invention se rapporte au domaine des outils de passage d'ordre en bourse. La présente invention se rapporte plus particulièrement à un procédé permettant d'exécuter des ordres localement. L'art antérieur connaît déjà des architectures et des procédés pour simuler des ordres en bourse. De telles architectures sont par exemple illustrées figure 1. Dans une telle architecture, des clients 3a, 3b, 3c sont connectés à un serveur d'ordre 2 qui archive les ordres reçus et renvoie des acquittements. Les ordres reçus par les clients 3a, 3b et 3c sont analysés à chaque passage, et, en cas d'opportunité d'exécution, par exemple quand un ordre d'achat de 500 unités à 100 euros est reçu alors qu'un ordre de vente des mêmes 500 unités à 100 euros est stocké au niveau du serveur d'ordre, l'exécution de l'ordre est simulée en envoyant un avis de vente au vendeur et un avis d'achat à l'acheteur et en supprimant les ordres du serveur. Il est entendu que ce type de simulation ne tient pas compte du carnet d'ordre global au niveau de la bourse, et par exemple, un utilisateur 4 qui passerait des ordres à la bourse 1 sans être connecté au serveur 2 ne serait pas pris en compte dans la gestion des opportunités d'ordres. Il serait donc avantageux de pouvoir passer des ordres locaux au niveau des serveurs d'ordres tout en tenant compte du contenu réel du carnet d'ordre global de la bourse. Par ailleurs, dans une architecture à trois niveau comprenant la bourse, des serveurs d'ordre et/ou de contenu boursier, et des clients, il est avantageux d'exécuter les ordres localement au niveau des serveurs. Ceci est en particulier le cas pour le courtier en bourse (en anglais broker ) qui réalise ainsi les deux transactions sur son serveur et obtient une commission à la fois du vendeur et de l'acheteur. La présente invention entend donc permettre le passage d'ordre localement au sein d'un marché boursier global. Pour ce faire, la présente invention concerne un procédé pour l'exécution locale d'ordres de bourse dans une architecture comprenant un serveur d'ordre associé à une pluralité de clients apte à recevoir des ordres issus de ladite pluralité de clients et à les transmettre à la bourse, et à recevoir un carnet d'ordre global issu de la bourse, le procédé comprenant une première étape de constitution d'un carnet d'ordre local consistant à enregistrer au niveau d'une application de correspondance associée audit serveur d'ordre, un carnet d'ordres local issu de la pluralité de clients, et une étape d'exécution d'ordre local comprenant les étapes consistant à : pour un des client locaux, générer un premier ordre à destination du serveur d'ordre; pour le serveur d'ordre, envoyer cet ordre à ladite application; - au niveau de ladite application de correspondance, détecter une opportunité d'exécution locale dudit premier ordre en fonction du carnet d'ordre local et du carnet d'ordre global; exécuter l'ordre au niveau de ladite application de correspondance si ladite opportunité d'exécution locale existe. De préférence, afin de tenir compte de l'état global du marché, et pour que le client ne soit pas lésé dans la transaction local, ladite étape de détection comprend en outre les sous étapes consistant à : identifier une correspondance de prix entre un 10 second ordre appartenant au carnet d'ordre local et ledit premier ordre; tester si il existe une meilleure opportunité de prix pour passer ledit premier ordre au niveau dudit carnet d'ordre global. Dans ce cas, afin d'actualiser le carnet local tout en restant synchronisé avec la bourse, le procédé comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, un ordre d'annulation dudit second ordre. En outre, l'étape d'exécution locale du premier ordre et du second ordre comprend une étape consistant, pour ladite application, à émuler une exécution entre ledit premier ordre et ledit second ordre, et à transmettre cette exécution émulée au niveau dudit serveur d'ordre via deux messages de transaction, un pour chaque ordre, de sorte à modifier les statuts dudit premier ordre et dudit second ordre. Afin de tenir compte des correspondances partielles entre les ordres entrant et les ordres locaux, si le second 2890206 4 ordre est associé à une seconde quantité supérieure à la première quantité associée au premier ordre, le procédé comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, une commande de réduction de la quantité dudit second ordre correspondant à la différence entre la seconde quantité et la première quantité. De la même façon, si le second ordre est associé à une seconde quantité inférieure à la première quantité associée au premier ordre, le procédé comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, un ordre correspondant à la différence entre la première quantité et la seconde quantité. On comprendra mieux l'invention à l'aide de la description, faite ciaprès à titre purement explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées où : la figure 1 illustre un exemple de passage d'ordres locaux selon l'art antérieur; la figure 2 un exemple de passage d'ordres locaux 25 selon la présente invention; la figure 3 est un schéma représentatif du procédé selon l'invention selon un premier mode de réalisation. L'homme du métier comprendra que la difficulté majeure du passage d'ordres locaux est de garder une homogénéité entre le carnet d'ordre global au niveau de la bourse et le carnet d'ordre local au niveau des serveurs d'ordres. Ceci nécessite en particulier une synchronisation entre l'ordre au niveau de la base de données d'ordre, et l'ordre au niveau de la bourse. Par ailleurs, si un ordre est exécuté en local, l'état de l'ordre n'est pas modifié au niveau de la bourse, alors que celui-ci n'existe plus. Il convient donc de remédier à cette difficulté en gardant toute la cohérence nécessaire entre le serveur d'ordre et la bourse. Il est également important de ne pas exécuter d'ordres locaux si de meilleures possibilités d'échange existent sur le marché global afin que les utilisateurs ne soient pas lésés par l'utilisation du passage d'ordres locaux. Nous décrivons maintenant en détail le procédé de passage d'ordres en local selon l'invention. Aux fins de la présente demande, les différents ordres passés le sont sur un instruments fictif dénommé I. Les ordres d'achat seront notés B pour Buy ( acheter en anglais) et les ordres de vente seront notés S pour Sell ( vendre en anglais). Ces ordres seront suivis de la quantité à l'achat ou à la vente, et du prix d'achat et de vente. L'instruction I: B 500 12.00 correspond donc à un ordre d'achat de 500 unités de l'instrument I à 12.00 euros. Par défaut, on omettra de mentionner l'instrument financier concerné et on notera simplement B 500 12.00 . L'homme du métier comprendra également que les transactions possibles sur un marché ou localement correspondent à des ordres opposés (vente-achat), sur un prix adapté, et pour une quantité adaptée. On distingue également le carnet d'ordre interne, correspondant aux ordres passés par les utilisateurs du serveur d'ordres 2 par exemple par les utilisateurs 3a, 3b, et 3c, et le carnet d'ordre du marché ou carnet d'ordre global correspondant aux ordres des utilisateurs locaux 3a, 3b, et 3c mais également du reste des utilisateurs connectés à la bourse, par exemple l'utilisateur 4. Selon l'invention, le carnet local est stocké au niveau d'une application de correspondance 5 associé au serveur d'ordre 2. Chaque ordre reçu au niveau du serveur d'ordre 2 est alors stocké au niveau de l'application 5 afin de traiter les éventuelles correspondances futures. L'application 5 est synchronisée avec le serveur d'ordre et le carnet local est maintenu à jour en fonction de l'évolution et des exécutions des ordres. L'application 5 est une application connectée au serveur d'ordre 2 et cliente de celui-ci. Dans un premier exemple de mise en uvre de l'invention illustré figure 3, on considère le carnet 25 d'ordre local à l'achat suivant pour l'instrument I: B 500 12.00 (Ordre 1) B 1000 11.90 (Ordre 5) Et un carnet d'ordre global au niveau de la bourse: 800 12.00 3000 11.95 2000 11.90 1000 11.85 Le carnet d'ordre global de la bourse est accessible par l'intermédiaire d'un serveur de flux connecté ou associé au serveur d'ordre au sein d'une plateforme référencée globalement 2. Lorsque le serveur reçoit un ordre de vente depuis un des utilisateurs locaux 3a, 3b, ou 3c, par exemple, S 500 12.00 (ordre 2), une première étape du procédé détermine si il existe une possibilité de correspondance entre un ordre d'achat local et ce dernier ordre. La correspondance est acquise si le prix de vente sur un instrument correspond à une offre d'achat sur le même instrument pour la même quantité. Il est entendu que le procédé selon l'invention est également applicable si la quantité offerte à l'achat est inférieure à l'ordre de vente mais que l'agrégation de plusieurs ordres d'achat au même prix permet d'obtenir la quantité à la vente. Si ce n'est pas le cas, l'ordre de vente d'abord est enregistré au niveau de l'application 5 puis transmis à la bourse 1. On teste ensuite si il existe un meilleur prix sur le marché global pour réaliser la transaction. Ceci permet ainsi à l'utilisateur de ne pas être lésé par une réalisation de la transaction en local plutôt que sur le marché global. Le terme de meilleur prix dépend bien entendu du type d'ordre passé. Si le serveur d'ordre reçoit un ordre de vente entrant à un prix par exemple de 17, et qu'il existe dans le carnet global un ordre d'achat à 20, alors la transaction pourra être réalisée à un prix de 20. Dans ce cas, il est donc nécessaire que l'ordre entrant à 17 soit transmis au marché. Au contraire, pour un ordre d'achat à 17, si il existe dans le carnet global un ordre de vente à 14, la transaction pourra être réalisée à 14 au niveau du marché. Aux fins de la présente demande, un meilleur prix au niveau de la bourse est donc un prix d'achat au niveau de la bourse strictement supérieur au prix d'une offre de vente entrante, ou un prix de vente au niveau de la bourse strictement inférieur au prix d'une offre d'achat entrante. Si aucun meilleur prix n'existe sur le marché global, et que le prix de l'ordre d'achat ou de vente entrant correspond à un prix d'un ordre opposé permettant de réaliser une transaction, on considère alors qu'il existe une opportunité de passage d'ordre interne au niveau du serveur 2 et de l'application 5. Il est donc maintenant possible d'exécuter l'ordre en interne mais en prenant garde de maintenir la synchronisation avec le carnet d'ordre global. Pour ce faire, on commence par annuler, au niveau de la bourse, l'ordre associé à l'opportunité de transaction (dans notre exemple l'ordre 1). En effet, si cette annulation n'est pas réalisée avant d'exécuter l'ordre en interne, il est possible qu'une transaction boursière soit déclenchée sur cet ordre qui n'est alors plus disponible sur le marché et par conséquent plus disponible au niveau du serveur d'ordre pour permettre une exécution locale. Dans le cas d'une quantité obtenue par l'agrégation de plusieurs ordres, on passe des ordres d'annulation sur l'ensemble des ordres concernés. Lorsque le serveur d'ordre 2 reçoit l'acquittement de l'annulation de l'ordre 1, on réalise alors la transaction en envoyant un avis de vente à l'émetteur de l'offre de vente, et un avis d'achat à l'émetteur de l'offre d'achat. L'exécution locale correspond à une émulation par le serveur d'ordre d'une exécution par la bourse. Le serveur d'ordre envoie les messages d'exécution d'ordres au niveau de l'application 5 de sorte à modifier les statuts des ordres exécutés. Le carnet d'ordre local de l'application est ainsi à tout instant synchronisé avec le serveur d'ordre. De la sorte, une transaction a été réalisée entre deux utilisateur du serveur 2, tout en tenant compte de la situation au niveau de la bourse, en particulier en testant si meilleur prix existait sur le marché et en annulant l'ordre avant son exécution en local. Suite à cette exécution, la situation au niveau du serveur d'ordre est donc la suivante: B 1000 11.90 (Ordre 5) et au niveau de la bourse pour le carnet d'ordre global: 300 12.00 3000 11.95 2000 11.90 1000 11.85 Selon un second exemple de mise en oeuvre de l'invention il est également possible de réaliser des transactions locales pour des correspondances multiples. On considère cette fois un carnet d'ordre local contenant par exemple deux ordres d'achat distinct correspondant à ordre de vente entrant. Le carnet d'ordre local comprend donc: B 500 12.00 (ordre 1) B 500 12.00 (ordre 4) B 1000 11.90 (ordre 5) Le carnet global contient par exemple: 1300 12.00 3000 11.95 2000 11.90 1000 11.85 On considère enfin un ordre de vente entrant: S 800 12.00 (ordre 2) Comme précédemment, on commence par tester si il 30 existe une possibilité de correspondance entre l'ordre entrant et le carnet local. Si une telle possibilité existe, on teste ensuite si il existe un meilleur prix sur le marché. Si un tel meilleur prix n'existe pas, il existe alors 5 une opportunité de passage d'ordre en interne au niveau du serveur 2 et du l'application 5. Dans ce cas, on annule l'ordre 1 et on réduit l'ordre 4 en l'annulant et en le remplaçant par un ordre correspondant au résidu de l'ordre de vente par rapport à l'ordre 1. Dans l'exemple mentionné, on crée donc un nouvel ordre d'achat B 200 12.00. Pour ce faire, on attend la confirmation de l'annulation de l'ordre 1 par la bourse et on exécute localement la transaction entre l'ordre 1 et la quantité correspondante de l'ordre 2. On envoie pour cela un avis d'achat de 500 unitéS à l'acheteur et un avis de vente de 500 unitéS au vendeur. Le carnet local est actualisé et devient donc: B 500 12.00 (ordre 4) B 1000 11.90 (ordre 5) Et le carnet global devient 800 12.00 3000 11.95 2000 11.90 1000 11.85 À la réception de l'acquittement de l'annulation de l'ordre 4, on crée alors un nouvel ordre correspondant à un ordre B 200 12.00. Cet ordre en envoyé à la bourse. Lorsque ce nouvel ordre est acquitté (ce qui correspond à la création d'un nouvel ordre 6 par rapport à l'ancien ordre 4), on le stocke au niveau du serveur d'ordre et de l'application de correspondance, et on envoie un avis de vente d'une quantité de 300 au vendeur, et un avis d'achat de 300 à l'acheteur ayant émis l'ordre 4. Le nouveau carnet d'ordre local est donc: B 200 12.00 (ordre 6) B 1000 11. 90 (Ordre 5) Et le carnet d'ordre global est: 500 12.00 3000 11.95 2000 11.90 1000 11.85 Ceci correspond bien à l'exécution de l'ordre de vente en local, réparti entre les deux ordres d'achats 1 et 4. De la même façon, si l'ordre entrant correspond par exemple à un ordre de vente S 2000 12.00, et que le carnet local comprend un ordre opposé d'achat à une quantité inférieure B 1000 12.00, on exécute localement partiellement l'ordre de vente en annulant l'ordre d'achat et en transmettant à la bourse un ordre de vente correspondant au résidu, ici S 1000 12.00. Dans tous les exemples de réalisation ci-dessus, il est important de tenir compte des évènements survenant au niveau de la bourse sur un ordre du carnet local, en particulier pour ne pas émuler une exécution locale sur un ordre qui n'existe plus sur le marché. Pour ce faire, si par exemple, avant de recevoir un ordre d'annulation dans le procédé selon l'invention, l'ordre pour lequel on demande l'annulation est exécuté, alors la bourse rejettera la demande d'annulation. Lorsque la bourse envoie l'avis d'exécution globale au niveau du serveur d'ordre, celui-ci transmet cette exécution à l'application 5 qui actualise alors le statut du carnet local, et, en cas d'exécution totale, recherche de nouvelles opportunités d'exécutions locales. Il est entendu que d'autres exemples de mises en oeuvre peuvent être implémentés par l'homme du métier à partir des 20 modes de réalisation décrits ci-dessus. REVENDICATIONS 1. Procédé pour l'exécution locale d'ordres de bourse dans une architecture comprenant un serveur d'ordre associé à une pluralité de clients apte à recevoir des ordres issus de ladite pluralité de clients et à les transmettre à la bourse, et à recevoir un carnet d'ordre global issu de la bourse, le procédé comprenant une première étape de constitution d'un carnet d'ordre local consistant à enregistrer au niveau d'une application de correspondance associée audit serveur d'ordre, un carnet d'ordres local issu de la pluralité de clients, et une étape d'exécution d'ordre local comprenant les étapes consistant à : - pour un des client locaux, générer un premier 15 ordre associé à un prix, à destination du serveur d'ordre; pour le serveur d'ordre, envoyer cet ordre à ladite application au niveau de ladite application de correspondance, une opportunité d'exécution locale dudit premier fonction du carnet d'ordre local et du carnet d'ordre global; exécuter l'ordre au niveau de ladite application de correspondance si ladite opportunité d'exécution locale existe. 2. Procédé pour l'exécution locale d'ordres de bourse selon la revendication 1, caractérisé en ce que ladite étape de détection comprend en outre les sous étapes consistant à : - identifier une correspondance de prix entre un second ordre appartenant au carnet d'ordre local et ledit premier ordre; détecter ordre en - tester si il existe une meilleure opportunité de prix pour passer ledit premier ordre au niveau dudit carnet d'ordre global. 3. Procédé pour l'exécution locale d'ordres de bourse selon la revendication 2, caractérisé en ce qu'il comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, un ordre d'annulation dudit second ordre. 4. Procédé pour l'exécution locale d'ordres de bourse selon la revendication 2, caractérisé en ce que l'étape d'exécution locale du premier ordre et du second ordre comprend une étape consistant, pour ledit serveur d'ordre, à émuler une exécution dudit premier ordre et dudit second ordre, et à transmettre cette exécution émulée au niveau de ladite application de sorte à modifier les statuts dudit premier ordre et dudit second ordre. 5. Procédé pour l'exécution locale d'ordres de bourse selon la revendication 2, caractérisé en ce que le second ordre est associé à une seconde quantité supérieure à la première quantité associée au premier ordre, et en ce qu'il comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, une commande de réduction de quantité dudit second ordre correspondant à la différence entre la seconde quantité et la première quantité. 6. Procédé pour l'exécution locale d'ordres de bourse selon la revendication 2, caractérisé en ce que le second ordre est associé à une seconde quantité inférieure à la première quantité associée au premier ordre, et en ce qu'il comprend en outre, en cas de détection d'une opportunité d'exécution locale dudit premier ordre, une étape consistant à envoyer au niveau de la bourse, un ordre correspondant à la différence entre la première quantité et la seconde quantité.