IT Engineering for Finance

Solution de trading sur mesure

Que vous soyez un négociant indépendant ou institutionnel, un jour ou l'autre, des besoins spécifiques apparaissent, quelles sont les solutions pour les adresser ?

Ça commence en général comme cela

En général, on choisit simplement un courtier, on télécharge sa plateforme et on trade en utilisant le logiciel de trading propriétaire fourni.

Diagramme montrant la relation entre la partie utilisateur et serveurs dans les solutions de trading propriétaires

Que se passe-t'il si l'on change de courtier ?

Si l'on change de courtier car justement son interface utilisateur ne nous convient pas, alors pas de problème, on utilise simplement le logiciel fourni par le nouveau courtier.

Cependant, si l'on change car les conditions du nouveau courtier nous conviennent mieux mais que l'on préférait le logiciel de l'ancien courtier, on se retrouve maintenant à analyser le marché sur l'ancien logiciel et à passer nos ordres sur le nouveau, ce qui amène inévitablement à une diminution de la concentration et aux erreurs associées.

Ce type de configuration n'a aucune flexibilité et les besoins spécifiques ne peuvent être adressés.

Quelle est la tendance ?

Pendant longtemps les plateformes de trading propriétaires ont donné une très grande marge de manœuvre à l'utilisateur et certaines étaient même particulièrement personnalisables.

Cependant, les récentes mises à jour de ces terminaux nous montrent que ces temps sont révolus. La tendance est maintenant clairement aux applications web, parfois lancées comme un logiciel standard, mais il ne s'agit que d'un conteneur qui lance l'application web dans une fenêtre dédiée. En soit, les technologies web ne posent aucun problème, bien au contraire, les produits peuvent être particulièrement réactifs et l'expérience utilisateur est souvent excellente ; en fait, les meilleurs interfaces utilisateurs actuelles sont des applications web.

Malheureusement, ces nouvelles plateformes ont tendance à toutes offrir plus ou moins les mêmes fonctionnalités, et ce confort d'utilisation se fait souvent au détriment de la flexibilité, ce qui fait qu'il devient pratiquement impossible d'adresser les besoins spécifiques à l'intérieur de la plateforme.

Comment répondre aux besoins spécifiques ?

Dans notre monde hyper compétitif, il est indispensable de se démarquer de ses concurrents. Cependant, même si vous avez développé une méthode ou une stratégie de trading novatrice, comment pouvez-vous l'implémenter efficacement si vous avez uniquement à votre disposition les mêmes outils standards que vos concurrents, et surtout si ces outils ne sont pas spécifiquement adaptés à ce nouveau besoin ?

Que vous ayez besoin de fonctionnalités d'analyse technique avancées, de graphiques ou de chandelles spécifiques, d'indicateurs complexes nécessitant une interface utilisateur sur mesure ou que vos besoins soient relatifs au back-office, comme un gestionnaire spécifique de supervision ou de routage des ordres, un stockage des données personnalisé ou de datamining ou d'intelligence artificielle de pointe, l'interface utilisateur doit être séparée de l'infrastructure du courtier, il devient ainsi possible de placer entre les deux tout type de solution répondant à vos besoins spécifiques.

Diagram showing the relation between front-end and back-end in proprietary trading solutions

Ce schéma peut paraitre compliqué au premier abord, mais en fait, dans la partie centrale, en bleu, seul (au moins) un connecteur est nécessaire, tous les autres modules sont optionnels et dépendent de vos besoins effectifs.

Dans les faits, c'est très simple, vous avez déjà un terminal de trading privilégié (à gauche) et vous savez probablement déjà quel est le broker le plus adapté à vos besoins (à droite), cette combinaison induira donc quel est le connecteur que nous devrons mettre à votre disposition. Vous pouvez maintenant trader avec votre terminal favori sur le broker que vous avez choisi.

Maintenant que le broker est dissocié de l'interface utilisateur grâce au connecteur, nous pouvons venir nous brancher sur ce (ou ces) connecteur(s) avec de nombreux modules qui vous permettront de trader exactement comme vous le souhaitez.

