Repository navigation
[QC-research] Probabilistic Sharpe Ratio (#17112) #18359
Description
Article source
- URL : https://www.quantconnect.com/research/17112/probabilistic-sharpe-ratio/
- Auteur(s) : republication du post de forum « Probabilistic Sharpe Ratio » de Jack Simonson (QC staff) ; code exécutable en QuantBook embarqué dans la page. La page research porte la mention « pending review » (0 upvote) mais le contenu intégral (prose + notebook 21 Ko) est public et lisible.
- Catégorie putative : risk / pedagogy (métrique de performance)
- Date de publication : republication ;
lastmod2024-11-06 (post d'origine ~2019, fenêtre de données 2019-08→2024-05)
Lecture analytique
Ce que l'article annonce
Le Sharpe observé est un estimateur ponctuel : le PSR de Bailey & López de Prado (2012) donne la probabilité que le vrai Sharpe dépasse un seuil SR* choisi, en corrigeant l'erreur-type par l'asymétrie et la kurtose des rendements. Trois démonstrations : (1) un panier equal-weight de 10 valeurs avec SR 0,07 vs benchmark SPY 0,05 n'a que 77 % de chances d'être réellement supérieur ; (2) l'exemple « zéro-compétence » (SR 0,458, n=29) : significatif à 95 % sous gaussianité, plus significatif dès que l'on compte skew −2,448 / kurtose 10,164 ; (3) l'anatomie de sensibilité — le PSR monte avec SR, la longueur d'échantillon et l'asymétrie positive, descend avec la kurtose. Point méthodologique central : aucune annualisation — le PSR se calcule à la fréquence native des rendements, ce qui en fait la métrique préférable pour les stratégies à fréquences irrégulières.
Sources primaires citées / à vérifier
- Bailey, D. H. & López de Prado, M. — The Sharpe Ratio Efficient Frontier (2012), SSRN 1821643, DOI 10.2139/ssrn.1821643 — source de la formule PSR.
- López de Prado, M. & Lewis, M. J. — Detection of False Investment Strategies Using Unsupervised Learning Methods (2018), SSRN 3167017 — source de l'exemple zéro-compétence (SR 0,458, skew −2,448, kurt 10,164).
- Mertens, E. — Comments on variance of the IID estimator in Lo (2002) — normalité asymptotique de l'estimateur de Sharpe même sous non-gaussianité.
Variances mesurées entre l'article et sa propre source (lecture du code embarqué, pas du résumé) :
- Convention de kurtose incohérente dans le code de l'article. La formule de Bailey–López de Prado utilise la kurtose brute γ₄ (gaussienne = 3, terme
(γ₄−1)/4). Les fonctionszero_skill_normal()/zero_skill_non_normal()de l'annexe respectent cette convention (3 et 10,164). Mais la classeBuyAndHold.get_psr()appellescipy.stats.kurtosis()sansfisher=False— kurtose excédentaire (gaussienne = 0) — injectée dans une formule qui attend la brute : le terme(γ₄−1)/4vaut−1/4au lieu de1/2pour des rendements gaussiens. L'exemple phare de l'article (PSR 0,765) est donc calculé avec une erreur de convention dans son propre code. C'est un piège reproductible pour l'étudiant : scipy dit Fisher par défaut. - Balayage de kurtose physiquement impossible.
varying_kurtosis()balaie la kurtose de −3 à +47 : la kurtose brute est ≥ 1 par construction ; la plage n'a de sens qu'en convention excédentaire, alors que la formule du même bloc utilise la convention brute — mélange des deux conventions dans la même cellule.
Différenciation vs bouquet existant
- Filtre :
docs/qc/qc-strategies-status.md— le PSR y est la métrique d'edge de toute la flotte (25 tranches de verdicts « PSR < 50 % »), mais les nombres viennent du moteur LEAN (statistique rapportée parqc-mcp-lite), jamais dérivée devant l'étudiant. - Projets voisins :
Python/QC-Py-12b-Backtest-Validity.ipynb§3 — couvre déjà la formule PSR (convention brute correcte) et la leçon du seuilSR₀(PSR(0) vs PSR benchmarké rapporté par QC) ;ML-Training-Pipeline/scripts/L5_vol_targeted_composite.py:345— implémentation de production correcte (kurtosis(..., fisher=False), fréquence native quotidienne, benchmark désannualisésr0 = sharpe_ann/√252) + DSR ;- PR enrich(qc): add Inverse-Vol vs ERC + PSR section to Risk-Parity notebook (See #1405) #2846 (section PSR Risk-Parity) et docs(qc-py-15): add academic citations for walk-forward/PSR/data-snooping/PBO (See #3164) #3477 (citations PSR dans qc-py-15).
- L'article est-il redondant ? PARTIELLEMENT — le cœur de la formule et la leçon du seuil sont déjà dans 12b §3. Trois apports ne sont nulle part dans le bouquet : (a) le piège de convention kurtose Fisher/Pearson, démontrable sur le code même de l'article ; (b) le point « pas d'annualisation » — la
psr()actuelle de 12b prend un Sharpe annualisé +n_years, saisie sous laquelle les termes γ₃·SR et γ₄·SR² opèrent à la mauvaise échelle et déforment matériellement le PSR sous non-normalité (à quantifier dans le notebook) ; (c) l'anatomie de sensibilité (PSR vs longueur d'échantillon / skew / kurtose / benchmark).
Verdict
- CONSOLIDATION
- PÉDAGOGIQUE — l'article documente un concept à intégrer dans un cours existant. Notebook à modifier :
MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-12b-Backtest-Validity.ipynb. Pas de nouveau notebook. Enrichissement de §3 : calcul par-période vs saisie annualisée (distorsion quantifiée), piège de convention kurtose sur le code de l'article comme pièce forensique, courbes de sensibilité, la chaîne de sources primaires (SSRN 1821643 / 3167017 / Mertens 2002) et le renvoi à l'implémentation de production correcte (L5_vol_targeted_composite.py— copie pédagogique déclarée). - NOUVEAU
- IGNORE
Acceptance locale
- Article lu en entier (prose + notebook embarqué 21 Ko extrait du JSON de la page et lu cellule par cellule)
- Voisinage
docs/qc/qc-strategies-status.mdre-vérifié (PSR = métrique flotte via LEAN, aucune dérivation pédagogique existante) - Sources primaires identifiées (3) et tracées
- Verdict coché avec justification
- PR associée : #18362 (enrichissement QC-Py-12b)
Liens
- Epic parent : #11698
- Source de vérité voisinage :
docs/qc/qc-strategies-status.md
Activity
jsboige commentedon Sep 29, 2026
[CLAIMED] lane myia-po-2025:CoursIA -- article #17112 (Probabilistic Sharpe Ratio) : verdict PEDAGOGIQUE, enrichment QC-Py-12b -- paths: MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-12b-Backtest-Validity.ipynb, docs/qc/qc-research-seeded.json
jsboige commentedon Sep 29, 2026
PR associee (verdict PEDAGOGIQUE) : #18362 -- enrichment QC-Py-12b section 3bis, re-exec 36/36, ratchets verts. Case acceptance PR cochee a la livraison.
enrich(qc-research,#18359): QC-Py-12b section 3bis -- pieges de saisi…