De la négociation quantitative à la gestion d'actifs - Développement de la stratégie CTA pour un rendement absolu

Auteur:Je ne sais pas., Créé à: 2023-02-07 09:58:41, Mis à jour à: 2023-09-18 20:25:11

img

De la négociation quantitative à la gestion d'actifs - Développement de la stratégie CTA pour un rendement absolu

Préface

Pourquoi devrais-je suivre ce cours?

Qu'est-ce que vous gagnez en suivant ce cours? Tout d'abord, ce cours est basé sur les langages de programmation JavaScript et Python. Le langage n'est qu'une technologie. Enfin, nous devrions appliquer cette technologie dans une industrie. Le commerce quantitatif est une industrie émergente, qui est actuellement à un stade de développement rapide et a une forte demande de talents.

Grâce à l'apprentissage systématique de ce cours, vous pouvez avoir une compréhension plus approfondie du domaine du trading quantitatif. Si vous êtes un étudiant qui se prépare à entrer dans le domaine du trading quantitatif, cela vous aidera également. Si vous êtes un passionné d'investissement en actions ou en contrats à terme, le trading quantitatif peut vous aider dans votre trading subjectif. En développant des stratégies de trading, vous pouvez gagner des profits sur le marché financier, et également élargir les canaux et les plateformes pour votre investissement et votre gestion financière.

Avant cela, laissez-moi vous parler de mon expérience personnelle de trading. Je ne suis pas spécialiste en finance, j'ai étudié les statistiques. Au début, j'ai commencé à négocier des actions subjectivement à l'école. Plus tard, je suis devenu un praticien de trading quantitatif de fonds de capital-investissement nationaux, principalement engagé dans la recherche et le développement de stratégies.

Je suis dans ce cercle depuis plus de dix ans, et j'ai développé différents types de stratégies. Ma philosophie d'investissement est la suivante: le contrôle des risques est avant tout et se concentre sur les rendements absolus. Le sujet de notre sujet est: du trading quantitatif à la gestion d'actifs - Développement de stratégie CTA pour un rendement absolu.

1. Stratégie de CTA à terme logique pour gagner de l'argent

1.1 Comprendre les CTA à terme

Quelqu'un peut se demander ce qu'est un CTA? Qu'est-ce que le CTA exactement? Le CTA est appelé conseiller en négociation de matières premières dans les pays étrangers et gestionnaire d'investissement en Chine. Le CTA traditionnel consiste à recueillir les fonds de la majorité des investisseurs, puis à les confier à des institutions d'investissement professionnelles, et enfin à investir dans des contrats à terme sur indices boursiers, des contrats à terme sur matières premières premières et des contrats à terme sur obligations du Trésor par l'intermédiaire de conseillers en négociation (à savoir le CTA).

Mais en fait, avec le développement et l'expansion continus du marché mondial des contrats à terme, le concept de CTA s'étend également et sa portée dépasse de loin les contrats à terme traditionnels. Il peut investir non seulement sur le marché des contrats à terme, mais également sur le marché des taux d'intérêt, le marché boursier, le marché des changes et le marché des options. Tant qu'il existe une certaine quantité de données historiques pour cette variété, il peut développer des stratégies de CTA correspondantes basées sur ces données historiques.

À cette époque, la plupart des traders jugeaient la tendance future des contrats à terme sur matières premières en dessinant manuellement des indicateurs techniques, tels que l'indice William, KDJ, RSI, MACD, CCI, etc. Plus tard, les traders ont mis en place un fonds CTA spécial pour aider les clients à gérer les actifs.

Variations de la taille de la gestion des fonds CTA

img

En milliards de dollars

En particulier avec l'essor du trading quantitatif, l'échelle des fonds CTA mondiaux est passée de 130,6 milliards de dollars en 2005 à plus de 300 milliards de dollars en 2015.

L'indice CTA de Barclay est un indicateur représentatif de l'industrie pour les conseillers mondiaux en matière de négociation de matières premières. De la fin de 1979 à la fin de 2016, le rendement cumulé de l'indice CTA de Barclay était de 28,95 fois, le rendement annualisé était de 9,59%, le ratio Sharp était de 0,37 et le retrait maximum était de 15,66%.

En effet, dans le portefeuille d'allocation d'actifs, la stratégie CTA maintient généralement une corrélation très faible avec les autres stratégies. Comme le montre le cercle rouge ci-dessous, pendant le marché boursier mondial de 2000 à 2002 et la crise mondiale des subprimes en 2008, l'indice du fonds Barclay CTA n'a pas seulement pas chuté, mais a également obtenu des rendements positifs. Lorsque le marché boursier et le marché obligataire étaient en crise, CTA pouvait fournir de forts rendements.

img

Le développement de la CTA en Chine n'a eu lieu que ces dix dernières années, mais la dynamique est très forte. Cela est principalement dû à l'environnement de négociation relativement ouvert des contrats à terme sur matières premières nationaux, au faible seuil des fonds de négociation, à l'utilisation du système de marge pour négocier des positions longues et courtes, aux faibles coûts de transaction, à la structure technique plus avancée de l'échange par rapport aux actions et au système de négociation plus facile.

Depuis 2010, les fonds CTA existent principalement sous forme de fonds privés. Avec l'ouverture progressive de la portée d'investissement du compte spécial du fonds dans les politiques nationales, les fonds CTA ont commencé à exister sous forme de compte spécial du fonds.

