Wednesday 15 February 2017

Architecture Du Système Commercial

Systèmes de négociation: Conception de votre système - Partie 1 La section précédente de ce didacticiel a examiné les éléments qui composent un système de négociation et discuté des avantages et des inconvénients de l'utilisation d'un tel système dans un environnement commercial en direct. Dans cette section, nous nous appuyons sur ces connaissances en examinant quels marchés sont particulièrement bien adaptés au système de négociation. Nous allons ensuite examiner plus en profondeur les différents genres de systèmes de négociation. Le marché boursier est probablement le marché le plus commun au commerce, en particulier chez les novices. Dans ce domaine, les grands acteurs tels que Warren Buffett et Merrill Lynch dominent, et la valeur traditionnelle et la croissance des stratégies d'investissement sont de loin les plus courantes. Néanmoins, de nombreuses institutions ont investi considérablement dans la conception, le développement et la mise en œuvre de systèmes de négociation. Les investisseurs individuels se joignent à cette tendance, bien que lentement. Voici quelques-uns des facteurs clés à garder à l'esprit lors de l'utilisation des systèmes de négociation sur les marchés boursiers: 13 La grande quantité d'actions disponibles permet aux commerçants de tester des systèmes sur de nombreux types d'actions - Non volatile blue chips. L'efficacité des systèmes de négociation peut être limitée par la faible liquidité de certaines actions, en particulier les émissions de gré à gré et de feuilles roses. Les commissions peuvent manger dans les profits générés par des métiers réussis, et peuvent augmenter les pertes. Les actions de gré à gré et de feuilles roses sont souvent assujetties à des frais de commission supplémentaires. Les principaux systèmes de négociation utilisés sont ceux qui cherchent de la valeur - c'est-à-dire des systèmes qui utilisent des paramètres différents pour déterminer si une valeur est sous-évaluée par rapport à ses performances passées, ses pairs ou le marché en général. Marchés des changes Le marché des changes, ou des devises. Est le marché le plus grand et le plus liquide au monde. Les gouvernements mondiaux, les banques et d'autres grandes institutions commercent trillions de dollars sur le marché forex tous les jours. La majorité des traders institutionnels sur le forex s'appuient sur les systèmes de négociation. La même chose vaut pour les individus sur le forex, mais un certain commerce basé sur des rapports économiques ou intérêts payouts. Here sont quelques facteurs clés à garder à l'esprit lors de l'utilisation des systèmes de négociation sur le marché des changes: La liquidité dans ce marché - Rend les systèmes de négociation plus précis et plus efficaces. Il n'y a pas de commissions sur ce marché, seulement des spreads. Par conséquent, il est beaucoup plus facile de faire de nombreuses transactions sans augmenter les coûts. Par rapport au montant des actions ou des matières premières disponibles, le nombre de devises à échanger est limité. Mais en raison de la disponibilité de paires de devises exotiques, c'est-à-dire de devises de pays plus petits, la fourchette en termes de volatilité n'est pas nécessairement limitée. Les principaux systèmes de trading utilisés dans le forex sont ceux qui suivent les tendances (un dicton populaire sur le marché est la tendance est votre ami), ou des systèmes qui achètent ou vendent sur les évasions. En effet, les indicateurs économiques entraînent souvent de grands mouvements de prix à la fois. Futures Equity, forex et marchés de matières premières offrent tous des contrats à terme. Il s'agit d'un véhicule populaire pour le système de négociation en raison de la plus grande quantité de levier disponible et l'augmentation de la liquidité et la volatilité. Cependant, ces facteurs peuvent couper les deux façons: ils peuvent amplifier vos gains ou amplifier vos pertes. Pour cette raison, l'utilisation des contrats à terme est habituellement réservée aux commerçants avancés des systèmes individuels et institutionnels. C'est parce que les systèmes commerciaux capables de capitaliser sur le marché à terme nécessitent une personnalisation beaucoup plus grande, utiliser des indicateurs plus avancés et prendre beaucoup plus de temps à développer. Donc, ce qui est le mieux C'est à l'investisseur individuel de décider quel marché est le mieux adapté au système de négociation - chacun a ses propres avantages et inconvénients. La plupart des gens sont plus familiarisés avec les marchés boursiers, et cette familiarité rend le développement d'un système commercial plus facile. Cependant, le forex est généralement considéré comme la plate-forme supérieure pour exécuter les systèmes de négociation - en particulier parmi les commerçants plus expérimentés. De plus, si un opérateur décide de capitaliser sur un effet de levier et une volatilité accrus, l'option à terme est toujours ouverte. En fin de compte, le choix réside dans les mains du développeur du système. Types de systèmes de négociation Systèmes de suivi des tendances La méthode la plus courante de système de négociation est le système de tendance-suivant. Dans sa forme la plus fondamentale, ce système attend simplement un mouvement de prix significatif, puis achète ou vend dans cette direction. Ce type de système de banques sur l'espoir que ces mouvements des prix maintiendront la tendance. Systèmes de moyenne mobile Utilisé fréquemment dans l'analyse technique. Une moyenne mobile est un indicateur qui montre simplement le prix moyen d'un stock sur une période de temps. L'essence des tendances est tirée de cette mesure. La façon la plus courante de déterminer l'entrée et la sortie est un croisement. La logique derrière cela est simple: une nouvelle tendance est établie lorsque le prix tombe au-dessus ou au-dessous de sa moyenne de prix historiques (tendance). Voici un graphique qui trame à la fois le prix (ligne bleue) et la MA (ligne rouge) de 20 jours d'IBM: Breakout Systems Le concept fondamental derrière ce type de système est similaire à celui d'un système de moyenne mobile. L'idée est que quand un nouveau haut ou bas est établi, le mouvement de prix est plus susceptible de continuer dans la direction de la rupture. Un indicateur qui peut être utilisé dans la détermination des éruptions est une simple bande Bollinger superposition. Bollinger Bands montrent des moyennes de prix élevés et bas, et les évasions se produisent lorsque le prix rencontre les bords des bandes. Voici un graphique qui trace le prix (ligne bleue) et les bandes de Bollinger (lignes grises) de Microsoft: Inconvénients des systèmes de suivi des tendances: Empirical Decision-Making Required - Lors de la détermination des tendances, il ya toujours un élément empirique à considérer: La tendance historique. Par exemple, la moyenne mobile pourrait être pour les 20 derniers jours ou pour les cinq dernières années, de sorte que le développeur doit déterminer lequel est le mieux pour le système. D'autres facteurs à déterminer sont les hauts et les bas moyens dans les systèmes d'échappement. Lagging Nature - Les moyennes mobiles et les systèmes d'évasion seront toujours en retard. En d'autres termes, ils ne peuvent jamais atteindre exactement le haut ou le bas d'une tendance. Cela entraîne inévitablement une confiscation des bénéfices potentiels, qui peuvent parfois être importants. Effet Whipsaw - Parmi les forces du marché qui nuisent au succès des systèmes de suivi des tendances, c'est l'une des plus courantes. L'effet whipsaw se produit lorsque la moyenne mobile génère un faux signal - c'est-à-dire, lorsque la moyenne tombe juste dans la portée, puis inverse soudainement la direction. Cela peut conduire à des pertes massives, à moins que des techniques d'arrêt-pertes efficaces et de gestion des risques ne soient utilisées. Marchés latéraux - Les systèmes de suivi des tendances sont, par nature, capables de faire de l'argent uniquement sur les marchés qui font réellement tendance. Cependant, les marchés se déplacent également de côté. Restant dans une certaine plage pendant une longue période de temps. Une volatilité extrême peut se produire - Parfois, les systèmes de suivi des tendances peuvent présenter une certaine volatilité extrême, mais le trader doit rester fidèle à son système. L'incapacité de le faire entraînera un échec assuré. Systèmes de contre-tendance Fondamentalement, l'objectif avec le système de contre-tendance est d'acheter au bas plus bas et de vendre au plus haut haut. La principale différence entre ce système et le système de suivi des tendances est que le système de contre-tendance n'est pas auto-correcteur. En d'autres termes, il n'y a pas de temps défini pour sortir des positions, ce qui se traduit par un potentiel de baisse illimité. Types de systèmes de contre-tendance Beaucoup de différents types de systèmes sont considérés comme des systèmes de contre-tendance. L'idée ici est d'acheter quand l'élan dans une direction commence à s'estomper. Ceci est le plus souvent calculé à l'aide d'oscillateurs. Par exemple, un signal peut être généré lorsque des indicateurs stochastiques ou d'autres indicateurs de force relative tombent en dessous de certains points. Il existe d'autres types de systèmes de trading de contre-tendance, mais tous ont le même objectif fondamental: acheter bas et vendre haut. Inconvénients des systèmes de contre-tendance suivants: Prise de décision stratégique - Par exemple, l'un des facteurs sur lesquels le développeur du système doit décider est les points où les indicateurs de force relative s'effacent. Une volatilité extrême peut se produire - Ces systèmes peuvent également rencontrer une certaine volatilité extrême, et une incapacité à coller avec le système malgré cette volatilité se traduira par un échec assuré. Downside illimitée - Comme mentionné précédemment, il ya un potentiel de baisse illimitée parce que le système n'est pas auto-correcteur (il n'y a pas de temps défini pour sortir des positions). Conclusion Les principaux marchés pour lesquels les systèmes de négociation sont adaptés sont les marchés des actions, des changes et des contrats à terme. Chacun de ces marchés présente ses avantages et ses inconvénients. Les deux principaux genres de systèmes de négociation sont les systèmes de tendance et les systèmes de contre-tendance. Malgré leurs différences, les deux types de systèmes, à leurs stades de développement, nécessitent une prise de décision empirique de la part du développeur. En outre, ces systèmes sont soumis à une volatilité extrême et cela peut exiger une certaine endurance - il est essentiel que le commerçant de système s'en tenir à son système pendant ces temps. Dans l'article suivant, bien examiner de plus près comment concevoir un système commercial et discuter de certains des logiciels que les commerçants système utilisent pour rendre leur vie plus facile. Systèmes de négociation: Conception de votre système - Partie 2 Il ya en fait seulement 3 blocs principaux dans un système de négociation Algo. 3. Le routeur de commande (par exemple le routeur FIX), vous pouvez ajouter des contrôles de risque au module de stratégie ou au module de routeur de commande ou aux deux. Tant que votre flux de données est correct, vous devriez être bon d'aller. Rappelez-vous que vous concevez un ATS pour la latence minimum, et l'ajout de couches ou la complexité viendra au coût de la latence. Une architecture ATS minimale Et si vous ajoutez les cloches et les sifflets, cela ressemblerait à ce qui suit: Si vous êtes également intéressé par la mise en œuvre de l'architecture ci-dessus, vous devriez garder les choses suivantes à l'esprit. Évitez les serrures. Dans le cas où vous devez l'utiliser, essayez de les remplacer par des structures sans serrures en utilisant atomics. Il existe quelques bibliothèques disponibles pour les structures de données sans verrouillage (par exemple libcds, kit de concurrence, etc.). C-11 prend en charge std :: atomic. Et vous devriez vous efforcer de les utiliser aussi. Évitez ce qui est fait dans QuickFIX. Son écrit pour securityflexibilityreusability comme la création et la destruction d'objet (lock) est fait pour chaque invocation de n'importe quel message au routeur. Sûrement pas moyen d'écrire un code de latence sensible. Pas d'allocation de mémoire d'exécution. Runtime doit utiliser la gestion de mémoire personnalisée et sans verrouillage avec pool de mémoire pré-alloué. Toute l'initialisation peut être faite dans les constructeurs. Couplage serré. Le modèle Threading, le modèle IO et la gestion de la mémoire doivent être conçus pour collaborer entre eux pour obtenir les meilleures performances globales. Cela va à l'encontre du concept OOP de couplage lâche, mais son nécessaire pour éviter le coût d'exécution du polymorphisme dynamique. Utilisez des modèles. Dans la même veine, je vous suggère également de regarder C templatization pour atteindre la flexibilité du code. OSHardware optimisation: Enfin, vous devriez chercher à travailler avec Linux RT Kernel et carte de réseau Solarflare avec pilote OpenOnLoad pour atteindre une latence minimale. Vous pouvez en outre chercher à isoler le processeur et exécuter votre programme sur ce noyau particulier. Et enfin, l'API publique que vous devriez exposer aux développeurs de stratégie. Je voudrais que ce soit l'ensemble minimal qui encapsulerait toute la complexité de cette relation d'échange particulière. Classe OrderRouter public: bool virtuel sendNewOrd (OrderInfo) 0 virtuel bool sendRplOrd (OrderInfo) 0 virtuel bool sendCxlOrd (OrderInfo) 0 virtualBut cela signifie que la classe OrderInfo doit avoir TOUS les détails requis par le destinationexchange. En général, les échanges nécessitent le même type d'information, mais comme vous allez le long et le soutien de plus d'échangesdestinations vous vous trouverez vous-même ajouter plus de variables dans cette classe. Voici les questions importantes que vous devriez vous poser: 1. Architecture multi-processus ou architecture multi-thread. Qu'il s'agisse de construire un processus monolithique avec plusieurs threads ou d'écrire plusieurs processus. Le coût du processus multiple est la latence du message passant, tandis que le coût pour le processus unique à plusieurs threads est que toute défaillance peut faire tomber le système entier. 2. Passage de message: alors que vous pouvez choisir parmi une pléthore d'options, vous êtes limité par la considération de latence. Le plus rapide IPC serait la mémoire partagée, mais alors comment feriez-vous la synchronisation passer un certain temps avec ces deux questions, car ils seraient le bloc de construction sur lequel votre architecture se tient. Edit: FIX et FAST Concernant le protocole standard, FIX est pour l'envoi d'ordres et FAST est pour les données du marché. Cela dit, la plupart des échanges ont leur propre protocole natif qui est plus rapide que FIX, car FIX est généralement mis en œuvre sur le dessus de leur protocole natif. Mais ils prennent encore en charge FIX ajoute à la vitesse de déploiement. D'autre part, alors que FIX est adopté par la plupart des échanges, FAST ne jouit pas d'une large acceptation. En tout cas, il n'y aurait qu'une poignée d'échanges qui l'adoptent. La plupart d'entre eux envoient plus de FIX lui-même (faible latence), ou utilisent leur propre protocole binaire natif. par exemple. En Inde, NSE, BSE et MCXMCXSX, tous les trois échanges vous donne FIX protocole en plus de protocole natif, mais seulement l'ESB vous donne FAST pour les données du marché. Et c'est aussi passer de FAST à natif avec l'introduction de l'EOBI. Vous pouvez extrapoler la même chose à d'autres échanges. 3.6k Vues middot Voir Upvotes middot Pas pour la reproduction Comme John a mentionné, OMS est le nœud de toute plateforme de négociation et vous devriez commencer à partir de la recherche à ce sujet. Vous devrez passer du temps à déterminer votre cycle de vie commercial, les événements et les fonctionnalités que vous souhaitez intégrer au SGD et ceux que vous souhaitez que votre moteur Algo gère. Metcetera offre un open source OMS, je ne l'ai pas utilisé personnellement mais il est l'un des rares sur le marché. La prochaine chose que vous devriez regarder est de fournir une interface pour les données de source dans et le pousser vers le bas. Ceci est pour un système d'entrée de commande de client pour jeter dans les détails d'ordre et le moteur d'Algo pour le source lui. Beaucoup de Sell Side OMS039s utilisent une combinaison de programmes propriétaires écrits en JavaC en utilisant FIX. Le protocole FIX vous permet de communiquer en temps réel entre les systèmes dans un format de message prédéfini d'amplificateur simplifié établi par la communauté de protocole FIX. Allez à la page d'accueil de l'organisation du protocole FIX gt pour en savoir plus. Examine également le moteur Open Source FIX. Une implémentation open source du moteur FIX. Ensuite vient une interface de données de marché pour la source en temps réel des informations sur le marché de la sécurité, des données allant de HighLowOpenClose à Best BidBest Ask, le volume total négocié, dernier prix, dernier volume, devis d'offre, demandez des citations etc Les informations que vous recherchez dépend vraiment du type de Stratégie que vous souhaitez mettre en œuvre. Je pense que Interactive Broker fournit un flux de données en temps réel via FIX. La connectivité Exchange est la suivante où votre Algo interprète les signaux, crée un ordre et achemine vers un Exchange ou ECN. Développer en interne pourrait être difficile car vous auriez besoin de travailler sur l'adhésion à l'échange, certifier votre plate-forme et payer une cotisation régulière. Un moyen moins coûteux est d'utiliser une API courtier (comme IB) et de passer l'ordre à travers eux. Les données historiques sont également essentielles, car vous pourriez vouloir comparer le comportement actuel du marché avec ses valeurs historiques. Des paramètres comme l'écart moyen, les profils VWAP, le volume quotidien moyen etc. peuvent être nécessaires pour influencer la prise de décision. Vous pouvez l'avoir sur la base de données (préféré), mais si la vitesse de l'essence, puis le télécharger sur le cache du serveur lorsque vous commencez votre programme. Une fois que vos systèmes périphériques sont configurés, vous pouvez commencer à développer votre programme algo comme vous le souhaitez. Cette infrastructure de base vous permettra de saisir un ordre de produit parent, de lire les données du marché, de réagir aux signaux, mais de générer des ordres enfants et de les placer sur le carnet d'ordres et les données historiques pour influencer la prise de décision. L'OMS tient le lien entre l'ordre d'enfant parent, ses statuts en temps réel et les mises à jour par l'algo ou la plate-forme de connectivité d'échange. Ce que vous voulez implémenter à l'intérieur de l'Algo est entièrement à vous. 2.1k Vues middot Voir Upvotes middot Pas pour ReproductionArchitecture d'un Courtier Interactif basé Trading System Cette page traite de l'API Interactive Brokers Java pour le modèle de logiciel de trading. Interactive Brokers (IB) semble attrayant car ils semblent avoir un support solide pour Java. Depuis le début IB a conçu leur interface de trading pour soutenir les plates-formes de trading de logiciels personnalisés. Ils sont devenus un important courtier, soutenant un volume important de transactions. Pour les comptes suffisamment financés, ils supportent également un effet de levier de 4 à 1. Interactive Brokers Services professionnels Soutien Les services professionnels de leur ligne de soutien sans frais sont: 866-694-2757 Interactive Brokers API Guide de l'utilisateur Taille minimale du compte Les bourses (NASDAQ et NYSE) exigent un solde minimum de 25 000 US pour un compte qui peut prendre en charge l'ordinateur Trading et transactions multiples par jour. Si cet équilibre n'est pas maintenu, les échanges exigent que les transactions soient terminées. Dans la pratique, cela signifie que le commerce informatique nécessite au moins 35K (US) et probablement quelque chose de plus proche de 50K au minimum. La connectivité à IB IB supporte la négociation sur Internet. Cela signifie que les transactions commerciales peuvent être victimes de la connectivité Internet et le routage. Par Speakeasy (IANS ISP), une transaction de paquet aller-retour à IB prend environ 93 msec. Notez qu'il s'agit de la latence du paquet. Plusieurs transactions par paquets peuvent être exceptionnelles. Mais la latence de base sur ma connexion ADSL signifie qu'une plateforme de trading s'exécutant sur mon système Linux pourrait maximiser environ 50 transactions de commande par seconde, ce qui est le maximum IB pour l'API Java. Je n'ai qu'une ligne ADSL de 1,2 Mbit donc la limitation pourrait être sur ma fin. Il n'est pas clair ce que la limitation est sur l'IB si il y avait un gros pipe sur le côté du système commercial. Cependant, quelle que soit la taille de la pipe, le routage sur Internet est, par conception, non-déterministe. IB soutient également les lignes dédiées T1 soutien, soit par Radianz ou Savvis. BT Radianz est le principal fournisseur de connectivité sécurisée, fiable et évolutive pour la communauté financière mondiale. L'infrastructure de marché partagée de l'entreprise est une plate-forme neutre qui fournit un accès clé en main à un large éventail d'applications de pré-négoce, de commerce et de post-négociation des principaux fournisseurs de contenu et de services à travers la chaîne de traitement direct (STP). SAVVIS, Inc. (NASDAQ: SVVS) est un fournisseur mondial de services d'utilité informatique qui dirige l'industrie en fournissant des services d'hébergement, de réseau et d'application sécurisés, fiables et évolutifs. L'approche stratégique de SAVVIS combine l'utilisation de la technologie de virtualisation, d'un modèle de services publics et de systèmes automatisés de gestion et de provisionnement de logiciels. Les solutions SAVVIS permettent aux clients de se concentrer sur leur cœur de métier tandis que SAVVIS assure la qualité de leur infrastructure informatique. Avec une plate-forme de services informatiques qui s'étend à 45 pays, SAVVIS est l'un des plus grands fournisseurs mondiaux de services informatiques IP. IB soutiendra également une ligne T1 louée directement dans le centre de données IB. Les possibilités de connectivité de l'IB sont présentées ci-dessous: Transactions La transaction IB passe soit par le TWS (logiciel commercial), soit par l'API (dans ce cas, Java) ou par le biais de CTCI FIX. Un seul compte (nom d'utilisateur et mot de passe) est limité à 50 messages par seconde (voir cette page). La relation entre les messages et les transactions de commande n'est pas claire. Le client IBGateway permet des connexions FIX CTCI à IB sur Internet. C'est un logiciel qui sert de pont entre votre moteur FIX et IB. En utilisant l'interface CTCI FIX, la limite est de 150 messages par seconde. Cela nécessite un moteur FIX (normalement appelé un client) pour fournir l'API pour le protocole FIX. Le protocole FIX semble être extrêmement complexe et apparemment pas tous les systèmes de courtage ou d'échange prend en charge exactement de la même manière. La mise en œuvre d'une API client pour ce protocole prendrait beaucoup de temps et coûterait cher. Heureusement, les moteurs Java FIX peuvent être achetés à partir de plusieurs sources, notamment: Applications basées sur API IB Pour vous connecter à IB, l'application TWS (Trading Work Station) doit être exécutée en premier. Une application API Java peut se connecter à un processus TWS. La connexion s'effectue via une connexion réseau. Si TWS et l'application API s'exécutent sur le même système, cette connexion réseau se fera via localhost. Ceci est assez gênant, car l'exécution du programme de négociation nécessite que TWS soit exécuté en premier pour établir une session (via nom d'utilisateur et mot de passe). Les comités de discussion de l'IB Les courtiers indépendants ont accueilli un forum de discussion. Cette carte est remarquablement honnête (par exemple, IB ne semble pas modifier les verrues signalées par les utilisateurs). Le babillard de l'IB peut être évalué à l'aide de l'ID utilisateur et du mot de passe. Yahoo IB tableau de messages IB Tick Alimentation de données L'API IB prend en charge un flux de données de ticks. Chaque stock doit être demandé et il existe une interface unique dans l'API qui reçoit les données de la coche. Ce flux de données doit être démultiplexé en un flux pour chaque stock. IB ne fournit pas un véritable flux de données de marché, mais plutôt un flux de données consolidé avec environ une valeur par 250 ms. Pour de nombreuses applications commerciales, cela suffit. De meilleurs flux de données sont disponibles. Mais ils sont chers, au moins pour un aliment de qualité professionnelle.


No comments:

Post a Comment