Un backtest présente un chemin réalisé sous ses hypothèses ; une simulation explore des chemins produits par un modèle choisi. L’ordre, le tirage, les coûts et la taille peuvent modifier le drawdown. Avant de lancer des milliers de scénarios, construisez un parcours calculable à la main et dites ce que signifie un arrêt de l’essai.

Permutation, remise et modèle paramétrique

Une permutation d’une liste de résultats monétaires fixes garde ses valeurs et sa somme. Un tirage avec remise peut répéter ou omettre une valeur, donc changer le total. Un modèle paramétrique produit des issues à partir de probabilités et montants stipulés. Déclarez lequel vous utilisez ; l’étiquette Simulation de Monte-Carlo ne définit pas la distribution.

Source : capital initial 1 000 unités, résultats +200, −100, −100. Parcours 1 000→1 200→1 100→1 000 ; drawdown maximal 200/1 200≈16,67 %. Ordre −100, −100, +200 : 1 000→900→800→1 000, drawdown 20 %. Le départ est un sommet possible : l’omettre sous-estimerait le second chemin. Les deux finissent pourtant au même montant.

Un arrêt peut changer le résultat final d’une permutation

Autre modèle source USD : +300, −150, −150, somme zéro ; départ 1 000 et contrôle après chaque résultat entier, arrêt si capital ≤850. A monte 1 300, revient 1 150 puis 1 000. B commence par −150, atteint 850 et s’arrête : les deux autres résultats ne sont pas exécutés. Ajouter toute la liste après cet arrêt modéliserait une autre règle.

La liste tirée n’est pas la liste exécutée

La liste tirée n’est pas la liste exécutéeModèle USD : capital 1 000, stop après un résultat laissant 850 ou moins. A exécute +300, −150, −150 et finit 1 000. B commence par −150 et termine à 850 ; les résultats −150, +300 restants ne sont pas exécutés.Contrôle après chaque résultat entierAFin : 1 000 USDBArrêt : 850 USDLa suite grise est un essai terminé, pas des trades à zéro.
Deux chemins fictifs ne mesurent aucune probabilité. La règle d’arrêt fait partie du modèle, séparément du mélange des résultats.

Faites défiler horizontalement ou agrandissez le schéma pour lire les détails.

Quelles distributions veut-on décrire ?

Calculez drawdown maximal sur chaque chemin complet, puis les quantiles de ces maxima. Une bande de quantiles du capital à chaque rang n’est pas elle-même un chemin exécuté. Pour une perte représentée positivement, la queue défavorable utilise par exemple le 95 e centile du drawdown ; pour le capital final, on regarde plutôt les faibles centiles. Convention de quantile et interpolation influencent une distribution discrète.

Modèle théorique source : 200 trades indépendants, probabilité de gain 0,55, gains fixes 100 EUR, pertes fixes 80 EUR. Moyenne par trade 0,55 × 100−0,45 × 80=19 EUR, total moyen 3 800. Si K compte les gains, profit terminal 180 K−16 000. Avec quantile défini par le plus petit K dont la probabilité cumulée atteint le seuil, profits aux centiles 1/5/50/95 : 920/1 640/3 800/5 960 EUR. Ce sont des valeurs de distribution calculées, pas les résultats revendiqués d’une expérience ou d’un compte réel.

Un tableur avec état initial conservé

Exercice Excel en français, selon séparateur de liste configuré : A 1=0,55 ; A 2=100 ; A 3=−80 ; A 4=10000. C 1 contient =$A$4, D1 =C1, E 1 zéro. La première ligne n’est pas un trade. En B 2 : =SI(ALEA()<$A$1;$A$2;$A$3) ; C 2 =C1+B2 ; D 2 =MAX(D1;C2) ; E 2 =(D2-C2)/D2. Copiez B 2:E 2 jusqu’à la ligne 201 pour exactement 200 trades.

Dans Excel anglais, les équivalents sont =IF(RAND()<$A$1,$A$2,$A$3) et =MAX(D1,C2). Les références $A$ restent fixes. C 201 est le capital final, =MAX(E1:E201) le drawdown maximal du chemin. Pour un autre essai, copiez tout le bloc et son état initial. Cet horizon de 200 trades n’est pas automatiquement une année.