Les stratégies CTA sont également plus appropriées pour les traders individuels que les autres stratégies de trading en termes de facilité d'entrée, de seuil de capital, d'exécution des stratégies de trading et de connectivité API. Les contrats à terme nationaux sont très petits. Par exemple, la farine de maïs ou de soja peut être négociée pour des milliers de yuans, et il n'y a presque pas de seuil de capital.

Le processus de conception de la stratégie CTA est également relativement simple. Tout d'abord, les données historiques sont traitées initialement, puis entrées dans le modèle quantitatif. Le modèle quantitatif comprend la stratégie de trading formée par la modélisation mathématique, la conception de programmation et d'autres outils, et le signal de trading est généré en calculant et en analysant ces données. Bien sûr, dans le développement réel, ce n'est pas aussi simple que le graphique ci-dessus.

1.2 Type de stratégie CTA des contrats à terme

Du point de vue de la stratégie de négociation, la stratégie CTA est également diversifiée: elle peut être une stratégie de tendance ou une stratégie d'arbitrage; elle peut être une stratégie à moyen et long terme à grande période, ou une stratégie à court terme intraday; la logique de la stratégie peut être basée sur l'analyse technique ou l'analyse fondamentale; elle peut être une transaction subjective ou une transaction système.

La stratégie CTA a différentes méthodes de classification. Selon la méthode de transaction, elle peut être divisée en transaction subjective et transaction système. Le développement de la stratégie CTA étrangère est relativement avancé et la stratégie CTA de transaction système est proche de 100%. Selon la méthode d'analyse, elle peut être divisée en analyse de base et analyse technique. Selon la source de revenu, elle peut être divisée en trading de tendance et trading oscillant.

En général, la stratégie CTA représente environ 70% du marché de négociation total, la stratégie de tendance représente environ 25% et la stratégie de contre-tendance ou d'inversion de tendance représente environ 5%. Parmi elles, la stratégie de tendance avec la plus grande proportion peut être divisée en négociation à haute fréquence, négociation intrajournalière, négociation à court et moyen terme et négociation à moyen et long terme selon la période de position.

Stratégie de création de marché à haute fréquence

À l'heure actuelle, il existe deux stratégies principales de négociation à haute fréquence sur le marché: l'une est la stratégie de création de marché à haute fréquence, l'autre est la stratégie d'arbitrage à haute fréquence. La stratégie de création de marché consiste à fournir de la liquidité sur le marché de la négociation. C'est-à-dire, sur le marché de la négociation avec un créateur de marché, si quelqu'un veut négocier, le créateur de marché doit s'assurer que son ordre peut être négocié. S'il y a une liquidité insuffisante sur le marché et que l'ordre ne peut pas être négocié, le créateur de marché doit acheter ou vendre l'ordre de la contrepartie.

Stratégie d'arbitrage à haute fréquence

L'arbitrage à haute fréquence se réfère à la négociation de deux actions ou portefeuille d'ETF et d'ETF fortement corrélés. Selon la méthode de calcul de l'ETF, le prix attendu d'un ETF peut être calculé de la même manière. Le prix de l'indice ETF peut soustraire le prix attendu de l'ETF pour obtenir une différence de prix. Habituellement, la différence de prix se déroulera dans un canal de prix. Si la différence de prix traverse les canaux supérieur et inférieur, vous pouvez échanger la différence de prix, attendre le retour de la différence de prix et en tirer des revenus.

Stratégie intraday

Dans le sens littéral, tant qu'il n'y a pas de position du jour au lendemain, on peut l'appeler stratégie de trading intrajournalier. En raison de la courte période de détention du trading intrajournalier, il est généralement impossible de réaliser des bénéfices immédiatement après être entré sur le marché, puis de quitter le marché rapidement. Par conséquent, ce mode de trading comporte un faible risque de marché. Cependant, comme le marché change rapidement dans un court laps de temps, la stratégie intrajournalière a généralement des exigences plus élevées pour les traders.

Stratégie à moyen et à long terme

En théorie, plus la période de détention est longue, plus la capacité stratégique est grande et plus le ratio risque-rendement sera faible. En particulier dans les transactions institutionnelles, en raison de la capacité limitée des stratégies à court terme, les gros fonds ne peuvent pas entrer et sortir du marché dans un court laps de temps, des stratégies plus à long terme seront allouées. Généralement, la période de position est de plusieurs jours et mois, voire plus.

Données sur la stratégie du CTA

De manière générale, la stratégie CTA est étudiée avec des données mensuelles, horaires et quotidiennes, qui comprennent: prix d'ouverture, prix le plus élevé, prix le plus bas, prix de clôture, volume de négociation, etc. Seulement quelques stratégies CTA utiliseront des données Tick, telles que le prix d'achat, le prix de vente, le volume d'achat, le volume de vente et d'autres données approfondies dans les données L2.

En ce qui concerne l'idée de base de la stratégie CTA, la première chose à laquelle nous pensons est basée sur les indicateurs techniques traditionnels, car il existe de nombreux documents de référence publics dans ce domaine, et la logique est généralement simple, dont la plupart sont basés sur des principes statistiques.

Il existe également des modèles de négociation classiques sur le marché, qui peuvent également être utilisés à titre de référence et améliorés, notamment: combinaison de moyennes mobiles multiples, DualThrust, R-Breaker, méthode de négociation Turtle, méthode de négociation par grille, etc.

Toutes ces stratégies de trading sont basées sur l'analyse technique traditionnelle. Le processus consiste à extraire des facteurs ou des conditions de trading avec des avantages de probabilité en fonction des données historiques et des concepts de trading corrects, et à supposer que le marché aura encore de telles lois à l'avenir. Enfin, la stratégie de trading est réalisée par code et trading entièrement automatique.

