Bataille des robots: comment les teneurs de marché se battent-ils sur les échanges cryptographiques

Dans les mois entre décembre 2017 et mars 2018, j'ai construit un bot qui a exécuté environ 50 millions de dollars de transactions de tenue de marché de crypto-monnaie. C’est l’histoire de la façon dont j’ai commencé à créer du marché, la théorie derrière les algorithmes du bot et la concurrence qui s’est développée entre les market makers.

FOMO

Nous sommes en novembre 2017 - Le prix du Bitcoin grimpe rapidement vers la barre des 10000 $. Sa hausse exponentielle des prix le pousse chaque semaine dans la conscience grand public, attirant encore plus d'investisseurs, poussant le prix plus haut.

Pendant ce temps, je pars en vacances avec deux amis. Ces deux amis avaient investi des montants non négligeables de leur propre argent dans Bitcoin et profitaient de la hausse des prix. Étant le seul des trois à n'avoir même pas envisagé d'investir auparavant, j'ai l'impression de passer à côté.

Lorsque je rentre chez moi après un voyage, l'une des premières choses que je fais est de trouver un échange de crypto-monnaie en ligne et de déposer 500 $ sur un compte. Voulant surfer sur la vague, mon plan est simple: acheter 500 $ de Bitcoin et augmenter mon investissement si je vois des retours.

Se propage

Avant d'appuyer sur la détente de mon investissement de 500 $, je remarque quelque chose d'étrange; l’échange sur lequel je tradais a un «spread» important. Pour comprendre ce qu'est un écart et pourquoi il est important, nous devons examiner quelques notions de base sur le fonctionnement d'un échange.

Généralement, lorsque nous pensons à un actif négocié en bourse, comme une action, nous le considérons comme ayant un prix fixe auquel nous pouvons acheter ou vendre. Par exemple, nous pourrions penser à une action Apple (AAPL) ayant un prix de 100 $. En réalité, il n’existe pas un seul prix, mais plutôt deux prix différents:

  • Le prix de l'offre. Il s'agit du montant maximum que quiconque en bourse est prêt à payer pour un actif.
  • Le prix demandé. Il s'agit du montant minimum pour lequel quiconque en bourse est prêt à vendre l'actif.

La plupart des acheteurs sont prêts à payer moins que les vendeurs ne veulent vendre, et donc le prix acheteur d'un actif sera toujours inférieur au prix demandé.

Dans le cas de l'action Apple, ces deux prix sont susceptibles d'être très proches l'un de l'autre. Le prix offert peut être de 99,99 $ et le prix demandé de 100,01 $. La différence entre ces deux nombres (0,02 $) est ce que nous appelons l'écart.

L'écart est faible sur un titre stable et populaire comme Apple. En effet, il y a toujours beaucoup de gens prêts à acheter les actions, ce qui fait monter le prix acheteur, et beaucoup prêts à vendre, ce qui fait baisser le prix demandé. La concurrence entre acheteurs et vendeurs pousse l'offre et demande des prix proches les uns des autres.