Vous trouverez ci-dessous un descriptif des différents modules que nous avons réalisés ou intégrés et que nous pouvons adapter pour vous.

Terminaux disponibles sur le marché

Il est possible que le terminal de trading privilégié que vous utilisez actuellement soit capable de se connecter à une infrastructure différente.

Les terminaux de trading suivants offrent cette possibilité, même si certaines restrictions s'appliquent (essentiellement en relation avec un nombre minimal d'utilisateurs ou des coûts d'entrée ou de personnalisation conséquents) :

Il s'agit d'une liste non-exhaustive, d'autres plateformes sont éligibles, demandez-nous.

Terminaux de trading sur mesure / Logiciels personnalisés d'analyse de graphiques boursiers

Les terminaux de trading disponibles sur le marché sont très polyvalents et offrent une large gamme de fonctionnalités, cette abondance peut parfois être au détriment de l'expérience utilisateur et de la productivité, comme toutes ces options, menus et palettes de boutons peuvent souvent nous encombrer et les traders novices peuvent rapidement être distraits ou confus par toutes ces options.

Un logiciel de trading personnalisé peut non seulement permettre d'intégrer les fonctionnalités spécifiques nécessaires, mais également d'offrir l'avantage d'avoir une interface sobre et fonctionnelle dédiée à notre manière de faire du trading, sans distraction et donc moins sujette aux erreurs.

Au fil du temps, Ophéa a développé de nombreuses bibliothèques logicielles lui permettant de développer rapidement des interfaces utilisateurs abordables qui correspondent aux besoins spécifiques du client.

Console de supervision et de surveillance

Il s'agit d'une fonctionnalité clé dans les environnements multi-utilisateurs. Elle permet un contrôle précis de tous les ordres, comme demander une autorisation à responsable ou à un superviseur pour ouvrir une nouvelle position qui dépasserait le profil du trader, dévier automatiquement les ordres des traders dont les pertes dépassent un certain seuil vers le moteur de simulation (trading virtuel ou de démonstration, paper trading) ou simplement bloquer tous les ordres des traders novices lorsque les conditions de marché deviennent trop volatiles, en cas de nouvelle ou d'évènement majeur par exemple.

Un tableau de bord peut montrer d'un coup d'œil aux responsables quelle est le niveau d'exposition global ou individuel et lui permettre de fermer toute transaction qui semblerait trop mal engagée.

Le trading automatisé (robots) est également contrôle et géré par de telles consoles, ou éventuellement la même console lorsque le workflow l'exige.

Application Web

Il s'agit du meilleur choix possible pour la plupart des nouveaux projets. Les technologies web permettent de développer des programmes particulièrement réactifs et l'expérience utilisateur est excellente.

Les nouvelles fonctionnalités sont faciles à intégrer et sont immédiatement disponibles sans avoir à refaire toute la procédure de distribution et d'installation sur tous les équipements. Le même code fonctionne sur toutes les plateformes: PC / Mac / Android / iOS / ...

Les applications web peuvent évidemment être utilisées dans n'importe quel navigateur, mais dans un environnement d'entreprise, nous fournissons en général un container qui se lance comme n'importe quelle application et qui appelle la WebApp depuis cette fenêtre, ce qui permet un niveau d'intrusion minimal dans le système et offre à l'utilisateur le meilleur des technologies web et de l'expérience du poste de travail.

Grâce aux bibliothèques logicielles que nous avons développées, nous pouvons réaliser une solution sur mesure sans avoir à réinventer la roue pour chaque client, et ce, pour une fraction du coût d'une application historique pour le poste de travail.

Terminal de trading pour mobile

Des besoins particuliers peuvent rendre nécessaire de développer une application dédiée aux mobiles, mais en général, dans le contexte des interfaces utilisateurs, le meilleur choix est l'application web intégrée dans une application container.

Terminal pour le poste de travail

Des besoins particuliers peuvent rendre nécessaire de développer un programme dédié au poste de travail, mais en général, dans le contexte des interfaces utilisateurs, le meilleur est l'application web intégrée dans un programme container.

Modules pour solution de trading sur mesure