Le plus grand avantage de la stratégie CTA est que, peu importe si le marché actuel est en hausse ou en baisse, il peut obtenir des rendements absolus, en particulier lorsque le marché change rapidement, ou la tendance du marché est évidemment lisse, l'avantage de la stratégie est évident, en bref, s'il y a une tendance, il y a un gain. Cependant, si le marché est dans une situation volatil ou si la tendance n'est pas évidente, la stratégie peut acheter à un point élevé et vendre à un point bas, et arrêter la perte et en arrière.

1.3 Principe de profit de la stratégie CTA des contrats à terme

La stratégie des contrats à terme CTA est rentable principalement en raison des points suivants:

    1. Il y a une réflexivité dans la tendance des prix, qui continue toujours dans le sens de la tendance. Lorsque les investisseurs observent que le prix augmente, ils suivent la tendance et achètent, ce qui entraîne une hausse supplémentaire du prix. Il en va de même pour la baisse des prix. Parce que les investisseurs sont plus irrationnels, nous pouvons parfois voir que le prix augmente anormalement et tombe anormalement.
    1. Chaque investisseur a une tolérance asymétrique pour le ratio profit/perte et une tolérance différente pour le risque.
    1. La formation du prix est déterminée par la transaction. Il est vrai que la transaction est dirigée par les gens, mais la nature humaine est difficile à changer. C'est la raison pour laquelle le modèle fixe se répétera. La stratégie est efficace dans le backtesting des données historiques, ce qui indique qu'elle peut également être efficace à l'avenir.

En outre, la caractéristique commerciale du suivi des tendances est de perdre une petite quantité d'argent quand il n'y a pas de marché, et de faire une grande fortune quand le marché arrive. Cependant, les gens qui ont fait du trading savent que le marché est volatil la plupart du temps, et que le marché de tendance n'est que dans une petite quantité de temps. Par conséquent, la stratégie de suivi des tendances a un faible taux de gain dans le trading, mais le profit et la perte globaux de chaque transaction sont relativement importants.

Parce que la stratégie de suivi de tendance est instable en termes de revenus, de nombreuses institutions d'investissement utiliseront plusieurs variétés et stratégies pour construire un portefeuille, qui sera également configuré avec un certain nombre de stratégies d'inversion.

Corrélation entre l'OTC et les actifs traditionnels

img

En théorie, diverses stratégies avec des styles différents ou une corrélation relativement faible donneront parfois les mêmes et parfois des signaux de trading différents en même temps face à divers changements de prix du marché.

De ce point de vue, on peut conclure qu'il est préférable de développer plusieurs sous-stratégies modérées que de développer une stratégie principale. Comment contrôler ces stratégies? Ici, nous pouvons apprendre de l'algorithme de forêt aléatoire dans l'apprentissage automatique. La forêt aléatoire n'est pas un algorithme indépendant, c'est un cadre de décision contenant plusieurs arbres de décision.

Nous pouvons évaluer la liquidité, la rentabilité et la stabilité de chaque variété sur l'ensemble du marché des contrats à terme sur matières premières afin de détecter le portefeuille de variétés de contrats à terme sur matières premières avec une faible volatilité des bénéfices, puis procéder à un dépistage neutre du secteur, réduire davantage la volatilité globale grâce à la dispersion du portefeuille dans l'industrie, et finalement construire le portefeuille multi-variétés réel de contrats à terme sur matières premières grâce à une correspondance de la valeur marchande pour la négociation.

Chaque variété peut également être configurée avec des stratégies multi-paramètres, et elle peut sélectionner la combinaison de paramètres avec de bonnes performances dans le backtest. Lorsque la tendance du marché est évidente, les stratégies multi-paramètres fonctionneront généralement de manière cohérente, ce qui équivaut à ajouter des positions; Lorsque le marché est dans une situation volatile, les performances de plusieurs ensembles de stratégies de paramètres seront généralement incohérentes, de sorte qu'elles peuvent couvrir les risques en allant long ou court, respectivement, ce qui équivaut à réduire les positions. Cela peut réduire davantage le taux de backtest maximum du portefeuille, tout en maintenant le taux de rendement global inchangé.

2. Exemple classique de stratégie CTA

Newton a dit un jour: si je vois plus loin que les autres, c'est parce que je me tiens sur les épaules de géants.

Les stratégies de CTA disponibles sur le marché comprennent la stratégie SMA, la stratégie des bandes de Bollinger, les règles de trading de tortue, la stratégie de dynamique, la stratégie d'arbitrage, etc. Les stratégies de trading quantitatives ont une caractéristique, à savoir qu'elles échoueront lentement une fois rendues publiques. Mais cela ne nous empêche pas d'apprendre de ces stratégies et d'apprendre de leur essence, afin de résoudre les problèmes sur les épaules des géants.

2.1 Analyse des fondamentaux des contrats à terme (inventaire, différence de base, prix)

L'analyse fondamentale n'a pas besoin de se soucier de la tendance des prix à court terme. On pense que la valeur se reflétera dans le prix en fin de compte. Il s'agit davantage d'analyser les facteurs derrière le prix pour déterminer la valeur de la variété. Généralement, la méthode d'analyse descendante est adoptée: à partir de facteurs macro, de facteurs de variété et d'autres facteurs.

img

Nous pouvons voir du graphique ci-dessus qu'il y a beaucoup de facteurs qui affectent les prix des matières premières, et ces données changent constamment.

