Comment simuler une opération avec effet de levier?
Les basesTous les scripts de stratégie écrits en Pine Script™ v4 et plus supportent nativement la simulation du trading à effet de levier, c'est-à-dire l'emprunt auprès d'un courtier pour ouvrir des positions plus importantes avec des montants de capital plus faibles. Avec le trading à effet de levier, il est possible pour les traders de passer des ordres plus importants que le solde de leur compte ne le permettrait autrement, tant que le compte du trader conserve la marge requise pour soutenir le prêt. REMARQUE : l'effet de levier amplifie les profits et les pertes potentiels. Les traders doivent toujours faire preuve de prudence et évaluer soigneusement leur goût du risque avant d'utiliser l'effet de levier dans le cadre d'une négociation en direct. Les stratégies Pine Script™ déterminent les montants de l'effet de levier appliqués aux transactions longues et courtes simulées via les entrées "Marge pour les positions longues" et "Marge pour les positions courtes" dans l'onglet "Propriétés" des paramètres du script. Ces entrées définissent le pourcentage minimum de la valeur d'une position requis dans le solde du compte pour que la stratégie simule l'ouverture et le maintien de la position.Par exemple, une valeur de "Marge pour les positions longues" de 20 % signifie que la simulation exigera que 20 % de toute position longue soit couverte par le solde disponible de la stratégie, les 80 % restants étant couverts par le courtier émulé. Étant donné qu'une position longue ne nécessite qu'un cinquième de sa valeur pour être financée par le compte, la stratégie peut simuler des positions longues jusqu'à cinq fois son solde disponible. En d'autres termes, ce niveau de marge (1:5) augmente l'effet de levier de la stratégie à 5:1.Si une transaction avec ce niveau de marge perd suffisamment d'argent pour mettre en péril les fonds du courtier, le courtier émulé déclenchera un appel de marge et liquidera une partie ou la totalité de la position ouverte afin de libérer du capital. Voir les sections ci-dessous pour plus d'informations. NOTE : Les programmeurs peuvent définir les valeurs de marge par défaut dans leurs scripts de stratégie via les paramètres `margin_long` et `margin_short` de la fonction `strategy()`. Les détailsLorsqu'un trader emprunte auprès d'un courtier pour augmenter son pouvoir d'achat, le courtier lui demandera d'avoir un montant minimum de capital sur son compte à utiliser comme collatéral, autrement appelé marge. En d'autres termes, la marge est la partie de la position que le trader doit couvrir avec son propre capital pour que le courtier puisse couvrir le reste.La marge allouée à une transaction est le produit de la valeur de marché de la position et du ratio de marge (c'est-à-dire la réciproque du ratio d'effet de levier souhaité).Supposons que le cours actuel de l'EURUSD soit de 1,05 et que nous souhaitions simuler l'achat d'un lot standard (100 000 unités) sans emprunter de fonds au courtier (c'est-à-dire en utilisant un effet de levier de 1:1). Dans ce cas, nous fixons la "Marge pour les positions longues" à 100 %, en demandant à la stratégie de passer des ordres en utilisant uniquement ses fonds disponibles. Par conséquent, le compte doit disposer d'au moins 105 000 USD (1,05 * 100 000) pour faciliter la transaction. Supposons maintenant que nous souhaitions simuler la même opération avec un effet de levier de 20:1. Dans ce cas, le ratio de marge est de 1:20 (5 %). Le fait de fixer la "marge pour les positions longues" à 5 % spécifie que le solde du compte doit représenter au moins 5 % de la valeur de la position pour simuler la réception des 95 % restants de la part du courtier. Le solde minimum du compte (marge) requis pour faciliter cette transaction est de 5 % de 105 000 (5 250 USD). Contrairement à l'exemple qui ne repose pas sur les fonds du courtier, l'ouverture d'une position avec un effet de levier de 20:1 dans un contexte réel comporte un risque de perte pour le titulaire du compte et le courtier. Si la position ouverte perd plus que le solde du compte ne peut couvrir, le courtier demandera plus de fonds au trader ou liquidera de force une partie ou la totalité de la position ouverte pour couvrir les pertes. Le testeur de stratégie représente les scénarios de liquidation forcée comme des événements d'"appel de marge".Notre Broker Emulator traite ces scénarios dans les résultats de la stratégie en liquidant quatre fois le montant requis pour couvrir la perte dans la simulation, évitant ainsi des appels de marge constants sur les barres de graphique suivantes.REMARQUE : les opérations à découvert consistent généralement à emprunter des actions, des unités, etc. au courtier et à les vendre plus tard à un autre prix. La valeur de la position représente le coût d'achat d'un nombre équivalent d'actions, d'unités, etc. pour les rendre. En tant que telles, les transactions à découvert perdent de l'argent lorsque les prix augmentent. Contrairement aux positions longues, la perte potentielle sur une position courte n'est pas plafonnée, car il n'y a pas de limite définie à la hausse du prix d'un instrument. Par conséquent, même avec une marge de 100 %, une position courte court le risque d'une liquidation forcée.Strategies can also simulate unconventional margin requirements. For example, one could use a "Margin for long positions" value of 200%, meaning the simulated account must have at least twice the position's value to facilitate the trade and maintain the position. This setting effectively limits the maximum position size to 50% of the strategy's equity.It's important to note that the margin settings of a strategy script allow it to validate position sizes. When disabling margin requirements by setting them to 0%, the script can simulate positions of any size, regardless of the actual capital available in the simulation, which can produce misleading results. Therefore, we do not recommend setting the "Margin for long positions" or "Margin for short positions" values to 0%.Manque de fondsLe principal inconvénient de l'effet de levier est qu'il augmente le risque de manquer de fonds. Les positions fermées de force par un courtier réduisent considérablement la capacité d'un trader à récupérer ses pertes et peuvent accélérer l'épuisement de son compte. Le testeur de stratégie représente les positions fermées de force comme des événements d'"appel de marge". La formule qui régit le moment où un appel de marge se produit est la suivante :CurrentEquity <= MarginRequiredLa valeur CurrentEquity est le montant du capital dont dispose la stratégie simulée à un moment précis, y compris le profit ou la perte de la position ouverte. La marge requise est le capital dont le compte a besoin pour maintenir la position. Lorsque les fonds propres actuels ne suffisent pas à financer la position ouverte, un appel de marge se produit.La formule pour le CurrentEquity est PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit, où :
- PriceChange est la différence entre le prix actuel et le prix d'entrée de la position ouverte.
- La direction est 1 si la position est longue ou -1 si elle est courte.
- PointValue est la somme d'argent que représente un mouvement de prix d'un nombre entier. Pour la plupart des symboles, la valeur est de 1, à l'exception des contrats à terme, où un changement de 100 à 101 peut signifier que la valeur a changé de 50 USD au lieu de 1 USD, auquel cas la valeur du point sera de 50.
- AbsPositionSize est la taille de la position actuelle. Cette valeur est toujours positive, même si les scripts de stratégie représentent les transactions courtes par des nombres négatifs sur le graphique.
- InitialCapital + NetProfit est le montant total des capitaux propres de la stratégie avant l'ouverture de la position actuelle.
plot(strategy.margin_liquidation_price)
GenericS'il est nécessaire de calculer le prix manuellement, on peut transformer l'équation de la section précédente en la formule suivante :MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * EntryPrice) / (MarginPercent / 100 - Direction)La valeur MarginLiquidationPriceRaw résultante est ensuite arrondie vers le haut (pour les positions courtes) ou vers le bas (pour les positions longues) au prix le plus proche divisible par la valeur de tick minimale du symbole. Remarquez que l'expression entière est divisée par (MarginPercent / 100 - Direction). Si la direction est Longue et que la MarginLong% est 100, le diviseur sera 0, et la MarginLiquidationPriceRaw résultante ne pourra pas être atteinte en raison de la division par zéro. Ce comportement est cohérent avec l'idée qu'un courtier ne peut pas liquider de force une position longue avec une marge de 100 %.Avec la stratégie hypothétique décrite dans la section précédente, ce calcul donnera : ((1000 + 0) / (1 * 40) - 100) / (20 / 100 - 1) = 93,75, qui est le premier prix qui justifiera un appel de marge. Puisque 93,75 est divisible par la taille du tick de GOOG de 0,01, l'arrondi basé sur le tick minimum n'a pas d'effet dans ce scénario.Notez qu'il n'est pas garanti que l'événement d'appel de marge se déclenche à ce prix calculé au cours de la simulation.Calcul de la taille de la liquidationLe montant précis d'une position liquidée par un événement d'appel de marge dépend du prix auquel il se produit. Comme indiqué ci-dessus, l'émulateur de courtier liquide quatre fois le montant nécessaire pour couvrir la perte, ce qui permet de s'assurer que ces événements ne se déclenchent pas l'un après l'autre. Nous utilisons l'algorithme suivant pour calculer le montant de la liquidation :1. Calculer l'argent dépensé, c'est-à-dire le capital dépensé pour ouvrir la position.Taille de la position * Prix d'entrée2. Calculer la valeur de marché du titre (MVS).Taille de la position * Prix actuel3. Calculer le profit ouvert. Si la direction de l'opération est courte et que le profit ouvert est un nombre positif, le résultat devrait toujours être négatif, nous multiplions donc la valeur absolue de notre calcul par -1.ABS(MVS - Argent dépensé) * -14. Calculer les capitaux propres, c'est-à-dire le capital disponible dans la simulation.Capital initial + Bénéfice net + Bénéfice ouvert5. Convertir le pourcentage de marge en ratio de marge.Pourcentage de marge / 1006. Calculer la marge, c'est-à-dire le montant requis sur le compte pour couvrir la part de la position ouverte revenant au trader.MVS * Ratio de marge7. Calculer les fonds disponibles, c'est-à-dire le montant de l'argent perdu que le trader ne peut pas couvrir avec ses fonds propres actuels.Fonds propres - Marge8. Calculez le montant total d'argent que le trader a perdu.Fonds disponibles / Ratio de marge.9. Calculez le nombre d'actions, d'unités, etc. que la stratégie devrait liquider pour couvrir la perte. Nous tronquons la valeur à la même décimale que la taille minimale du contrat pour le symbole actuel.TRUNCATE(Étape #8 / Prix actuel)10. Calculer le nombre d'actions, d'unités, etc. que le courtier liquidera pour couvrir la perte. Notre courtier émulé vend quatre fois le montant nécessaire pour s'assurer qu'un appel de marge n'est pas constamment déclenché si les pertes se poursuivent. Cette valeur sera positive pour les transactions à découvert car le courtier achète des unités pour couvrir la perte au lieu de les vendre.Étape n° 9 * 4Pour examiner ce calcul en détail, ajoutons la stratégie Supertrend intégrée au graphique NASDAQ:TSLA sur l'échelle de temps "1D" et fixons la "Taille de l'ordre" à 300 % des capitaux propres et la "Marge pour les positions longues" à 25 % :La première entrée a eu lieu au prix d'ouverture de la barre le 16 septembre 2010. La stratégie a acheté 682 438 actions (Taille de la position) à 4,43 USD (Prix d'entrée). Ensuite, le 23 septembre 2010, lorsque le prix a chuté à 3,9 (prix actuel), l'émulateur a liquidé de force 111 052 actions via l'événement Appel de marge.1. Argent dépensé : 682438 * 4.43 = 3023200.342. MVS : 682438 * 3.9 = 2661508.23. Profit ouvert : -361692.144. Fonds propres : 1000000 + 0 - 361692.14 = 638307.865. Ratio de marge : 25 / 100 = 0,256. Marge : 2661508.2 * 0.25 = 665377.057. Fonds disponibles : 638307.86 - 665377.05 = -27069.198. Argent perdu : -27069.19 / 0.25 = -108276.769. Actions pour couvrir la perte : TRUNCATE(-108276,76 / 3,9) = TRUNCATE(-27763,27) = -2776310. Taille de l'appel de marge : -27763 * 4 = - 111052