La plupart des modules montrés dans la partie centrale du schéma ci-dessus sont optionnels ; pour que la solution soit fonctionnelle, il faut cependant évidemment intégrer obligatoirement au moins un connecteur.

Connecteurs aux marchés et courtiers

Les 5 principaux connecteurs possibles sont :

FIX

C'est le moyen le plus simple et le plus efficace de se connecter à un marché ou à un broker lorsqu'il le supporte, c'est le cas pour beaucoup. L'intégration est rapide et abordable. Plus d'informations sur le protocole FIX.

API

Il est fréquent d'avoir à s'interconnecter avec un fournisseur qui impose sa propre interface de programmation (API), c'est le plus souvent assez similaire à une intégration basée sur le protocole FIX, cependant, le temps de programmation et de coordination peut être plus long au cas où nous n'aurions jamais réalisé d'interconnexion avec ce partenaire en particulier. Lorsque la solution l'exige, nous pouvons également mettre à disposition une API de votre côté.

Terminal

Lorsque les solutions FIX ou API ne sont pas disponibles pour cette plateforme, mais que le terminal propose des fonctionnalités de programmation avancées, nous développons un plugin qui gère l'interconnexion, c'est le connecteur par défaut pour MetaTrader, ce qui donne accès à la plupart des brokers qui acceptent les terminaux MetaTrader.

WebSockets

Les WebSockets sont de plus en plus fréquemment supportées. Même si les WebSockets sont un protocole de transport standardisé, les messages qui sont transportés par ces sockets sont propriétaires, ce qui nécessite la coopération et la documentation du prestataire et nécessite un peu plus de coordination et de programmation que les connecteurs précédents.

Propriétaire

Il est parfois nécessaire de se rabattre sur une méthode d'interconnexion propriétaire. Dans les cas simples, ça peut être aisé et réalisé pour un coût plus que raisonnable. Mais dans tous les cas, une coopération complète du fournisseur est normalement nécessaire et des coûts supplémentaires du côté du prestataire peuvent s'appliquer. Nous connectons JForex de cette manière en utilisant son SDK, il est également possible de se connecter au Swiss FX Marketplace (SWFX) fournis par Dukascopy en utilisant le logiciel client (Connecteur: Terminal) ou le protocole FIX.

Autres

'Autres' signifie généralement 'Propriétaire', mais de nouvelles solutions émergent parfois. Par exemple, notre connecteur pour les WebSockets présenté plus haut a démarré comme un projet propriétaire en 2014 et ce type d'implémentation est maintenant devenu plus fréquent que les connexions propriétaires. Il n'y a pas de règle, expliquez-nous simplement avec qui vous souhaitez vous connecter, il y a toujours une solution technique, nous reviendrons vers vous avec un devis, ensuite, à vous de décider si la solution proposée correspond au budget.

Répartiteur (Dispatcher)

Il s'agit d'un module strictement technique, il gère simplement les requêtes qui lui sont faites et les retransmet au module ou au terminal correspondant, il fait également transiter les données d'un point à un autre de la solution. Pour les solutions multi-modules, il gère aussi les échanges de données entre les différents modules.Par exemple l'utilisateur sélectionne un nouvel instrument dans le logiciel client, le répartiteur reçoit cette demande, il fait alors une demande pour recevoir le flux de prix du marché de cet instrument auprès du broker et par la suite il retransmettra les informations du marché reçues au terminal qui en avait fait la demande.

OphéaDB

La plupart des moteurs de bases de données ont été développés pour être particulièrement polyvalents et optimisés pour gérer au mieux des données hétéroclites mises à jour sporadiquement. Comme le volume et la fréquence de mises à jour des données financières sont considérables, ces moteurs se comportent généralement de manière insatisfaisante avec ce type de données, ou alors ils ne sont pas destinés à retourner des résultats en temps réel, ce qui n'est pas non plus satisfaisant en trading.

Nous avons donc développé, et optimisé au fil du temps, un moteur de base de données dédié exclusivement au traitement et au stockage des données financières. Grâce à sa spécialisation et à son focus unique, OphéaDB est le moteur de base de données qui offre de très loin le meilleur rapport 'performances / ressources utilisées' du marché pour le stockage et le traitement de données financières.