En fait, l'analyse fondamentale des contrats à terme sur matières premières ne consiste pas à analyser tous les facteurs. Nous avons seulement besoin de saisir les éléments de base de l'analyse fondamentale pour découvrir les règles à partir des informations complexes.

Facteurs macro

Les données macroéconomiques sont complexes et changeantes. Chaque jour, à chaque instant, de nombreuses données économiques sont publiées, de la politique nationale, des banques centrales, des banques d'investissement, officielles et non officielles. En plus de la crise politique et économique, la macroanalyse est un bon matériel pour discuter, mais pas pratique.

Facteur de variété

Dans l'analyse fondamentale, l'analyse de la variété consiste principalement à analyser les primes et les rabais, les relations d'offre et de demande, l'inventaire des matières premières, les bénéfices industriels, etc. On peut dire que la maîtrise de l'analyse des facteurs de variété des contrats à terme sur matières premières peut juger la plupart des tendances du marché.

Comme les amis qui ont fait des contrats à terme le savent, les contrats à terme sur les produits de base domestiques peuvent être simplement divisés en produits industriels et produits agricoles. Les méthodes d'analyse des produits industriels et des produits agricoles sont différentes. Nous allons détailler les deux aspects de l'offre et de la demande. Dans les produits industriels, l'offre est relativement stable. À moins qu'il n'y ait une percée technologique majeure, la capacité de production ne changera probablement pas de manière significative dans un court laps de temps. Par conséquent, le principal facteur affectant le prix des produits industriels est la demande. La demande de produits agricoles est relativement stable. À long terme, la demande de produits agricoles change, mais à court terme, la demande de produits agricoles a tendance à être stable, de sorte que le principal facteur affectant le prix des produits agricoles est l'offre.

Par conséquent, selon les lois de l'économie, c'est la relation entre l'offre et la demande qui détermine finalement le prix des biens. En théorie, tant que les données de l'offre et de la demande peuvent être obtenues, le prix futur des biens peut être déterminé. Pour les produits industriels, les données d'offre sont faciles à obtenir, mais il est difficile d'obtenir les données de demande. Pour les produits agricoles, les données de demande sont faciles à obtenir et il est difficile d'obtenir les données d'offre.

En fait, nous pouvons encore soustraire. Le résultat mutuel de l'offre et de la demande sur le marché économique est l'inventaire. Nous pouvons juger de la force de la relation entre l'offre et la demande du marché à travers les données d'inventaire. Si l'inventaire d'un produit est très élevé, cela signifie que l'offre du marché est supérieure à la demande, et le prix du produit diminuera si les conditions extérieures restent inchangées. Si l'inventaire d'un produit est très faible, cela signifie que la demande du marché est supérieure à l'offre, et le prix du produit augmentera si les conditions extérieures restent inchangées.

En plus d'analyser l'inventaire des matières premières, nous devons également analyser la différence de prix entre le marché au comptant et le marché des contrats à terme, également appelée différence de base. Si le prix des contrats à terme est supérieur au prix au comptant, nous l'appelons la prime des contrats à terme; si le prix des contrats à terme est inférieur au prix au comptant, nous l'appelons le rabais des contrats à terme. Selon le système de livraison des contrats à terme, à la date de livraison des contrats à terme, le prix des contrats à terme doit être égal au prix au comptant.

Indépendamment de la prime ou de l'escompte, en raison des contraintes du système de livraison de contrats à terme, le prix des contrats à terme à la date de livraison devrait être égal au prix au comptant en théorie.

Selon le principe ci-dessus, nous pouvons utiliser l'inventaire et la différence de base pour déterminer les prix futurs des contrats à terme en même temps. Si l'inventaire d'un produit est faible, et si le prix des contrats à terme est beaucoup plus bas que le prix au comptant, nous pouvons juger que la demande du marché au comptant est supérieure à l'offre, et la probabilité que le prix au comptant augmente à l'avenir est grande; également en raison du système de livraison des contrats à terme, à mesure que la date de livraison approche, le prix des contrats à terme augmentera, et il sera égal au prix au comptant.

Enfin, nous jugons la direction probable du prix futur à travers la différence d'inventaire et de base, mais il n'y a pas de point précis d'achat et de vente, nous devons donc coopérer avec l'analyse technique pour donner un signal clair d'entrée et de sortie.

2.2 Règles relatives au commerce des tortues

Quand il s'agit de stratégies de trading, nous devons parler des règles de trading représentatives de la tortue. La règle de trading de la tortue provient de l'expérience la plus célèbre de l'histoire du trading. Richard Dennis, un spéculateur sur les matières premières, veut savoir si de grands traders naissent ou sont formés. À cette fin, en 1983, il a recruté 13 personnes et leur a enseigné les concepts de base du trading à terme, ainsi que ses propres méthodes et principes de trading. Ces étudiants ont été appelés turtles.

Dans les quatre années suivantes, les tortues ont atteint un intérêt annuel composé moyen de 80%. Dennis a prouvé qu'avec un système et des règles simples, les personnes ayant peu ou pas d'expérience de trading peuvent devenir d'excellents traders. Cependant, certaines tortues vendent des règles de trading de tortues sur le site Web pour le profit.

Après que la vérité soit sortie, les gens ont découvert que les règles de trading Turtle adoptaient le canal Donchian optimisé et utilisaient des indicateurs ATR pour la gestion de position.