Quand j'ai commencé à regarder les échanges Bitcoin, les écarts étaient beaucoup plus importants, souvent jusqu'à 100 $. Le bitcoin s'échangeait à environ 10000 $ pendant cette période, ce qui signifie que son écart pourrait atteindre jusqu'à 1% de sa valeur totale (par rapport à seulement 0,02% dans l'exemple d'Apple.

La taille de l'écart sur Bitcoin était une conséquence du chaos du marché qui émergeait en décembre 2017. Les investisseurs de détail - vous, moi, la personne moyenne dans la rue - envahissaient le marché. En conséquence, les prix ont été si volatils que les écarts n'ont jamais pu se stabiliser.

Les écarts importants peuvent sembler une mauvaise chose, et dans une certaine mesure ils le sont, mais ils offrent également une opportunité de profit.

Supposons que Bitcoin ait un prix de vente de 9 900 $ et un prix de vente de 10 000 $, ce qui lui donne un écart de 100 $. Si vous pouvez acheter 1 bitcoin pour 9 900 $, puis le vendre immédiatement après à 10 000 $, vous venez de réaliser un profit de 100 $.

Fabricants et preneurs

Si vous pensez que cela semble trop beau pour être vrai, alors vous avez raison. Une raison pour laquelle vous pourriez être sceptique à propos de ce qui précède vient de la question: qu'en est-il des frais de change? Pour voir comment les frais s'inscrivent dans cela, nous devons prendre un autre léger détour dans le fonctionnement des échanges.

Imaginons que vous souhaitiez acheter du bitcoin, qui se négocie avec un prix acheteur de 9 900 $ et un prix demandé de 10 000 $. Il existe généralement deux façons de procéder:

Tout d'abord, vous pouvez soumettre une commande de fabricant. C'est ici que vous spécifiez un prix n'importe où jusqu'au prix demandé - donc entre 0 $ et 10 000 $ - et une quantité que vous êtes prêt à acheter. Votre commande reste en bourse jusqu'à ce que quelqu'un vienne et décide de vous accepter. Cela peut se produire des millisecondes ou des jours plus tard, selon le montant de votre prix et le volume de l'échange.

Alternativement, vous pouvez soumettre un ordre de preneur. C'est exactement le contraire d'une commande de fabricant et vous permettra d'acheter instantanément du bitcoin. Le hic, cependant, est que votre commande de preneur correspond au prix le plus bas de toutes les commandes de fabricant de vente. Naturellement, ce sera au prix demandé, car c'est le prix le plus bas que quiconque souhaite vendre.

Avant d'aller de l'avant, il y a quelques points importants à noter à propos des commandes de fabricant et de preneur:

  1. Chaque fois que le bitcoin est vendu ou acheté, il y aura un fabricant et un ordre de preneur impliqués. Vous ne pouvez pas avoir un échange avec deux fabricants ou deux preneurs.
  2. Si vous décidez de suivre la voie du fabricant, vous devrez proposer un prix égal ou supérieur au prix de l'offre afin d'avoir de bonnes chances qu'un vendeur prenne votre commande.
  3. Enfin, les ordres des fabricants ajoutent ce que nous appelons de la liquidité à un marché; ils offrent plus d'options aux autres sur la bourse pour acheter et vendre. Leur nom vient du fait qu'ils font de la liquidité. Contrairement à cela, les ordres de preneur retirent des liquidités du marché, car ils retirent les ordres de fabricant de la bourse.

Ce dernier point est crucial, car il permet d'expliquer la structure tarifaire de la plupart des bourses. Parce que les bourses veulent maximiser la liquidité, elles facturent généralement des frais plus élevés sur les ordres de preneur que sur les ordres de fabricant. Certains échanges, y compris celui que j'utilisais, ne facturent que des frais de preneur: il y a 0% de frais sur les commandes du fabricant.

Revenons à notre exemple précédent. Si nous sommes en mesure d'acheter du Bitcoin à 9 900 $ et de vendre à 10 000 $ en utilisant uniquement les commandes des fabricants, nous avons 100 $ de profit pur pour chaque Bitcoin que nous traitons.

La nécessité d'utiliser des commandes de fabricant n'est pas seulement pour éviter des frais, mais vient également du fait que si nous achetions en utilisant une commande de preneur, nous devions payer le prix demandé - 10 000 $. Si nous vendions ensuite via une commande preneur, nous devions vendre au prix de l'offre - 9 900 $ - nous perdant 100 $.

Ainsi, en utilisant les ordres des fabricants, nous pouvons à peu près garantir les bénéfices en achetant au prix acheteur et en vendant au prix demandé. Il y a cependant un dernier problème, qui a présenté le plus grand défi à la création d'un algorithme qui pourrait le faire par programme.

Comme nous l'avons évoqué plus tôt, un ordre de fabricant a besoin d'un ordre de preneur pour arriver et le «prendre» avant qu'un échange puisse avoir lieu. Les commandes à emporter «prendront» toujours le meilleur prix. Si vous souhaitez acheter Bitcoin via une commande fabricant, pour que les commandes preneurs correspondent à votre commande, vous devrez enchérir juste au-dessus du prix de l'offre. Le montant supérieur au prix offert que vous proposez n'a pas d'importance, il peut être d'un montant aussi petit qu'un centime, par exemple 9 900,01 $.

La première étape de la rédaction d'un bot de tenue de marché est donc de pouvoir placer des ordres d'achat (fabricant) juste au-dessus du cours acheteur actuel. Cela nécessite une demande d'API pour vérifier le prix de l'enchère et une autre pour soumettre votre commande.

En théorie, il est bon de simplement enchérir d'un cent au-dessus du prix de l'offre. Dans la pratique, cependant, entre la vérification du prix offert et la soumission de votre commande, le prix offert changera souvent. Pour vous assurer que votre commande se situe plus haut que tous les autres ordres d'achat, et fixe ainsi le nouveau prix d'enchère, il est souvent conseillé d'enchérir de 5 à 10 ¢ au-dessus du prix d'enchère actuel.

Cela garantit que, si un ordre de vente (preneur) arrive, il sera comparé à notre ordre d'achat (fabricant), et nous aurons acheté autant de Bitcoin sans rien perdre en frais.

Nous pouvons alors faire exactement le contraire de ce que nous venons de faire, du côté de la vente. Nous vérifions le prix demandé actuel et enchérissons de plusieurs cents en dessous. Cela garantit que si un ordre d'achat (preneur) arrive, il est comparé à notre ordre de vente (fabricant).

Nous venons de réaliser un bénéfice net à peu près égal à l'écart (la différence entre les cours acheteur et vendeur) multiplié par la quantité de bitcoins que nous avons pu échanger.

Concurrence

Si vous pensez toujours que c'est trop facile pour être vrai, alors vous avez toujours raison. Chaque fois qu'il existe une opportunité évidente de profit, les commerçants s'entassent, ce qui crée de la concurrence. L'exemple le plus évident de cela peut être vu en examinant la concurrence créée par les teneurs de marché qui se bousculent pour fixer le prix de l'offre. (N'oubliez pas, vous devez avoir votre ordre d'achat au prix de l'offre pour exécuter une transaction, la prochaine fois que la commande d'un vendeur entre en jeu)

En décembre 2017, la concurrence était si intense que le prix de l'offre changerait généralement plusieurs fois par seconde. Souvent, cela n'augmentait que d'un ou deux cents, car les commerçants se battaient entre eux pour maximiser le temps pendant lequel ils fixaient le prix de l'offre, tout en souhaitant également offrir un prix aussi bas que possible.

Mon bot s'est initialement mis à vérifier le prix de l'offre et à enchérir 1 ¢ de plus. Aussi sensé que cela paraisse à première vue, j'ai trouvé qu'au moment où ma commande était passée, je serais souvent plusieurs cents en dessous du prix de l'offre (en constante évolution).

Pour contourner ce problème et pour m'assurer que le plus grand nombre possible de mes commandes dépasseraient le prix d'offre actuel, j'ai pris des mesures de la façon dont le prix d'offre changerait généralement toutes les 100 ms. Cela a permis à mon bot d'offrir un prix suffisamment supérieur au prix de l'offre (~ 5 ¢ plus élevé), de sorte que les autres commerçants ne battraient pas mon prix pendant le traitement de ma commande.

J'ai également commencé à réfléchir à la façon dont la taille de l'écart affecterait le montant que j'étais prêt à offrir par rapport au cours acheteur actuel. Comme nous l'avons vu précédemment, le profit de tout commerce est directement proportionnel à la taille de l'écart. Il était donc encore plus important de battre le cours acheteur lorsque l'écart était important. Pour cette raison, j'ai écrit une formule qui variait de beaucoup plus que le prix offert que j'offrirais, en fonction de la taille de l'écart également.

Jusqu'à présent, j'ai surtout parlé de l'aspect d'achat de la tenue de marché, mais la vente fonctionne exactement de la même manière. Dès que vous avez acheté votre Bitcoin, vous devez le décharger au prix demandé (plus élevé). Il y aura de la concurrence sur le prix demandé, tout comme il y en avait sur le prix de l'offre, et vous devez donc réduire vos concurrents en offrant un prix de vente inférieur de plusieurs cents au prix actuel.

À la fin de 2017 / début 2018, il y avait généralement beaucoup moins de concurrence sur le prix demandé. J'ai supposé à l'époque que cela était dû au fait qu'il y avait plus de demande que d'offre de Bitcoin, expliquant pourquoi il y avait plus de concurrence entre les acheteurs que les vendeurs.

Manipulation du marché

La manipulation du marché fait référence à une variété de tactiques malveillantes que les commerçants utilisent sur les marchés afin d'obtenir un avantage injuste. En tant que marché non réglementé, les échanges de crypto-monnaie étaient (et sont toujours) mûrs avec une manipulation du marché. La forme de manipulation la plus fréquente est ce que l'on appelle l'usurpation d'identité, l'acte de passer des commandes simplement pour modifier l'apparence des conditions du marché.

Pour donner un exemple de la façon dont cela fonctionne, considérons l'exemple précédent avec le prix de l'offre de 9 900 $ et le prix de demande de 10 000 $. Notre spread ici est de 100 $, ce qui représente une bonne opportunité de commercialisation. Cependant, si quelqu'un arrive et passe une commande d'achat au prix de 9 999,99 $, l'écart se réduit à seulement 1 ¢. Avec un spread si petit, il semble impossible de tirer profit de la tenue de marché et toute activité s'arrête.

Un acheteur qui passe une commande de fabricant 1 ¢ en dessous du prix demandé n'est pas en soi une manipulation du marché. En fait, si votre échange ne facture pas de frais de fabricant, c'est un moyen rapide et efficace d'acheter Bitcoin. Le problème était cependant que chaque fois que ces ordres d'achat apparaissaient, ils étaient généralement pour le plus petit montant possible; 0,00001 Bitcoin, d'une valeur d'environ 10 ¢.

La raison pour laquelle un autre teneur de marché pourrait passer un ordre d'achat aussi petit, juste en dessous du prix demandé, est le génie. Si un autre teneur de marché vient d'acheter du Bitcoin au prix offert, il est alors incité à le vendre au prix demandé le plus tôt possible. Plus il leur faut de temps pour vendre leur Bitcoin, plus le risque de fluctuation du prix demandé (et donc de l'écart) est élevé et de la variation de leurs bénéfices.

Bien sûr, vous pourriez dire qu'il y a autant de chances que le prix augmente pendant cette période qu'il y a de baisse. Un market maker ne se soucie pas de cela cependant; leur travail n'est pas de spéculer sur le prix, c'est d'entrer et de sortir le plus rapidement possible.

Afin d'empêcher la baisse des prix et d'empêcher la concurrence du côté de la vente de faire baisser le prix demandé, le teneur de marché place son ordre de vente juste en dessous du prix demandé et insère un ordre d'achat (`` usurpé '') juste en dessous du nouveau demandez le prix. Cette dernière commande aura une taille de commande aussi petite que possible (0,00001 Bitcoin).

Cela a deux effets:

  1. Aucun autre vendeur ne peut battre le prix demandé de ce vendeur. Si vous allez 1 ¢ en dessous du prix demandé, vous êtes au prix de l'offre, et les échanges n'autorisent pas les vendeurs à passer des commandes de fabricant au niveau ou en dessous du prix de l'offre.
  2. Il réduit l'écart à seulement 1 ¢. Lorsqu'un bot faisant du marché voit un écart aussi faible, il s'éteindra probablement temporairement, car il n'y a aucun profit à faire.

Ce deuxième point est crucial, car il explique pourquoi pratiquement tous les bots market making se désactivent lorsqu'un ordre d'achat usurpé se situe juste en dessous du prix demandé. En réalité, même si l'écart ne semble être que de 1 ¢, il reste encore des opportunités à saisir.

Supposons que la prochaine commande du vendeur soit valable pour 1 Bitcoin. Le premier 0,00001 Bitcoin sera vendu au teneur de marché avec l'ordre usurpé, retirant cet ordre de la bourse. Le prochain 0.99999 Bitcoin sera vendu à la commande au nouveau prix de l'offre, la commande la plus chère en dessous de la commande falsifiée.

L'une des plus grandes améliorations que j'ai apportées à mon bot était de lui permettre d'ignorer les ordres falsifiés dans le calcul de l'écart. Même si le prix demandé pourrait être seulement 1 ¢ plus élevé que le prix offert, mon bot regarderait au-delà des commandes falsifiées, pour trouver quel serait l'écart si ce n'était pour les commandes falsifiées (qui pourraient toujours être de 50 $ à 100 $). Si cet écart était suffisamment important pour présenter une opportunité, il serait en concurrence pour passer la commande d'achat au prix le plus élevé après toute commande falsifiée. Lorsque les commandes des vendeurs étaient arrivées, cela signifiait que quelques cents de Bitcoin seraient vendus aux spoofers, puis le reste à moi.

2018

Les premiers mois de 2018 ont été mouvementés. Après la montée de Bitcoin à 20 000 $ en décembre, les roues avaient commencé à se détacher et le prix baissait rapidement.

Bien que mauvais pour les investisseurs, cela a fourni d'énormes opportunités aux teneurs de marché. Les niveaux élevés de volume tant du côté de l'achat que de la vente (ce qui signifiait davantage de commandes de prises de commandes) augmentaient massivement le nombre de transactions par jour qu'un teneur de marché efficace pouvait exécuter.

Cette période d'opportunité a cependant été relativement courte. Après la frénésie de janvier et février, les volumes ont commencé à se tarir, ce qui signifie moins d'opportunités de profit. Malgré la baisse des volumes d'échanges, le nombre de teneurs de marché n'a cessé d'augmenter, alors que de nouveaux robots entraient en bourse.

Plus de teneurs de marché sur les bourses ont conduit à une plus grande concurrence sur les cours acheteur et vendeur, ce qui a réduit les écarts. Les concurrents supplémentaires signifiaient également que les commandes seraient généralement au prix de l'offre pour une période plus courte, car il y avait plus de concurrents prêts à vous surenchérir dès que votre commande aurait été soumise.

En raison de l'intensification de la concurrence et de la diminution des opportunités de profit, j'ai désactivé tous mes bots d'ici mars, et je ne les ai pas réactivés depuis. L'augmentation des frais de création sur de nombreux échanges m'a dissuadé de revenir dans le jeu de création de marché, mais il y a probablement encore des opportunités pour quiconque est assez intelligent pour choisir ses moments.

Dans l'ensemble, j'ai échangé environ 50 millions de dollars de Bitcoin entre décembre 2017 et mars 2018, avec un retour sur investissement de 20,2.