qaudit

Méthode qaudit — version 1.0

Ce document décrit intégralement la méthode appliquée par qaudit à un historique de trades : les tests, leurs seuils, les règles de décision, les détecteurs de défauts et leurs paramètres. Il est généré automatiquement depuis le fichier de configuration de la méthode : ce qui est écrit ici est exactement ce qui est calculé.

Trois principes. (1) Le moteur calcule tout ce que les données fournies permettent ; l'offre achetée ne change que ce qui est montré, jamais le verdict. (2) Aucune note globale : chaque test a un seuil fixé à l'avance, un seul test échoué suffit à un NO-GO. (3) Déterminisme : mêmes données, même version de méthode, même graine → même rapport à l'octet près, vérifiable par quiconque dispose du fichier.

Les cinq barrières

Cinq barrières éliminatoires. Une barrière est « déclenchée » (échouée) quand sa valeur franchit le seuil dans le sens indiqué ; une valeur dans la bande d'indécision rend le verdict mais impose une revue humaine (porte E3) ; une barrière non calculable faute de données devient une condition (jamais un succès).

BarrièreQuestion poséeSeuil NO-GOBande d'indécision
Sharpe dégonflé (DSR)Le hasard est-il écarté ?< 50,0 %[45,0 % ; 55,0 %]
Profit factor, 5ᵉ centile du bootstrap par blocsEt avec de la malchance ?< 1,00[0,95 ; 1,05]
Centile du drawdown observé parmi les permutations d'ordreLes pertes arrivent-elles groupées ?< 5,00[3,00 ; 8,00]
p-value contre la nulle sans edgeUn système sans avantage ferait-il aussi bien ?≥ 5,0 %[3,0 % ; 8,0 %]
Efficacité walk-forward hors échantillonTient-il hors des périodes où il a été réglé ?< 40,0 %[35,0 % ; 50,0 %]

Le hasard est-il écarté ?

Sharpe dégonflé (Bailey & López de Prado). Le ratio de Sharpe mesure la régularité des gains. Le PSR est la probabilité que le vrai Sharpe soit positif compte tenu du nombre de trades, de l'asymétrie et des queues de la distribution. Le DSR évalue cette probabilité contre le meilleur Sharpe attendu au hasard après N essais (N déclaré par le demandeur, sinon défaut de la méthode) ; la variance des Sharpe entre variantes, si elle n'est pas fournie, est approchée prudemment (approximation de Lo, signalée). Le rapport imprime la courbe du DSR pour N = 1 à 1 000 et le point de bascule.

Et avec de la malchance ?

Profit factor au 5ᵉ centile du bootstrap par blocs stationnaires (Politis–Romano, longueur de bloc automatique). Les trades sont rééchantillonnés par blocs pour préserver leur dépendance sérielle ; le profit factor est recalculé sur chaque rééchantillon. La barrière regarde le 5ᵉ centile : ce que donnerait la même stratégie dans les scénarios défavorables. Sous 1,00, elle perd de l'argent dans ces scénarios.

Les pertes arrivent-elles groupées ?

Centile du drawdown observé parmi les permutations d'ordre. Les mêmes trades sont réordonnés aléatoirement ; le profit total est invariant, seul le drawdown change. Le centile est la part des permutations dont le drawdown est inférieur ou égal à celui observé. Un centile très bas signale une courbe trop régulière pour être crédible (ordre arrangé, sélection) ; un centile très haut n'est pas éliminatoire mais signale des pertes groupées, imprimées comme telles.

Un système sans avantage ferait-il aussi bien ?