Sur la liste des maxima de drawdown, =CENTILE.INCLURE(plage;0,95), ou =PERCENTILE.INC(range,0.95) en anglais, peut interpoler. Un faible centile du capital répond à une autre question. ALEA recalcule : sauvegardez les valeurs tirées et les hypothèses pour répéter exactement l’étude. Rien dans ces formules ne définit encore marge minimale, insolvabilité ou arrêt de stratégie.

Bootstrap Python et comparaison contrôlée

Sur une histoire non vide de résultats monétaires nets, rng.choice(history, size=200, replace=True) tire avec remise. Incluez le capital initial : equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). Calculez sommets courants et drawdowns avant d’agréger. Archivez données, graine, versions, horizon, frais, taille et arrêts. Plus de chemins réduit le bruit du calcul, pas l’incertitude sur les régimes absents de l’histoire.

Comparaison source à tirage uniforme U : issue +1 si U<p, sinon −1, seuils hypothétiques A=0,55 et B=0,60. Espérances 0,10 et 0,20 ; différence moyenne 0,10. Avec le même U, différence B−A=+2 uniquement pour 0,55≤U< 0,60, sinon zéro : variance 4 × 0,05−0,10²=0,19. Tirages indépendants : variances 0,99+0,96=1,95. Le partage réduit le bruit de cette comparaison précise, sans valider les probabilités de marché ni garantir une réduction pour toute stratégie.

Rééchantillonner des trades individuels casse leur ordre et les grappes de pertes. Des blocs ou scénarios de stress peuvent répondre à d’autres hypothèses, mais une histoire limitée ne révèle pas toutes les queues futures. Résultats fixes en monnaie et budgets recalculés sur fonds propres sont deux règles de taille différentes ; mélangez-les seulement avec une justification explicite.

Limites et coûts au voisinage d’un seuil

Cas EUR indépendant : mêmes montants de prix +300, −150, −150, départ 1 000 et arrêt ≤850, mais frais supplémentaires 5 EUR après chaque trade exécuté. A fait 1 295→1 140→985 ; B fait 845 puis s’arrête. Oublier les frais changerait à la fois le résultat final et le niveau exact de franchissement. Le contrôle reste après le pas entier : il n’invente pas une liquidation intratrade exactement à 850.

Les coûts changent le franchissementModèle EUR distinct : 5 EUR de frais supplémentaires à chaque pas exécuté.EXEMPLE DE CALCULOrdre favorable1 295→1 140→985 EURPerte d’abord845 EUR, arrêtÀ conserverTirés / exécutés
Les coûts changent le franchissement. Modèle EUR distinct : 5 EUR de frais supplémentaires à chaque pas exécuté.

La règle agit sur le capital net après le pas, pas sur une liste brute.

Ordre favorable
1 295→1 140→985 EUR – Trois pas exécutés.
Perte d’abord
845 EUR, arrêt – −150−5 au premier pas.
À conserver
Tirés / exécutés – Deux listes distinctes.

La méthode Monte-Carlo n’exige pas toujours indépendance ou distribution stable : ce sont les hypothèses du modèle simple, à remplacer et vérifier si nécessaire. Rééchantillonner n’invente pas un choc jamais observé. Dans le modèle idéal où chaque perte enlève exactement 5 % du capital actuel, après n pertes il reste capital initial× 0,95ⁿ, positif pour n fini ; seuil pratique, minimum de marge ou perte plus grande changent cette conclusion.

Un quantile simulé n’est ni plafond garanti ni plancher prouvé du risque réel. Walk-forward : fenêtres, labels disponibles et égalités peut organiser des périodes successives de développement et évaluation ; il ne rend pas à nouveau inconnues des données déjà consultées. Aucun percentile ou nombre de simulations n’autorise automatiquement un déploiement.

Protocole de première utilisation

  1. Définissez histoire, unités, coûts, couverture et taille ; ne tradez pas seulement pour atteindre cent observations.
  2. Reproduisez les chemins de trois résultats à la main, seuil compris, puis vérifiez le programme sur ces cas.
  3. Enregistrez un jeu de tirages et son état initial avant d’en produire d’autres ; séparez erreur de calcul et adéquation du modèle.
  4. Inspectez la queue défavorable, les cas manquants et les variantes essayées. Toute modification de l’histoire, des coûts ou de la taille demande une nouvelle comparaison définie.

Une médiane plus faible n’identifie pas à elle seule une détérioration causale de la stratégie. MAE et MFE : mesurer le chemin sans inventer une meilleure sortie aide à vérifier les mesures d’origine ; conservez ces contrôles séparément des distributions générées.