Principes de base de la tortue

  • Maîtriser les avantages: trouver une stratégie commerciale avec des attentes positives, car à long terme, cela peut créer des rendements positifs.
  • Gérer le risque: contrôler le risque et maintenir votre position, sinon vous ne pouvez pas attendre un jour pour faire des profits.
  • Persévérance: Ce n'est qu'en appliquant sans faille votre stratégie que vous obtiendrez de véritables résultats systématiques.
  • Simple et clair: à long terme, les systèmes simples ont plus de vitalité que les systèmes complexes.

Voyons maintenant ce que disent les règles de négociation des tortues.

  1. Le marché - ce qu'il faut acheter et vendre, essentiellement sur quels marchés négocier. Les tortues sont des commerçants à terme. Ils choisissent les marchés avec un grand volume de négociation et une forte liquidité seulement. Parce que le choix des marchés avec un trading inactif augmentera le glissement supplémentaire d'entrée et de sortie, et manquera également de nombreuses opportunités de tendance.
  2. La règle de trading Turtle adopte l'ATR, c'est-à-dire l'indice de volatilité réelle moyenne, pour calculer la position ouverte, augmenter le signal de position et le signal de stop loss. Il s'agit d'une conception très ingénieuse. L'intention initiale est d'ajuster la taille de la position grâce à la volatilité absolue du marché. Lorsque la volatilité du marché est forte, réduire la position, et lorsque la volatilité du marché est faible, augmenter la position. Elle définit d'abord une unité dont la formule est: (actifs totaux * 1%) /ATR. La position initiale est de 1 unité. Même si la baisse de la variété ce jour-là atteint le niveau de l'ATR, la perte ce jour-là peut être contrôlée à 1% de l'actif total. Si le prix augmente de 0,5 unité, la position longue augmentera de 1 unité, jusqu'à 4 unités.
  3. Entrée sur le marché - L'entrée sur le marché de Turtle est basée sur le canal Donchian. Lorsque le prix dépasse le prix le plus élevé des premières lignes de 20 ou 55 K, il entrera sur le marché pour aller long. Lorsque le prix tombe en dessous du prix le plus bas des premières lignes de 20 ou 55 K, il entrera sur le marché pour aller court. Lorsque le signal apparaît, entrez sur le marché pour trader, sans attendre la fermeture ou la prochaine ligne K.
  4. Stop loss - à long terme, les transactions qui n'arrêtent pas la perte ne réussiront pas, mais la plupart des traders détiennent des positions à perte et essaient de prendre des risques pour espérer que le marché se retourne. Les règles de la tortue stipulent strictement quand se retirer de la position de perte. Si vous détentez des ordres de position longue et que le prix chute de 2 unités, la position longue est fermée avec un stop loss. Si vous détentez un ordre de position courte et que le prix augmente de 2 unités, la position courte sera fermée avec un stop loss.
  5. Stop profit - Dans les règles de la tortue, le stop profit signifie perdre beaucoup de bénéfices flottants, ce qui est également inacceptable pour de nombreux traders. Si vous détenez actuellement des ordres de position longue et que le prix tombe en dessous de la piste du canal Donchian de dix jours, fermez tous les ordres longs; Si l'ordre de position courte actuel est maintenu et que le prix dépasse la piste du canal Donchian de dix jours, fermez toutes les positions courtes.

Ainsi, nous pouvons voir que bien que les règles de trading Turtle semblent très simples, en fait, il a formé un sens réel du prototype du système de trading. Il couvre tous les aspects d'un système de trading complet, ne laissant aucune place pour les traders à prendre des décisions subjectives imaginatives, ce qui rend simplement les avantages du fonctionnement programmé du système jouer, y compris: règles d'entrée et de sortie, gestion de fonds et contrôle des risques, etc.

Le plus grand avantage de la méthode de trading de tortue est de nous aider à établir un ensemble de méthodes de trading efficaces. Il s'agit d'une combinaison d'ouverture de lot, de stop profit dynamique et de stop loss, et de la stratégie de suivi de tendance du marché, en particulier l'utilisation de la valeur ATR et le concept de gestion de position, ce qui vaut la peine d'être appris. Bien sûr, il a également un problème commun avec la stratégie de suivi de tendance, à savoir le profit flottant et la récupération. Il est probable que tous les bénéfices flottants obtenus en achetant les gagnants seront retirés en raison de la vague suivante de chutes brusques. Il est très fort dans la tendance générale, et pas aussi bon que prévu sur le marché volatil.

3. Développer une stratégie future de CTA dans la pratique

3.1 Élaboration d'une stratégie de tendance des CTA basée sur MyLanguage

À la fin du siècle dernier, une méthode de trading très étonnante a commencé à prévaloir dans le domaine de l'investissement financier aux États-Unis. Après des milliers de personnes ayant pratiqué, les gens ont constaté que cette méthode avait une efficacité et une grande valeur pratique. En même temps, elle a été reconnue par de nombreux experts en investissement et traders professionnels. Jusqu'à présent, elle peut être parfaitement appliquée à presque tous les domaines d'investissement financier, qu'il s'agisse de devises, d'or, d'actions, de contrats à terme, de pétrole brut ou d'indice et d'obligations, qui est une méthode d'opération de chaos.

Le mot chaos fait référence à la description de l'état chaotique de l'univers à l'origine. Son idée est que le résultat est inévitable, mais parce que les connaissances existantes ne peuvent pas calculer le résultat, parce que le calcul lui-même change également le résultat, le résultat maximum ou minimum peut apparaître enfin, mais il n'y a pas de résultat inévitable. C'est très similaire au marché de négociation. Les participants changent également le marché lorsqu'ils analysent le marché et achètent et vendent. Le marché a une variabilité éternelle. Lorsque les participants comprennent la nouvelle forme du marché, le marché comprend également qu'il est reconnu par les participants, de sorte que la variation se produit. Et il aura tendance à changer dans la direction inconnue des participants. Il a suffisamment de sagesse pour empêcher les participants de saisir ses règles de changement, c'est-à-dire que le marché n'est pas stable et que la compréhension du passé du marché ne peut pas représenter l'avenir.

