Corrige les résultats de portefeuille en redimensionnant les transactions pour tenir compte de la croissance du portefeuille lors de la combinaison de stratégies. Affiche les courbes d'equity d'origine et redimensionnées avec détection automatique des soldes et analyse du drawdown.
Vue d'ensemble
StrategyQuant X génère les résultats de portefeuille en fusionnant plusieurs stratégies et en empilant les P&L de leurs transactions sur un solde de départ unique. C'est rapide et simple, mais cela introduit une distorsion systématique : chaque stratégie a été backtestée de manière isolée, en ajustant la taille de ses positions à son propre compte (par ex. 1 % de 100 000 $). Une fois fusionné, le portefeuille se développe, mais la taille des transactions individuelles ne s'ajuste jamais pour refléter le solde combiné plus important. Une stratégie qui ouvrait une position de 1 000 $ lorsque le portefeuille était à 100 000 $ continue d'ouvrir une position de 1 000 $ lorsque le portefeuille a atteint 400 000 $. La position ne représente plus qu'un quart de ce que serait réellement un risque de 1 %.
Ce plugin rejoue chronologiquement l'historique complet des transactions du portefeuille en appliquant un facteur d'échelle à chaque transaction, de sorte que la position de chaque stratégie soit toujours dimensionnée par rapport au solde actuel combiné du portefeuille plutôt qu'à son propre solde de départ isolé. Le résultat présente deux courbes d'equity côte à côte : Originale (correspondant exactement à SQX) et Redimensionnée (ce que la capitalisation correcte aurait produit), accompagnées d'un graphique comparatif des drawdowns en dessous.

Fonctionnalités
- Reproduit fidèlement la courbe de portefeuille originale de SQX pour vous offrir une base de référence vérifiée à des fins de comparaison
- Rejoue le portefeuille avec un redimensionnement correct par transaction, où chaque ordre est mis à l'échelle selon le ratio : solde actuel du portefeuille ÷ solde isolé de l'algo à ce moment précis
- Affiche un graphique des drawdowns en % pour les deux courbes afin de visualiser les périodes de baisse et de vérifier si le redimensionnement les atténue ou les amplifie
- Détecte automatiquement tous les soldes de départ à partir des données d'ordres : le solde initial du portefeuille et le solde de départ isolé de chaque algo sont lus directement depuis le premier ordre de chaque stratégie ; aucune saisie manuelle requise
- Prend en charge un plafond de lots maximum afin d'afficher la courbe sous contrainte réelle, adaptée aux limites de position des prop firms
- Filtre par plage de dates avec initialisation dynamique (warm-start). Limitez la vue à n'importe quelle sous-période ; les transactions antérieures à la période sont rejouées pour amener tous les soldes à leur état réel avant le début de la fenêtre
- L'option « Réindexer au début » normalise les deux courbes sur le point de départ d'origine pour toute plage sélectionnée, rendant deux périodes comparables directement sur un pied d'égalité
Fonctionnement
Les soldes initiaux sont détectés automatiquement. Le solde de départ du portefeuille est calculé selon la formule firstOrder.Balance − firstOrder.ProfitLoss. Le solde initial isolé de chaque stratégie est détecté de la même manière à partir du tout premier ordre de cette dernière (identifié par ResultName).
La courbe Originale correspond à une simple restitution : débuter avec le solde du portefeuille détecté et ajouter chronologiquement le ProfitLoss d'origine de chaque transaction. Elle doit correspondre exactement au profit net, au solde final et au drawdown indiqués par SQX. Si ce n'est pas le cas, le solde de départ détecté est erroné.
La courbe Redimensionnée utilise le même solde initial, puis pour chaque transaction :
scaleFactor = currentPortfolioBalance ÷ algoIsolatedBalance
scaledPL = originalPL × scaleFactor
Le solde isolé de l'algo est mis à jour après chacune de ses propres transactions (isoBal += originalPL) afin que le ratio reflète l'évolution qu'aurait eue le compte de cette stratégie de façon isolée. Si un plafond de lots max est défini, le facteur d'échelle est limité afin que la position théorique ne dépasse jamais maxLots ÷ originalLotSize.
Le drawdown en % est calculé indépendamment du drawdown en $, exactement comme le fait SQX : la perte en pourcentage la plus importante (crête à creux ÷ crête locale) et la perte en montant la plus importante sont mesurées séparément sur l'ensemble de l'historique des transactions et affichées dans le tableau des statistiques.
Hypothèses
- Les stratégies utilisent un dimensionnement de position basé sur un pourcentage (par ex. 1 % de risque par transaction)
- Si les stratégies utilisent des tailles de lot fixes, le facteur d’échelle modifie le P&L notionnel mais pas le nombre réel de lots. La courbe rééchelonnée aura un aspect différent mais ne reflétera pas ce que vous pourriez réellement exécuter.
- Le champ Balance dans les ordres de portefeuille représente le solde de compte isolé par stratégie (et non le solde combiné du portefeuille)
- C’est ce que le plugin utilise pour détecter le capital initial de chaque algo et suivre son évolution. Si SQX enregistre le solde glissant au niveau du portefeuille dans ce champ, les facteurs d’échelle par algo seront incorrects. Validez en vérifiant que les capitaux de départ détectés pour les algos correspondent bien aux soldes initiaux de votre stratégie.
- Toutes les stratégies utilisent la même devise de base
- Les valeurs de P&L sont additionnées et mises à l’échelle en unités monétaires brutes ; les portefeuilles multi-devises ne sont pas pris en charge.
- La détection du solde initial suppose qu’aucun trade n’a été clôturé avant le tout premier ordre figurant dans les données
- Si l’exportation des données est tronquée (par exemple, si vous visualisez un segment Out-of-Sample), le solde initial détecté sera celui du début de ce segment, et non le capital initialement configuré.
Limites et inconvénients
La courbe rééchelonnée est une simulation, pas un backtest. Le facteur d’échelle est appliqué au P&L d’origine, qui a été calculé à l’aide de tailles de lots fixes. En réalité, trader un lot plus important aurait eu un impact de marché différent et aurait pu faire évoluer le prix en votre défaveur d’une autre manière. Cet effet est négligeable pour les instruments liquides et les petits comptes, mais il peut être significatif pour les marchés illiquides ou les très grandes positions.
Les trades qui se chevauchent ne sont pas gérés. Le rééchelonnement part du principe que chaque trade est indépendant. Si deux stratégies maintiennent des positions simultanément, l’exposition combinée à un moment donné est la somme des deux positions mises à l’échelle — le plugin ne vérifie pas si cela franchirait les limites de marge ou d’exposition.
Le plafond de lots maximum est appliqué par trade, et non par position ouverte. Si plusieurs stratégies ont des trades ouverts simultanément, chacun est plafonné individuellement, mais le nombre total de lots ouverts sur l’ensemble des positions simultanées n’est pas limité.
Le drawdown est mesuré uniquement au moment de la clôture des trades. Les fluctuations de capitaux propres en cours de trade (drawdown latent) ne sont pas visibles dans les données d’ordres. Le drawdown maximum rapporté peut être inférieur à celui qui serait observé sur une courbe des capitaux propres tick par tick.
Les stratégies à lots fixes ne montreront aucune différence significative entre Original et Rééchelonné — le facteur d’échelle modifie le gain/la perte théorique en dollars, mais pas le comportement réel de la stratégie face au risque.
Ceci est conçu pour vous donner une idée de la façon dont le risque de votre portefeuille évoluera véritablement, car la valeur du Drawdown dans les résultats de StrategyQuant n’est pas exacte avec le Risque %