58 votes

Négociation à haute fréquence

Au cours des deux dernières semaines, j'ai lu de nombreux articles sur le trading à haute fréquence. Ils parlent tous de l'importance des ordinateurs et des logiciels dans ce domaine, mais comme ils sont tous écrits d'un point de vue financier, ils ne donnent aucun détail sur ce que font les logiciels.

Quelqu'un peut-il expliquer, du point de vue d'un programmeur, ce qu'est le trading à haute fréquence ? et pourquoi les ordinateurs/logiciels sont si importants dans ce domaine ?

60voto

Steve Points 4402

Pour développer ce que Paul a dit :

Le serveur qui exécute le HFT ou l'UHFT est presque toujours situé dans le centre de données de la bourse. Cela minimise la latence et permet également aux algos d'utiliser les ordres Flash (qui pourraient être interdits prochainement) pour avoir un premier aperçu du flux d'ordres avant que l'ordre ne soit diffusé sur le marché. De nombreux algos évaluent un ordre en quelques millisecondes seulement et c'est un jeu où les millisecondes comptent. Les groupes de négociation sont connus pour mettre tout en œuvre, y compris l'embauche de développeurs de noyau pour construire des composants de système d'exploitation personnalisés afin de mieux optimiser le temps entre le moment où un ordre arrive sur la carte réseau et celui où l'action qui en résulte est entreprise.

Il y a quelques grandes catégories de stratégies qui sont couramment utilisées aujourd'hui :

La première consiste à négocier devant de gros ordres en bloc. Pour reprendre l'exemple de Paul concernant l'achat d'un million d'actions d'IBM, les algo HFT rechercheront une pression d'achat. Les ordinateurs d'une entreprise sur différents marchés et dark pools devront partager leurs informations puisque l'ordre sera divisé et généralement exécuté sur plusieurs marchés et dark pools. Un algo HFT utilisera des modèles statistiques ou d'apprentissage automatique pour prédire l'ampleur de la pression d'achat et, s'il estime qu'elle est suffisante, il accumulera également des actions sur d'autres marchés et tentera de les vendre à un prix légèrement supérieur.

La seconde est la négociation de rabais de liquidité, où les bourses paieront les participants au marché pour ajouter de la liquidité. ( Voir les prix de Direct Edge ) Les actions qui sont achetées ou vendues ne peuvent être détenues que pendant une très courte période. L'objectif est simplement de percevoir le rabais et d'atteindre le seuil de rentabilité pour tout le reste.

Dans ces deux types de stratégies, l'idée est de gagner des centimes (ou des fractions) sur une transaction et de le faire plusieurs fois par jour.

Comme vous l'avez peut-être remarqué, il y a beaucoup d'emplois HFT disponibles et les métiers sont donc de plus en plus encombrés. Je vois cela comme un peu comme le stat arb du début des années 2000 et finalement le commerce ne sera pas très rentable puisque tant de joueurs essaient de le faire.

Quant à l'importance des logiciels, les millisecondes comptent. La latence est très importante et le code doit être serré, rapide et stable. Il n'est pas très rentable d'avoir un algo qui se plante et d'être pris avec des actions lorsque le marché se retourne contre vous. L'ingénierie pour ces exigences est nécessairement différente et requiert des compétences différentes. Le traitement de l'ensemble du carnet d'ordres en temps réel nécessite une certaine puissance et de bons algorithmes. Mais c'est amusant et intéressant.

20voto

Paul Hollingsworth Points 4257

Tout système HFT comporte deux parties :

  1. Négociation en temps réel à très faible latence - souscrivez à un carnet d'ordres et à des informations sur les prix en temps réel provenant de nombreuses sources différentes, exécutez des algorithmes calibrés conçus soit pour exécuter un ordre important avec un glissement minimal (c'est-à-dire que vous voulez acheter 1 million d'actions d'IBM d'ici la fin de la journée sans trop faire bouger le marché), soit pour essayer de gagner statistiquement de l'argent sur la base d'un arbitrage à court terme. Ce système doit également fournir de bons outils de gestion des risques et des positions pour permettre à un ou plusieurs opérateurs humains de surveiller et de contrôler efficacement ce que fait le système.

  2. Analyse pendant la nuit, la semaine, etc. de grandes quantités de "données tick" (informations sur les prix, l'heure et le carnet d'ordres, et données historiques sur l'activité de négociation précédente du système), afin d'optimiser et de "rechercher" les meilleurs algorithmes à exécuter en temps réel par la partie #1, c'est-à-dire "calibrer" et tester les algorithmes qui seront exécutés dans la partie #1.

La première nécessite une faible latence et un accès extrêmement bon aux marchés (c'est-à-dire une connexion réseau directe à la bourse avec un minimum de sauts). Cette partie doit généralement être écrite dans un langage non CG comme le C ou le C++ (un délai d'une demi-seconde pendant que le ramasseur de déchets arrête le monde pourrait être très coûteux). La seconde partie nécessite généralement une grille et beaucoup de bons logiciels de simulation et d'analyse statistique, des algorithmes d'IA, etc.

8voto

Shane Points 40885

J'ajouterais simplement que les applications les plus répandues dans ce type de commerce ont tendance à être des CEP (complex event processing). Parmi les exemples, citons Streambase, Apama et Aleri. D'autre part, pour traiter les quantités massives de données, les gens utilisent des bases de données à haut débit, telles que KDB, OneTick et Vhayu.

Si vous voulez comprendre le type de défis techniques, je vous suggère d'examiner d'abord ces fournisseurs. Leurs documents de marketing vous donneront une bonne idée des applications commerciales ainsi que des défis techniques.

7voto

À certains moments (par exemple lors de l'expiration d'un contrat à terme), il est nécessaire d'effectuer des milliers de transactions par minute, ce que l'homme ne peut évidemment pas faire seul. Ce BTW est un moment très stressant pour le programmeur, car si quelque chose ne va pas, il n'y a presque aucune chance de récupération - les programmeurs ont tendance à regarder leurs fichiers de logs défiler avec le cœur quelque peu dans la bouche.

3voto

sharptooth Points 93379

Vous devez suivre les prix, décider rapidement de ce qui monte et descend et acheter et vendre en conséquence. Étant donné qu'il y a beaucoup de positions différentes négociées, plus le logiciel que vous utilisez pour cette analyse et la réalisation des transactions est performant, plus vous pouvez potentiellement gagner de l'argent.

Meilleur signifie que les données sont fréquemment mises à jour, que les tendances intéressantes sont mises en évidence de manière à ce que vous puissiez y réagir rapidement et que les opérations les plus fréquentes sont faciles à utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X