Son cas d'utilisation le plus simple, dans le contexte d'une solution de trading, est de l'utiliser en tant que mémoire tampon (cache engine) pour les données de marché, ce qui améliore considérablement l'expérience utilisateur en dessinant les graphiques de prix quasi instantanément. Certains logiciels de charting sont particulièrement mauvais à ce sujet. Lorsque la volatilité du marché explose, on ne peut pas se permettre d'attendre plusieurs secondes l'affichage du graphique des prix d'une période inférieure à celle que nous visualisions jusque-là.

En partant du principe qu'il tourne sur du matériel adéquat, OphéaDB peut filtrer (market screening) tout le marché en utilisant des algorithmes complexes avec des temps de réponse proches de l'instantané. De même, il peut effectuer des tests historiques (backtesting) de stratégies particulièrement complexes en quelques minutes.

Stockage de données - xSQL

Si vous envisagez une solution de trading personnalisée, il y a de bonnes chances pour que vous ayez besoin de stocker des données liées à votre trading, comme par exemple des résultats de backtesting, des informations ou des paramètres liés aux graphiques et à l'analyse que vous en faites, pour faire persister des données éphémères ou tout simplement de sorte à partager des informations.

Le Répartiteur peut utiliser n'importe quel système de base de données largement répandu, de SQLite à un cluster Hadoop en passant par MySQL, MariaDB, PostgreSQL, des bases de données NoSQL telles que MongoDB ou Cassandra, ou même le serveur Microsoft SQL Server de votre entreprise.

Intelligence Artificielle / Exploration de données (Data Mining)

De plus en plus de systèmes de trading utilisent l'intelligence artificielle, en particulier le deep learning et les réseaux neuronaux, pour analyser le marché grâce à la reconnaissance de schémas récurrents (pattern recognition) ou l'identification, la classification ou le regroupement (clustering) des comportements du marché. D'autres usages fréquents sont l'optimisation de portefeuille ou la gestion des risques.

Ce module peut être un module sur mesure que nous développons pour vous, ou l'intégration d'une solution que vous avez déjà développée ou encore un connecteur à une solution de machine learning ou de data mining du marché basée sur PyTorch, TensorFlow, Gluon/MxNet, MCT/CNTK, Keras, Theano ou autre.

Filtre de marché (Market Screener)

Selon le type de marché traité et la manière de le trader, un bon système de recherche ou de filtrage (market screener) est indispensable au succès de la stratégie. Malheureusement, la plupart des filtres de marché sont extrêmement limités, pour ne pas dire archaïques, et ne permettent de filtrer que sur la base de quelques critères basiques.

Étant basé sur OphéaDB ainsi que sur nos modules d'intelligence artificielle et de data mining, notre module de filtrage est un réel outil de trading moderne qui vous permet de rechercher un instrument sur toutes les informations disponibles, ainsi que n'importe quel indicateur, évolution des prix, configuration graphique ou même des algorithmes complexes.