La méthode d'opération du chaos est un ensemble complet d'idées d'investissement, de stratégies de trading et de signaux d'entrée et de sortie, inventé par Bill Williams. À l'heure actuelle, de nombreux investisseurs dans le monde adoptent l'opération du chaos pour participer aux transactions de marché.

Comme son nom l'indique, la base théorique de la méthode d'opération du chaos est la théorie du chaos, proposée par le météorologue Edward Lorenz. C'était l'une des plus grandes découvertes scientifiques de la fin du XXe siècle. Il a proposé le célèbre "effet papillon". Bill Williams a appliqué la théorie du chaos au domaine de l'investissement financier de manière créative, combinée à la géométrie fractale, à la dynamique non linéaire et à d'autres disciplines, et a créé une série d'indicateurs d'analyse technique très efficaces.

L'ensemble de la méthode d'opération Chaos est composée de cinq dimensions principales (indicateurs techniques):

  • Le crocodile

  • Le fractal

  • L'élan

  • Accélération

  • La ligne d'équilibre

img

L'Alligator est un ensemble de lignes d'équilibre utilisant la géométrie fractale et la dynamique non linéaire. Son essence est d'étendre la moyenne mobile pondérée exponentiellement, qui est une sorte de ligne moyenne, mais sa méthode de calcul est légèrement plus compliquée que la ligne moyenne ordinaire.

// Parameters
N1:=11;
N2:=21;

// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;

// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);

D'abord, nous définissons 2 paramètres externes N1 et N2, puis calculons la moyenne HL du prix le plus élevé et du prix le plus bas selon les paramètres externes, puis calculons la moyenne HL avec différents paramètres. Pour les dents, c'est la moyenne de la période moyenne de la ligne médiane, et la mâchoire est la moyenne de la grande période de la ligne médiane.

Dans la méthode de l'opération chaos, un concept de fractal est défini de manière vivante. Nous pouvons faire une analogie: ouvrir la paume de la main, avec les doigts tournés vers le haut, le doigt du milieu est le fractal supérieur, le petit doigt gauche et l'anneau, et respectivement l'index droit et le pouce, représentent la ligne K sans record de hauteur. Un fractal de base est composé de ces cinq lignes K. Vous pouvez alors définir le fractal avec le code suivant:

// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;

TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);

MAX_YRG^^MAX(MAX(Y,R),G); 
MIN_YRG^^MIN(MIN(Y,R),G); 

TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);

Après avoir calculé l'alligator et le fractal, nous pouvons écrire une stratégie d'opération de chaos simple basée sur ces deux conditions, et utiliser un groupe de lignes moyennes mobiles pondérées exponentiellement comme prix de référence pour calculer l'indice d'alligator et de fractal.

// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);

// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);

Pour faciliter la compréhension, j'ai écrit les commentaires détaillés dans le code directement.

  • Position d'ouverture longue: si aucune commande de position longue n'est en cours, et que le prix de clôture monte en dessous de la fractale supérieure, et que la fractale supérieure est au-dessus de l'alligator.
  • Position d'ouverture courte: si aucune commande de position courte n'existe actuellement et que le prix de clôture tombe en dessous de la fractale inférieure et que la fractale inférieure est en dessous de la fractale alligator.
  • Position de clôture longue: si le prix de clôture tombe en dessous du menton d'alligator.
  • Position de clôture courte: si le prix de clôture dépasse le menton d'alligator.

Ensuite, voyons à quoi ressemblent réellement les résultats de ce backtest de stratégie d'opération de chaos simple. Afin de rendre le backtest plus proche de l'environnement réel du marché, la commission est réglée à deux fois le taux de change et les positions d'ouverture et de fermeture sont soumises à un point de glissement de deux sauts chacune. Le type de données du backtest est l'indice de la barre d'armature et le type de trading est la force principale continue de la barre d'armature, avec une position d'ouverture fixe de 1 lot. Voici le rapport préliminaire de performance du backtest au niveau de 1 heure.

img

En ce qui concerne les variétés de barres d'armature, la tendance est à la volatilité élevée et à la tendance à la volatilité générale.

En un mot, l'essence de la méthode d'opération du chaos est de trouver un tournant, sans se soucier de la façon dont le marché se déroule ou s'il s'agit d'une véritable ou fausse rupture.

3.2 Élaboration d'une stratégie d'arbitrage CTA basée sur le langage JavaScript

George Soros a proposé une proposition importante dans The Alchemy of Finance écrit en 1987: Je crois que les prix du marché sont toujours faux dans le sens où ils présentent une vision biaisée de l'avenir. Il croyait que l'hypothèse de l'efficacité du marché n'est qu'une hypothèse théorique. En fait, les participants au marché ne sont pas toujours rationnels et à chaque moment, les participants ne peuvent pas obtenir et interpréter objectivement toutes les informations. De plus, même s'il s'agit de la même information, les commentaires de tout le monde sont différents. C'est-à-dire que le prix lui-même contient déjà les mauvaises attentes des participants au marché, donc en substance, le prix du marché est toujours faux.

Selon les principes ci-dessus, nous pouvons savoir que dans un marché des contrats à terme inefficace, la raison pour laquelle l'impact du marché sur les contrats de livraison à différentes périodes n'est pas toujours synchrone et la tarification n'est pas complètement efficace.