p-value contre la nulle « sans edge ». Des systèmes sans aucun avantage sont simulés en conservant les distributions empiriques des gains et des pertes et en neutralisant seulement la fréquence de réussite (taux d'équilibre p₀ = |perte moyenne| / (gain moyen + |perte moyenne|)). La p-value est la part de ces systèmes qui atteignent au moins le profit net observé. Ce n'est pas une nulle de marché efficient : la question posée est « le taux de réussite observé est-il explicable par la chance, à profil de gains/pertes donné ? ».

Tient-il hors des périodes où il a été réglé ?

Efficacité walk-forward. Le demandeur fournit un jeu de résultats par paramètres testés ; la méthode découpe la période en plis (protocole ancré ou glissant), sélectionne sur chaque pli le paramétrage selon le critère fixé, et mesure la performance du paramétrage sélectionné sur le pli suivant, jamais vu. L'efficacité est le rapport de la performance hors échantillon à la performance dans l'échantillon. L'auditeur n'exécute aucune stratégie : il compare des résultats fournis.

Règles de décision

Il n'existe ni pondération ni score composite : les barrières ne se compensent pas.

Détecteurs structurels

Onze détecteurs structurels examinent la façon de trader. Huit fonctionnent sans série de prix ; trois (géométrie du stop, look-ahead, réalisme d'exécution) exigent les cotations OHLC de l'instrument et sont déclarés « non exécutés » sinon. Chaque détecteur émet un constat de gravité info, mineur, majeur ou bloquant selon les paramètres ci-dessous ; un détecteur qui ne peut pas tourner le dit.

DétecteurCe qu'il détecteParamètres
Mise augmentée après les pertes (martingale)Augmentation du volume après une perte (rapport de volume ≥ ratio_min), sur une part des trades post-perte ; contraste exigé avec le comportement après gain.ratio_min = 1,5, min_events = 10, major_share = 0,3, blocking_share = 0,6, contrast_min = 0,15
Positions empilées contre le marché (grid)Ajout de positions à une position perdante de même sens à prix pire, refermées ensemble (panier) ; part des trades concernés.min_depth = 1, major_share = 0,15, blocking_share = 0,35, min_trades = 20, basket_close_seconds = 120
Trades sans stop de protection (no_stop)Part des trades sans stop-loss renseigné.minor_share = 0,1, major_share = 0,5
Profit porté par quelques trades (profit_concentration)Part du gain brut apportée par les meilleurs trades (top_fraction) ; profit net une fois retirés les meilleurs (remove_fraction).top_fraction = 0,05, share_major = 0,7, remove_fraction = 0,01, min_trades = 30
Courbe de gains trop régulière (equity_linearity)Courbe d'equity anormalement linéaire : R² contre l'indice du trade au-dessus de r2_major.r2_major = 0,995, min_trades = 50
Beaucoup de petits gains, quelques grosses pertes (payoff_asymmetry)Taux de réussite très élevé combiné à un ratio gain moyen / perte moyenne très faible.win_rate_major = 0,85, payoff_major = 0,2, win_rate_blocking = 0,95, payoff_blocking = 0,1, min_trades = 30
Résultat dû à une seule période (period_dependence)Part du profit net apportée par un seul trimestre, sur au moins min_periods trimestres.min_periods = 4, share_major = 0,8
Durées de position irréalistes (holding_time)Durées de position irréalistes : part des trades de moins de min_seconds, ou de plus de max_days.min_seconds = 1, short_share_major = 0,1, short_share_blocking = 0,5, max_days = 365, long_share_minor = 0,1
Stop trop sensible (stop_geometry)Avec prix : part du gain brut qui disparaît si le stop est resserré de 10 %, 20 %, 30 %.collapse_major = 0,5, min_trades = 30, min_aligned_share = 0,5
Entrées trop parfaites (lookahead)Avec prix : part des entrées exactement au plus bas / plus haut de leur barre, testée contre le hasard (p-value).tick_bps = 1, min_share = 0,05, p_major = 0,01, p_blocking = 0,001, min_aligned_share = 0,5, min_trades = 30
Prix d'exécution impossibles (execution_realism)Avec prix : part des prix d'entrée ou de sortie hors de la fourchette haut–bas de leur barre (tolérance en points de base).tolerance_bps = 3, minor_share = 0,01, major_share = 0,05, blocking_share = 0,2, min_aligned_share = 0,5

Les paramètres sont nommés comme dans le fichier de méthode ; les parts sont des fractions (0,30 = 30 %).

Simulations et paramètres

Entrées

Entrée obligatoire : les trades clos (heure d'ouverture, heure de clôture, profit net ; utiles : volume, sens, symbole, prix, stop, ticket, commission, swap). Entrées optionnelles : série de prix OHLC (active les trois détecteurs à prix et les régimes par ATR), un jeu de résultats par paramètres testés (active la barrière walk-forward), un règlement propfirm structuré (active le rejeu), le nombre de variantes essayées (N ; défaut de la méthode sinon).

Ce que la méthode ne teste pas

Versionnement

Version courante : 1.0. Tout changement d'un seuil, d'une bande ou d'un paramètre de détecteur crée une nouvelle version de méthode ; la version est imprimée dans chaque rapport et chaque attestation, qui ne valent que pour elle.

Reproduire un rapport

Pour reproduire un rapport : le même fichier de trades (son empreinte SHA-256 est imprimée), la même version de qaudit et de méthode, la même graine (imprimée). La commande « qaudit render --from archive.json » régénère les livrables depuis l'archive sans aucun recalcul et produit les mêmes octets que l'audit d'origine.