Notre module de filtrage peut s'utiliser en temps réel, comme moteur de recherche dans l'interface graphique, ou alors comme système d'alerte et les critères sont sauvegardés pour s'exécuter automatiquement à certains moments clé (temporels ou liés à l'évolution des prix ou de la volatilité), ou pour monitorer le marché en permanence. Le système permet de cibler l'évolution d'un instrument précis ou de surveiller globalement l'ensemble du marché.

Si l'utilisateur n'est pas connecté au moment où le système identifie que l'instrument surveillé, ou qu'un nouvel instrument, correspond aux critères, il peut être alerté par email ou même par sms.

Il est possible d'utiliser très simplement ce module depuis les stratégies de trading automatisées (robots) ce qui permet de trader une liste dynamique d'instruments correspondants à certains critères en n'ayant à taper qu'une seule ligne de code.

Système de négoce automatisé (Automated Trading Engine)

Au-delà des fonctionnalités de trading automatisées des divers terminaux, le module de négoce automatisé, permet d'exécuter des stratégies mécaniques au niveau du back-office, ce qui permet d'une part de les faire fonctionner indépendamment des terminaux clients, mais également de les contrôler et de les superviser grâce à la console idoine.

Le système supporte les règles écrites en EasyLanguage, en MetaQuotes Language (MQL4/MQL5) et en Java (pour JForex). Il est également possible d'écrire des programmes en Python, Java, C++ ou C#, Lisp, Swift, JavaScript ou tout autre langage à convenir.

Au lancement, on choisit de lancer la stratégie pour traiter : soit sur le marché directement, soit sur un compte de démonstration ou alors de faire du paper trading en mode forward-testing.

Ce module est généralement associé au module de backtesting de sorte à tester le comportement et la performance du robot de trading dans des conditions de marché passées.

Lorsque la solution de trading personnalisée est combinée à un terminal également personnalisé, il est alors possible de développer des stratégies hybrides qui se basent à la fois sur des éléments graphiques dans le terminal et sur une partie automatisée. Par exemple, le trader peut définir graphiquement des niveaux de prix ou des valeurs d'indicateurs qui peuvent alors servir de déclencheur ou d'abandon de positions, des stop loss ou take profits ou à partir de quel niveau on peut commencer à faire suivre les stops. Une fois que le front-end et le back-office sont liés de manière personnalisée, tout est possible.

Système de tests historiques (Backtesting Engine)

Le système de tests historiques permet de vérifier le comportement et la performance des robots de trading, grâce à l'intégration de ce module avec le moteur de base de données OphéaDB, ce processus est particulièrement rapide, même avec des stratégies complexes ou s'appliquant à de nombreux instruments.

Au niveau du terminal, l'utilisation du module permet de simuler et de rejouer n'importe quelle période du passé, en temps réel ou en accéléré, de sorte à répondre aux besoins d'entraînement et de formation.

Simulateur de trading (Paper Trading Engine)

Au lieu de transmettre les ordres au marché, on les transmet au simulateur, ce qui permet de tester des stratégies, de s'entrainer ou de former des traders juniors sans risques sur le marché.

Tout module capable de passer des ordres peut l'utiliser : terminal, automated trading engine, backtesting engine ou même un programme externe si nécessaire.

A moins que vous n'ayez des besoins très particuliers, ce module est simple et peut être activé rapidement et à coût abordable.

Controle des ordres (Orders control)

Nous faisons tous des erreurs, mais lorsqu'il s'agit d'ordres à passer au marché, il s'agit d'argent durement gagné qui peut potentiellement être perdu, un certain nombre de vérifications devraient être effectuées systématiquement, ne serait-ce que le nombre d'unités à acheter (veut-on vraiment acheter 1'000 lots de EUR/USD (chacun de 100'000€) ou c'est 1'000 unités (1'000€ en tout) que nous souhaitons acheter ? De même, le stop loss, on le veut vraiment à 1,000 pips (mille pips), ou nous avions plutôt 1.000 (un pip) en tête ?). Un simple pop-up de confirmation lorsque les valeurs soumises paraissent incohérentes ou inhabituelles permet parfois d'économiser beaucoup d'argent (en trading, on gagne déjà beaucoup en ne perdant pas).

Nous implémentons en général à ce niveau les règles minimales de risk management, comme risque maximum de x% du capital par position, exposition maximale de y%, levier maximal, pertes maximales par position avant de forcer la clôture, pertes cumulées maximales sur une période de temps et souvent avec deux valeurs de déclanchement, une qui génère un avertissement, une seconde une action automatique ou un blocage des actions utilisateur.

Dans un environnement multi-utilisateurs ce module est indispensable et permet d'exiger une autorisation à un responsable ou à un superviseur pour ouvrir une position dépassant le profil du trader, de dévier automatiquement les traders ayant dépassé leurs pertes tolérées sur le simulateur (paper trading) ou simplement bloquer tous les ordres des traders novices lorsque les conditions de marché deviennent trop volatiles, en cas de nouvelle ou d'évènement majeur par exemple.

Gestion des ordres (Orders management)

Avoir une solution personnalisée offre également la possibilité de mieux gérer les positions ouvertes, par exemple en simulant des types d'ordres qui ne sont pas supportés par le marché : certains marchés ne supportent pas les stop loss, le système peut alors monitorer l'évolution du prix de la position et sortir automatiquement à un seuil prédéfini, ce qui permet de simuler le comportement d'un stop loss (idem pour les marchés ou les brokers ne supportant pas les stops suiveurs (trailing stop loss), ou encore mieux de définir un seuil à partir duquel le stop loss se transforme en trailing stop loss). Ou définir, en plus d'un stop loss classique, un stop particulier moins éloigné du prix, qui ne fermerait la position que si une chandelle clôturait au-dessous d'un seuil prédéfini et non pas immédiatement lorsque ce seuil est simplement touché ... En fait, étant dans un environnement dans lequel nous avons un contrôle total, nous pouvons imaginer toutes sortes de solutions, pourquoi ne pas intégrer la stratégie de sortie, avec par exemple une clôture de la position lorsqu'un indicateur atteint un niveau particulier ?

Un module de gestion des ordres permet également d'envisager des stratégies plus élaborées, comme fermer automatiquement une partie de la position à un certain seuil de gains ou lorsqu'un objectif de prix est atteint, ou à l'inverse d'ajouter des unités lorsque la position actuellement ouverte est entièrement couverte par son stop loss suiveur (pyramidage). Toutes ces tactiques d'order et de position management disponibles habituellement pour les règles automatisées peuvent tout à fait être mise à la disposition des traders discrétionnaires également.

Lorsque nous avons à passer des ordres trop importants par rapport à la liquidité ou à la profondeur du marché, nous nous créons nous-mêmes des exécutions au moins partiellement défavorables, nous avons développé des algorithmes de dimensionnement (order sizing), de partage (order slicing) et d'échelonnement (order scaling) des ordres (block trading) particulièrement efficaces que nous intégrons dans le module de gestion des ordres.

Acheminement des ordres (Orders routing)

La possibilité de se connecter à plusieurs marchés et brokers depuis la même plateforme représente une sécurité et un confort inégalés, maintenant, encore faut-il acheminer les ordres chez le bon prestataire! Il existe de nombreuses solutions de copy trading qui permettent une certaine forme d'acheminement lorsque l'on utilise ces services pour nous copier nous-même, mais lorsque l'on utilise une plateforme dédiée, nous bénéficions d'un contrôle total et d'une flexibilité illimitée, et en plus, les règles de money et de risk management peuvent maintenant s'appliquer automatiquement en tenant compte de l'ensemble des comptes connectés.

Trois types d'acheminements peuvent être définis :

Acheminement des ordres statique

Pour les besoins immuables de l'entreprise. Les ordres sont acheminés d'après des critères prédéfinis, comme par exemple: les ordres pour un instrument particulier sont acheminés à un broker spécifique parce que ses conditions sont meilleures. Tout critère est utilisable: instrument, heure, conditions du marché, ou simplement décider de transmettre tous les ordres à double à deux brokers, ou de transmettre les ordres en même temps mais avec des tailles différentes, par exemple proportionnelles au capital.

Acheminement des ordres automatique

De la même manière que pour l'acheminement statique, mais selon des critères de routage dynamiques et gérables grâce à une console superviseur.

Acheminement des ordres à la demande

Dans le terminal de trading, dans la fenêtre de paramétrage de l'ordre, vous choisissez le broker auquel vous allez passer l'ordre ou vous sélectionnez un scénario prédéfini (éditable) de répartition sur plusieurs brokers.

À propos d'Ophéa

Ophéa Sàrl est une société de services d'ingénierie et de conseil en technologies de l'information (IT) basée en Suisse romande et qui fourni des services essentiellement dans les régions de Genève, Lausanne, Fribourg et Neuchâtel.

Nous sommes spécialisés dans les services et le conseil en ingénierie informatique haut de gamme, une partie de notre expertise: optimisation de bases de données, Big Data, analyse de données (Data Analysis), exploration de données (Data Mining), Cloud Computing, Intelligence Artificielle (IA), apprentissage automatique (Machine Learning), apprentissage en profondeur (Deep Learning), intelligence distribuée (Swarm Intelligence), Blockchain, robots de trading, algorithmes de trading, ...

Pour une description plus détaillée d'Ophéa et de ses activités, visitez notre page société.