Comme les contrats à terme sur matières premières, la monnaie numérique possède également un portefeuille de contrats d'arbitrage interpériodique. Par exemple, dans l'échange OKEX, il y a: ETC la semaine en cours, ETC la semaine prochaine, ETC trimestre. Par exemple, supposons que la différence de prix entre la semaine en cours d'ETC et le trimestre d'ETC reste autour de 5 pendant longtemps. Si la différence de prix atteint 7 un jour, nous nous attendons à ce que la différence de prix revienne à 5 à l'avenir. Ensuite, nous pouvons vendre ETC cette semaine et acheter ETC trimestre en même temps pour réduire la différence de prix, et vice versa.

Bien que cette différence de prix existe, il existe de nombreuses incertitudes dans l'arbitrage manuel en raison des opérations manuelles chronophages, de la mauvaise précision et de l'impact des changements de prix.

Ce cours vous apprendra à utiliser la plateforme de trading FMZ Quant et le contrat à terme ETC sur l'échange OKEX pour démontrer comment saisir les opportunités d'arbitrage instantanées, saisir les bénéfices qui peuvent être vus à chaque fois et couvrir les risques pouvant être rencontrés dans le trading de devises numériques avec une stratégie d'arbitrage simple.

Créer une stratégie d'arbitrage interpériodique pour la monnaie numériqueDifficulté: normale

Environnement stratégique

  • Objet de la transaction: Ether classique (ETC)
  • Données sur les écarts: semaine courante ETC - trimestre ETC (omettre le test de cointégration)
  • Durée de la transaction: 5 minutes
  • Durée de la transaction: 5 minutes
  • Type d'opération: période transversale du même type

La logique de la stratégie

  • Conditions d'ouverture des positions avec une différence de prix longue: si le compte courant n'a pas de positions et que la différence de prix est inférieure à la limite inférieure de la boule, alors la différence de prix longue. c'est-à-dire acheter des positions d'ouverture ETC pour la semaine, vendre des positions d'ouverture ETC pour le trimestre.
  • Conditions d'ouverture des positions avec une réduction de la différence de prix: s'il n'y a pas de position dans le compte courant et que la différence de prix est supérieure à la limite supérieure de la boule, alors réduire la différence de prix.
  • Conditions pour la clôture des positions avec longueur de la différence de prix: si le compte courant détient des ordres longs d'ETC dans la semaine en cours et détient des ordres courts de trimestre d'ETC, et que la différence de prix est supérieure à la limite du milieu de la boule, alors clôturer long la différence de prix. c'est-à-dire vendre des positions de clôture d'ETC pour la semaine, acheter des positions de clôture d'ETC pour le trimestre.
  • Conditions de clôture des positions avec une réduction de la différence de prix: si le compte courant détient des ordres courts d'ETC pendant la semaine en cours et des ordres longs pendant le trimestre ETC, et que la différence de prix est inférieure à la limite du milieu de la boule, alors réduire la différence de prix. c'est-à-dire acheter des positions de clôture d'ETC pour la semaine, vendre des positions de clôture d'ETC pour le trimestre.

Ce qui précède est une description logique simple de la stratégie d'arbitrage de période croisée de la monnaie numérique.

function Data() {}  // Basic data function
Data.prototype.mp = function () {}  // Position function
Data.prototype.boll = function () {}  // Indicator function
Data.prototype.trade = function () {}  // Order placement function
Data.prototype.cancelOrders = function () {}  // Order withdrawal function
Data.prototype.isEven = function () {}  // Processing single contract function
Data.prototype.drawingChart = function () {}  // Drawing function

function onTick() {
    var data = new Data(tradeTypeA, tradeTypeB);  // Create a basic data object
    var accountStocks = data.accountData.Stocks;  // Account balance
    var boll = data.boll(dataLength, timeCycle);  // Calculate the technical indicators of boll
    data.trade();  // Calculate trading conditions to place an order
    data.cancelOrders();  // Cancel orders
    data.drawingChart(boll);  // Drawing
    data.isEven();  // Processing of holding individual contract
}

//Entry function
function main() {
    while (true) {  // Enter the polling mode
        onTick();  // Execute onTick function
        Sleep(500);  // Sleep for 0.5 seconds
    }
}

Imaginez à quoi ressemble notre processus de négociation dans le trading de surveillance. Il n'y a pas de différence essentielle dans les transactions du système. Il ne s'agit que d'acquérir des données, de calculer des données, de placer une transaction d'ordre et de traiter après avoir placé un ordre. Il en va de même dans le programme. Tout d'abord, le programme exécutera la fonction principale à la ligne 20, qui est une convention. Lorsque le programme terminera le pré-traitement de la stratégie de négociation (le cas échéant), il entrera en mode boucle infinie, c'est-à-dire le mode de sondage.

Ensuite, dans la fonction onTick, c'est notre processus de négociation dans la transaction subjective: d'abord, obtenir les données de prix de base, puis obtenir le solde du compte, puis calculer l'indice, puis calculer les conditions de négociation et passer la commande, et enfin le traitement après avoir passé la commande, y compris l'annulation de la commande, le tirage et le traitement d'un seul contrat.

Le cadre stratégique peut être facilement mis en place en fonction de l'idée stratégique et du processus de transaction.

  • Pré-traitement avant la transaction.
  • Obtenez et calculez les données.
  • Faites une commande et traitez-la plus tard.

