Thursday, 12 January 2017

Systèmes Commerciaux Hft

Conception et gestion des procédés de négociation à haute fréquence Conception et gestion des processus de négociation à haute fréquence Conseiller: Roy E. Welsch. Département: Conception et gestion du système. Éditeur: Massachusetts Institute of Technology Date d'émission: 2009 Les entreprises de négoce de nos jours sont fortement tributaires de l'exploration de données, la modélisation informatique et le développement de logiciels. Les analystes financiers exécutent de nombreuses tâches similaires à celles des logiciels et des industries manufacturières. Cependant, l'industrie des finances n'a pas encore adopté pleinement les cadres de conception et les approches de gestion des procédés qui ont été couronnés de succès dans les industries des logiciels et de la fabrication. De nombreuses méthodologies traditionnelles pour la conception de produits, le contrôle de la qualité, l'innovation systématique et l'amélioration continue dans les disciplines d'ingénierie peuvent être appliquées dans le domaine des finances. Cette thèse montre comment les connaissances acquises dans les disciplines d'ingénierie peuvent améliorer la conception et la gestion des processus des systèmes de négociation haute fréquence. Les systèmes de négociation à haute fréquence sont basés sur le calcul. Ces systèmes sont des systèmes logiciels automatiques ou semi-automatiques qui sont intrinsèquement complexes et nécessitent un degré élevé de précision de conception. La conception d'un système de négociation à haute fréquence relie plusieurs domaines, y compris la finance quantitative, la conception de systèmes et l'ingénierie logicielle. Dans le secteur de la finance, où les théories mathématiques et les modèles commerciaux sont relativement bien étudiés, la capacité de mettre en œuvre ces modèles dans les pratiques commerciales réelles est l'un des éléments clés de la compétitivité des entreprises d'investissement. (Suite) Cette thèse fournit une étude détaillée composée de la conception de systèmes de négociation à haute fréquence, de la modélisation et des principes du système et de la gestion des processus Pour le développement de systèmes. Un accent particulier est mis sur le backtesting et l'optimisation, qui sont considérés comme les éléments les plus importants dans la construction d'un système commercial. Cette recherche construit des modèles d'ingénierie de système qui guident le processus de développement. Elle utilise également des systèmes de négociation expérimentale pour vérifier et valider les principes traités dans cette thèse. Enfin, cette thèse conclut que les principes et les cadres d'ingénierie des systèmes peuvent être la clé du succès de la mise en œuvre de systèmes de négociation à haute fréquence ou d'investissements quantitatifs. Thesis (S. M.) - Institut de technologie du Massachusetts, programme de conception et de gestion des systèmes, 2009. Catalogué à partir de la version PDF de la thèse. Comprend des références bibliographiques (p 78-79). Mots-clés: Programme de conception et de gestion des systèmes. My AccountPROVEN TRACK RECORD GTS opère à l'intersection des marchés des capitaux et des technologies de pointe. Nos innovations apportent une meilleure découverte des prix, l'exécution du commerce et la transparence aux investisseurs et une tarification efficace sur le marché. Faits saillants GTS trades environ 3-5 du marché des actions de trésorerie des États-Unis GTS trades plus de 10.000 instruments différents dans le monde GTS exécute des millions de métiers distincts par jour GTS est le plus grand market maker de la Bourse de New York (11,7 milliards de capitalisation boursière) NOS GENS SONT PARAMOUNT GTS Est une entreprise axée sur les gens. Nos employés viennent de milieux divers, mais ils partagent un esprit commun: la loyauté, la curiosité inquiète, l'adhésion implacable aux normes les plus élevées, et l'engagement à la vision de companyrsquos visionmdashas ainsi que d'un peu d'une série concurrentielle. Découvrez comment vous pouvez rejoindre notre équipe. Ari Rubenstein est cofondateur et chef de la direction de Global Trading Systems (GTS), qui dirige la gestion quotidienne de l'entreprise. David Lieberman est cofondateur et chef de l'exploitation de Global Trading Systems. Steve Reich est le chef de FX et des solutions de liquidité de matières premières chez GTS Securities. Ryan Sheftel est le chef de file global du revenu fixe chez Global Trading Systems. Giovanni Pillitteri est responsable mondial des opérations de change à GTS. Il est responsable de diriger et d'étendre la portée globale de l'activité de change de GTSrsquos. Michael Katz est le chef des situations spéciales chez les systèmes de commerce mondial. Patrick Murphy est responsable des services de négociation et de listage de la Bourse de New York à GTS. John Merrell est le directeur général, responsable mondial des services corporatifs. Rama Subramaniam est responsable de Systematic Asset Management. GTS et ses dirigeants sont souvent cités en tant qu'experts de l'industrie dans les médias, et notre cabinet s'engage à répondre aux dernières tendances du commerce électronique. Cela reflète notre mission d'être un participant de classe mondiale sur les marchés financiers. Global Trading Systems, l'un des quatre sociétés de négoce à haute fréquence qui gère presque toutes les transactions sur le marché de la NYSE, fait un jeu pour les clients corporatifs. Lire la suite raquo Bloomberg Etats-Unis discute avec Ari Rubenstein, PDG de Global Trading Systems Lire la suite raquo GTS a annoncé aujourd'hui que sa filiale, GTS Securities LLC, prévoit de devenir un Market Maker désigné (DMM) à la Bourse de New York (NYSE), par Acquisition des activités commerciales de Barclays PLC DMM. Lire la suite raquo Le Wall Street Journal Une surveillance accrue rendra les transactions à haute fréquence plus sûres et plus sûres, augmentant ainsi la confiance et la participation des investisseurs. Lire la suite raquo Le Wall Street Journal Certains des plus grands négociants et investisseurs propriétaires américains sont en train de tester les eaux pour un plus grand mouvement dans bitcoin, donnant un coup de pouce potentiel à l'industrie en quasi-monnaie virtuelle. Lire la suite raquoThis poste détaille ce que j'ai fait pour faire env. 500k de la négociation à haute fréquence de 2009 à 2010. Depuis que je négotais complètement indépendamment et je ne suis plus en cours d'exécution de mon programme Irsquom heureux de tout dire. Ma négociation était principalement dans Russel 2000 et contrats à terme DAX. La clé de mon succès, je crois, n'était pas dans une équation financière sophistiquée, mais plutôt dans la conception de l'algorithme global qui a lié ensemble de nombreux composants simples et a utilisé l'apprentissage machine pour optimiser pour une rentabilité maximale. Vous n'avez pas besoin de connaître une terminologie sophistiquée ici parce que lorsque j'ai configuré mon programme, tout était basé sur l'intuition. (Andrew Ngrsquos apprentissage incroyable machine cours n'était pas encore disponible - btw si vous cliquez sur ce lien yoursquoll être pris à mon projet actuel: CourseTalk, un site d'examen pour MOOCs) Tout d'abord, je veux juste démontrer que mon succès n'était pas simplement le résultat de la chance. Mon programme faisait 1000-4000 métiers par jour (demi-long, demi-court) et jamais obtenu dans des positions de plus de quelques contrats à la fois. Cela signifiait que la chance au hasard de tout commerce en particulier moyennée assez vite. Le résultat a été que je n'ai jamais perdu plus de 2000 en une journée et n'a jamais eu un mois de perdre: (EDIT. Ces chiffres sont après le paiement des commissions) Et Herersquos un graphique pour vous donner un sens de la variation quotidienne. Notez que cela exclut les 7 derniers mois parce que - comme les chiffres ont cessé de monter - j'ai perdu ma motivation pour les entrer. Mon fond commercial Avant de mettre en place mon programme de négociation automatisé Irsquod avait 2 ans d'expérience en tant que commerçant jour ldquomanualrdquo. C'était en 2001 - c'était les premiers jours du commerce électronique et il y avait des occasions pour ldquoscalpersrdquo de faire bon argent. Je peux seulement décrire ce que je faisais comme apparenté à jouer un jeu vidéo jeu avec un bord supposé. Être réussi signifie être rapide, être discipliné, et avoir une bonne intuition des capacités de reconnaissance des modèles. J'ai été en mesure de faire autour de 250k, rembourser mes prêts aux étudiants et de l'argent reste plus. Win Au cours des cinq prochaines années, je lancerais deux startups, reprenant quelques compétences en programmation le long du chemin. Il wouldnrsquot être jusqu'à la fin de 2008 que je voudrais revenir dans le commerce. Avec l'argent courir faible de la vente de mon premier démarrage, le commerce a offert espoirs de quelques espèces rapides, alors que j'ai compris mon prochain déménagement. En 2008 j'étais ldquomanuallyrdquo day trading futures utilisant un logiciel appelé T4. Irsquod a voulu quelques touches d'accès personnalisées d'entrée de commande, donc après avoir découvert T4 avait une API, j'ai pris le défi d'apprendre C (le langage de programmation requis pour employer l'API) et suis allé de l'avant et ai construit moi-même quelques raccourcis. Après avoir obtenu mes pieds mouillés avec l'API j'ai bientôt eu des aspirations plus grandes: Je voulais enseigner à l'ordinateur pour le commerce pour moi. L'API fournissait à la fois un flux de données de marché et un moyen facile d'envoyer des commandes à l'échange - tout ce que j'avais à faire était de créer la logique au milieu. Ci-dessous est une capture d'écran d'une fenêtre de négociation T4. Ce qui était cool, c'est que quand j'ai obtenu mon programme de travail, j'ai pu regarder le commerce informatique sur cette même interface exacte. Regarder les ordres réels entrant et sortant (par eux-mêmes avec mon argent réel) était à la fois passionnant et effrayant. La conception de mon algorithme Dès le début mon objectif était de mettre en place un système tel que je pouvais être raisonnablement confiant Irsquod faire de l'argent avant de faire jamais des métiers vivants. Pour ce faire, j'ai eu besoin de construire un cadre de simulation de négociation qui serait - aussi précisément que possible - simuler la négociation en direct. Alors que le commerce en mode live nécessitait le traitement des mises à jour du marché diffusées via l'API, le mode de simulation nécessitait la lecture des mises à jour du marché à partir d'un fichier de données. Pour collecter ces données, j'ai configuré la première version de mon programme pour me connecter simplement à l'API et enregistrer les mises à jour du marché avec des horodatages. J'ai fini par utiliser 4 semaines de données récentes sur le marché pour former et tester mon système. Avec un cadre de base en place, j'ai toujours eu la tâche de trouver comment faire un système commercial rentable. Comme il s'avère mon algorithme se décomposerait en deux composantes distinctes, que Irsquoll explorer à son tour: prédire les mouvements de prix et de faire des métiers rentables prédire les mouvements de prix Peut-être une composante évidente de tout système commercial est de pouvoir prédire où les prix se déplacer. Et le mien ne faisait pas exception. J'ai défini le prix actuel comme la moyenne de l'offre intérieure et offre intérieure et j'ai fixé l'objectif de prédire où le prix serait dans les 10 prochaines secondes. Mon algorithme aurait besoin de venir avec cette prédiction moment par moment tout au long de la journée de négociation. Création d'indicateurs d'optimisation d'ampli J'ai créé une poignée d'indicateurs qui se sont révélés avoir une capacité significative à prédire les mouvements de prix à court terme. Chaque indicateur produit un nombre qui est soit positif, soit négatif. Un indicateur a été utile si le plus souvent un nombre positif correspondait avec le marché en hausse et un nombre négatif correspondait à la baisse du marché. Mon système m'a permis de déterminer rapidement combien la capacité prédictive d'un indicateur avait donc j'ai pu expérimenter avec beaucoup d'indicateurs différents pour voir ce qui a fonctionné. Beaucoup d'indicateurs ont des variables dans les formules qui les ont produites et j'ai pu trouver les valeurs optimales pour ces variables en faisant des comparaisons côte à côte des résultats obtenus avec des valeurs variables. Les indicateurs les plus utiles ont été relativement simples et ont été basés sur des événements récents sur le marché sur lequel j'ai été négocié ainsi que sur les marchés des titres corrélés. Réaliser des prévisions exactes des prix Les indicateurs qui prédisaient simplement un mouvement de hausse ou de baisse des prix n'étaient pas suffisants. J'avais besoin de savoir exactement combien le mouvement des prix a été prédit par chaque valeur possible de chaque indicateur. J'avais besoin d'une formule qui convertirait une valeur d'indicateur en une prédiction de prix. Pour ce faire, j'ai suivi les mouvements de prix prédits dans 50 seaux qui dépendaient de la portée que la valeur de l'indicateur a diminué po Cela a produit des prédictions uniques pour chaque seau que j'ai alors pu graphe dans Excel. Comme vous pouvez le voir le changement de prix attendu augmente à mesure que la valeur de l'indicateur augmente. Sur la base d'un graphique comme celui-ci j'ai pu faire une formule pour adapter la courbe. Au début j'ai fait ce ldquocurve fittingrdquo manuellement mais j'ai bientôt écrit un certain code pour automatiser ce processus. Notez que toutes les courbes indicatrices n'avaient pas la même forme. Notez également que les seaux ont été logarithmiquement distribués de façon à répartir uniformément les points de données. Enfin, notez que les valeurs des indicateurs négatifs (et leurs prévisions de prix à la baisse correspondantes) ont été retournées et combinées avec les valeurs positives. (Mon algorithme traité vers le haut et vers le bas exactement la même.) Combinaison d'indicateurs pour une seule prédiction Une chose importante à considérer était que chaque indicateur n'était pas entièrement indépendant. Je ne pouvais simplement simplement ajouter toutes les prédictions que chaque indicateur fait individuellement. La clé était de déterminer la valeur prédictive supplémentaire que chaque indicateur avait au-delà de ce qui était déjà prévu. Ce n'était pas difficile à mettre en œuvre, mais cela signifiait que si j'étais ldquocurve fittingrdquo plusieurs indicateurs en même temps, j'ai dû faire attention en changeant une aurait effet sur les prédictions d'un autre. Afin de ldquocurve fitrdquo tous les indicateurs en même temps j'ai configuré l'optimiseur à l'étape seulement 30 de la voie vers les nouvelles courbes de prédiction à chaque passe. Avec ce saut 30, j'ai découvert que les courbes de prédiction se stabiliseraient en quelques passages. Avec chaque indicateur maintenant nous donnant itrsquos prédiction des prix supplémentaires, je pourrais simplement les ajouter pour produire une seule prédiction de l'endroit où le marché serait en 10 secondes. Pourquoi prédire les prix n'est pas suffisant Vous pourriez penser qu'avec ce bord sur le marché, j'étais doré. Mais vous devez garder à l'esprit que le marché est composé d'offres et offre - itrsquos pas seulement un prix du marché. Le succès dans le commerce à haute fréquence se résume à obtenir de bons prix et itrsquos pas si facile. Les facteurs suivants rendent la création d'un système rentable difficile: avec chaque commerce, j'ai dû payer des commissions à la fois mon courtier et l'échange. La propagation (différence entre la plus haute offre et l'offre la plus basse) signifiait que si je devais simplement acheter et vendre au hasard Irsquod perdre une tonne d'argent. La plupart du volume du marché était d'autres bots qui n'exécuteraient un commerce avec moi que s'ils pensaient avoir un avantage statistique. Voir une offre ne garantissait pas que je pouvais l'acheter. Au moment où mon ordre d'achat est arrivé à l'échange, il était très possible que cette offre aurait été annulée. En tant que petit joueur de marché, il n'y avait aucun moyen que je pouvais rivaliser sur la vitesse seule. Construire une simulation commerciale complète Ainsi, j'ai eu un cadre qui m'a permis de backtest et d'optimiser les indicateurs. Mais je devais aller au-delà de cela - j'avais besoin d'un cadre qui me permettrait de backtest et d'optimiser un système commercial complet où je envoyais des ordres et obtenir des positions. Dans ce cas, Irsquod optimise pour la PampL totale et dans une certaine mesure la PampL moyenne par transaction. Ce serait plus délicat et en quelque sorte impossible de modéliser exactement, mais j'ai fait de mon mieux. Voici quelques-unes des questions que j'ai eu à traiter: Quand une commande a été envoyée au marché en simulation, j'ai dû modéliser le délai. Le fait que mon système ait vu une offre ne signifiait pas qu'elle pourrait l'acheter immédiatement. Le système enverrait l'ordre, attendre environ 20 millisecondes et alors seulement si l'offre était encore là il a été considéré comme un commerce exécuté. Cela était inexact parce que le temps de latence réel était incohérent et non déclaré. Quand j'ai placé des offres ou des offres, j'ai dû regarder le flux d'exécution commerciale (fourni par l'API) et les utiliser pour mesurer quand ma commande aurait été exécutée contre. Pour ce faire, j'ai dû suivre la position de ma commande dans la file d'attente. (Itrsquos un système first-in first-out.) Encore une fois, je couldnrsquot faire parfaitement, mais j'ai fait une meilleure approximation. Pour affiner ma simulation d'exécution de commande, j'ai pris mes fichiers journaux de la négociation en direct via l'API et les ai comparés aux fichiers log produits par le commerce simulé à partir de la même période exacte. J'ai pu obtenir ma simulation au point qu'elle était assez précise et pour les parties qui étaient impossibles à modéliser exactement, je me suis assurée d'au moins produire des résultats statistiquement similaires (dans les mesures que je croyais importantes). Faire des transactions rentables Avec un modèle de simulation d'ordre en place, je pouvais maintenant envoyer des ordres en mode de simulation et voir une PampL simulée. Mais comment mon système savait-il quand et où acheter et vendre? Les prédictions de mouvement de prix ont été un point de départ, mais pas toute l'histoire. Ce que j'ai fait a été de créer un système de notation pour chacun des 5 niveaux de prix sur l'offre et l'offre. Il s'agissait d'un niveau au-dessus de l'offre intérieure (pour une commande d'achat) et d'un niveau inférieur à l'offre intérieure (pour une commande de vente). Si le score à un niveau de prix donné était au-dessus d'un certain seuil, cela signifierait que mon système devrait avoir un bidoffer actif là-dessous du seuil, alors tous les ordres actifs devraient être annulés. Sur la base de cela, il n'était pas rare que mon système clignote une offre sur le marché puis immédiatement l'annuler. (Même si j'ai essayé de minimiser cela comme itrsquos ennuyeux comme heck à quiconque regarde l'écran avec des yeux humains - y compris moi.) Les scores de niveau de prix ont été calculés sur la base des facteurs suivants: La prédiction de mouvement de prix (que nous avons discuté plus tôt). Le niveau de prix en question. (Les niveaux intérieurs signifiaient des prévisions de déplacement de prix plus importantes.) Le nombre de contrats devant ma commande dans la file d'attente. (Moins était mieux.) Le nombre de contrats derrière ma commande dans la file d'attente. (Plus était mieux.) Essentiellement, ces facteurs ont servi à identifier ldquosaferdquo endroits à bidoffer. La prédiction des mouvements de prix ne suffisait pas à elle seule parce qu'elle ne tenait pas compte du fait que, lors de la soumission d'une offre, je n'étais pas automatiquement comblée - je ne me suis rempli que si quelqu'un m'a vendu là-bas. La réalité était que le simple fait de quelqu'un me vendre à un certain prix a changé les chances statistiques du commerce. Les variables utilisées dans cette étape étaient toutes sujettes à optimisation. Cela a été fait de la même manière que j'ai optimisé les variables dans les indicateurs de déplacement de prix sauf dans ce cas, j'ai été l'optimisation pour la ligne de fond PampL. Ce que mon programme a ignoré Lors de la négociation en tant qu'êtres humains, nous avons souvent des émotions fortes et des préjugés qui peuvent conduire à moins de décisions optimales. De toute évidence, je ne voulais pas codifier ces biais. Voici quelques facteurs que mon système a ignoré: Le prix qu'un poste a été entré - Dans un bureau de négoce itrsquos assez commun d'entendre la conversation sur le prix auquel quelqu'un est long ou court comme si cela devrait influer sur leur décision future. Bien que cela ait une certaine validité dans le cadre d'une stratégie de réduction des risques, cela n'a aucune incidence sur l'évolution future des événements sur le marché. Par conséquent, mon programme a complètement ignoré cette information. Itrsquos le même concept que d'ignorer les coûts irrécupérables. Aller court vs sortir d'une position longue - Typiquement, un commerçant aurait différents critères qui détermine où vendre une position longue par rapport à où aller à court. Cependant, de mon point de vue algorithmes, il n'y avait aucune raison de faire une distinction. Si mon algorithme attendait un mouvement à la baisse de vente était une bonne idée indépendamment de si elle était actuellement longue, courte ou plate. Une stratégie de ldquoublage uprdquo - C'est une stratégie commune où les commerçants achèteront plus de stock dans le cas où le commerce original va contre eux. Cela se traduit par un prix d'achat moyen plus faible et cela signifie que lorsque (ou si) le stock se tourne autour de vous sera réglé pour rendre votre argent en un rien de temps. À mon avis, c'est vraiment une stratégie horrible à moins que vous Warren Buffet. Yoursquore trompé en pensant que vous faites bien parce que la plupart de vos métiers seront gagnants. Le problème est quand vous perdez vous perdez gros. L'autre effet est qu'il rend difficile de juger si vous avez réellement un bord sur le marché ou sont juste obtenir chanceux. Être capable de surveiller et de confirmer que mon programme avait en fait un avantage était un objectif important. Étant donné que mon algorithme pris des décisions de la même manière indépendamment de l'endroit où il est entré dans un métier ou si elle était actuellement longue ou courte, il s'est parfois assis dans (et de prendre) certains métiers perdants grands (en plus de quelques métiers gagnants grands). Mais, vous ne devriez pas penser qu'il n'y avait aucune gestion des risques. Pour gérer le risque, j'ai imposé une taille de position maximale de 2 contrats à la fois, parfois heurté à des jours de volume élevé. J'avais aussi une limite de perte quotidienne maximale pour me prémunir contre toute situation inattendue du marché ou un bug dans mon logiciel. Ces limites ont été appliquées dans mon code, mais aussi dans le backend par l'intermédiaire de mon courtier. Comme il est arrivé, je n'ai jamais rencontré de problèmes significatifs. Exécution de l'algorithme À partir du moment où j'ai commencé à travailler sur mon programme, il m'a fallu environ 6 mois avant que je l'ai eu au point de rentabilité et a commencé à le vivre en direct. Bien que pour être juste une quantité significative de temps a été l'apprentissage d'un nouveau langage de programmation. Comme j'ai travaillé pour améliorer le programme, j'ai vu des profits accrus pour chacun des quatre prochains mois. Chaque semaine, je recycler mon système basé sur les 4 semaines précédentes de données. J'ai trouvé cela a frappé le bon équilibre entre la capture des tendances récentes du comportement du marché et d'assurer mon algorithme avait suffisamment de données pour établir des modèles significatifs. Comme la formation a commencé à prendre de plus en plus de temps je l'ai divisé afin qu'il puisse être effectué par 8 machines virtuelles en utilisant Amazon EC2. Les résultats ont ensuite été fusionnés sur ma machine locale. Le point culminant de mon trading était Octobre 2009 quand j'ai fait près de 100k. Après cela, j'ai continué à passer les quatre prochains mois à essayer d'améliorer mon programme malgré la baisse des bénéfices chaque mois. Malheureusement, à ce stade, je suppose que Irsquod a mis en œuvre toutes mes meilleures idées parce que rien de ce que j'ai essayé semblait aider beaucoup. Avec la frustration de ne pas être en mesure de faire des améliorations et de ne pas avoir un sentiment de croissance, j'ai commencé à penser à une nouvelle orientation. J'ai envoyé 6 entreprises de négociation haute fréquence différentes pour voir si theyrsquod être intéressé par l'achat de mon logiciel et m'engageant à travailler pour eux. Personne n'a répondu. J'ai eu quelques nouvelles idées de démarrage que je voulais travailler sur je n'ai jamais suivi. MISE À JOUR - J'ai posté cela sur Hacker News et il a obtenu beaucoup d'attention. Je veux simplement dire que je ne préconise pas que quiconque essaie de faire quelque chose comme ça maintenant. Vous auriez besoin d'une équipe de gens vraiment intelligents avec une gamme d'expériences pour avoir tout espoir de la concurrence. Même quand je faisais cela, je crois qu'il était très rare pour les individus de réussir (même si j'avais entendu parler d'autres.) Il ya un commentaire en haut de la page qui mentionne les statistiques manipulées et se réfère à moi comme un ldquoretail investorrdquo quants Ldquofficiellement choisir offrdquo. C'est un commentaire plutôt malheureux que les uns ne sont tout simplement pas basés dans la réalité. Mise à part therersquos quelques commentaires intéressants: news. ycombinatoritemid4748624 MISE À JOUR 2 - Irsquove posté un suivi FAQ qui répond à quelques questions courantes Irsquove reçu des commerçants sur ce post.


No comments:

Post a Comment