Ensuite, nous devons remplir le code de détail nécessaire dans le cadre de la stratégie en fonction du processus de transaction réel et des détails de la transaction.

I. Pré-traitement avant la transaction

1. Déclarer les variables globales nécessaires dans le champ d'application global.

  • Déclarer un objet graphique pour le graphique de configuration
var chart = {}
  • Appeler la fonction Graphique et initialiser le graphique
var ObjChart = Chart ( chart )
  • Déclarer un tableau vide pour stocker les séries de différence de prix
var bars = []
  • Déclarer une variable d'horodatage des données de l'historique des enregistrements
var oldTime = 0

2. Configurer les paramètres externes de la stratégie.

var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity

3. Définir la fonction de traitement des données

  • Fonction de base de données: Données Créez un constructeur, Data, et définissez ses propriétés internes, y compris: les données de compte, les données de position, le timestamp des données de ligne K, le prix d'achat/vente du contrat d'arbitrage A/B et la différence de prix d'arbitrage positif/négatif.
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
    this.accountData = _C(exchange.GetAccount); // Get account information
    this.positionData = _C(exchange.GetPosition); // Get position information
    var recordsData = _C(exchange.GetRecords); // Get K-line data
    exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
    var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
    exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
    var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
    this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
    this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
    this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
    this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
    this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
    // Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
    // Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
  • Obtenez la fonction de position: mp ()) Traversez l'ensemble du tableau de positions et retournez la quantité de position du contrat et de la direction spécifiés. Sinon, retournez faux.
Data.prototype.mp = function (tradeType, type) {
    var positionData = this.positionData; // Get position information
    for (var i = 0; i < positionData.length; i++) {
        if (positionData[i].ContractType == tradeType) {
            if (positionData[i].Type == type) {
                if (positionData[i].Amount > 0) {
                    return positionData[i].Amount;
                }
            }
        }
    }
    return false;
}
  • Ligne K et fonction d'indicateur: boll ((() Une nouvelle séquence de lignes K est synthétisée selon les données d'arbitrage positif/différence de prix d'arbitrage négatif. Les données de piste supérieure, piste moyenne et piste inférieure calculées par l'indicateur de boll sont renvoyées.
Data.prototype.boll = function (num, timeCycle) {
    var self = {}; // Temporary objects
    // Median value of positive arbitrage price difference and negative arbitrage price difference
    self.Close = (this.basb + this.sabb) / 2;
    if (this.timeA == this.timeB) {
        self.Time = this.time;
    } // Compare two depth data timestamps
    if (this.time - oldTime > timeCycle * 60000) {
        bars.push(self);
        oldTime = this.time;
    } // Pass in the price difference data object into the K-line array according to the specified time period
    if (bars.length > num * 2) {
        bars.shift(); // Control the length of the K-line array
    } else {
        return;
    }
    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
    return {
        up: boll[0][boll[0].length - 1], // boll indicator upper track
        middle: boll[1][boll[1].length - 1], // boll indicator middle track
        down: boll[2][boll[2].length - 1] // boll indicator down track
    } // Return a processed boll indicator data
}
  • Fonction de commande: commerce Passer dans le nom de contrat de l'ordre et le type de l'ordre, puis placer l'ordre avec contrepartie, et retourner le résultat après avoir placé l'ordre.
Data.prototype.trade = function (tradeType, type) {
    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
    var askPrice, bidPrice;
    if (tradeType == tradeTypeA) { // If the order is placed in contract A
        askPrice = this.askA; // set askPrice
        bidPrice = this.bidA; // set bidPrice
    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B
        askPrice = this.askB; // set askPrice
        bidPrice = this.bidB; // set bidPrice
    }
    switch (type) { // Match order placement mode
        case "buy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        case "sell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closebuy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closesell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        default:
            return false;
    }
}
  • Annuler les commandes Fonction: annuler les commandes Obtenez un tableau de toutes les commandes en suspens et annulez-les une par une. En outre, false est retourné s'il y a une commande non remplie, et true est retourné s'il n'y a pas de commande non remplie.
Data.prototype.cancelOrders = function () {
    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
    if (orders.length > 0) { // If there are unfilled orders
        for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
            Sleep(500); // Delay 0.5 seconds
        }
        return false; // Return false if an unfilled order is cancelled
    }
    return true; // Return true if there are no unfilled orders
}
  • Gérer la tenue d'un seul contrat: isEven ((() Dans le cas d'une seule étape dans la transaction d'arbitrage, nous allons simplement fermer toutes les positions.
Data.prototype.isEven = function () {
    var positionData = this.positionData; // Get position information
    var type = null; // Switch position direction
    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
    if (positionData.length % 2 != 0 || positionData.length != 2) {
        for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
            if (positionData[i].Type == 0) { // If it is a long order
                type = 10; // Set order parameters
            } else if (positionData[i].Type == 1) { // If it is a short order
                type = -10; // Set order parameters
            }
            // Close all positions
            this.trade(positionData[i].ContractType, type, positionData[i].Amount);
        }
    }
}
  • Fonction de dessin: dessin Appeler la méthode ObjChart Add (), dessiner les données de marché et les données d'indicateur nécessaires dans le graphique: piste supérieure, piste moyenne, piste inférieure, différence de prix d'arbitrage positif/négatif.
Data.prototype.drawingChart = function (boll) {
    var nowTime = new Date().getTime();
    ObjChart.add([0, [nowTime, boll.up]]);
    ObjChart.add([1, [nowTime, boll.middle]]);
    ObjChart.add([2, [nowTime, boll.down]]);
    ObjChart.add([3

Relationnée

Plus de