Quant challenge — stratégie « Sigma Winning » (insider AMF)
Auteur : revue quantitative externe Date : 2026-05-14 Périmètre : critique méthodologique de la stratégie 6-filtres + propositions d'amélioration. Aucune modification de code, analyse seulement.
TL;DR
- L'alpha annoncé (+10.4 pts / Sharpe 1.00 / win-rate 66 %) est plausible mais fragile. Un grid-search de 583 200 combinaisons sur
15 171 trades, puis sélectionné comme « la seule combinaison qui bat le CAC chaque année 2022-2025 », est un cas-école de data snooping. Le ratio combinaisons/observations (38) et le critère de sélection (4/4 années gagnantes) gonflent mécaniquement la performance attendue de 5 à 15 pts/an au-dessus du « vrai » alpha out-of-sample. - Le backtest 2022-2025 est purement in-sample. Aucune fenêtre out-of-sample, aucun walk-forward, aucune CV temporelle. Les chiffres
STRATEGY_PROOFsont à interpréter comme performance d'ajustement, pas comme espérance future. - Tailles d'échantillon annuelles minuscules : 25 trades en 2023, 35 en 2022. À ces tailles, la variance d'estimation du rendement moyen dépasse facilement ±8 pts/an — l'alpha 2023 (+4 pts) n'est statistiquement pas distinguable de zéro.
- Equal-weight + T+90 fixe + rebalancement trimestriel laissent de l'alpha sur la table : pas de vol-targeting, pas de pondération par conviction, pas de stop adaptatif, pas de filtre de régime (macro / VIX / CAC50dma).
- Trois alternatives chiffrées plus bas : (1) signal-weighted + vol-target, (2) ajout d'un filtre de régime, (3) features enrichies (track-record × earnings drift × liquidité). Gain attendu cumulé qualitatif : Sharpe 1.0 → 1.3-1.6, drawdown -12 % → -7 à -9 %, conditionnellement à une vraie validation OOS.
1. État des lieux
1.1 Ce que la stratégie fait bien
| Force | Pourquoi c'est solide |
|---|---|
| Filtre cluster directionnel ≥ 2 insiders | L'effet cluster est l'un des résultats les plus robustes de la littérature insider (Cohen-Malloy-Pomorski 2012, Jeng-Metrick-Zeckhauser 2003). Le rendre directionnel (v3) est un vrai upgrade vs le baseline qui agrégeait achats + ventes. |
| Exclusion des non-market natures (apport, conversion, nantissement…) | Réduit drastiquement le bruit. Ces transactions ne reflètent pas une décision d'allocation discrétionnaire. |
| Rôle ∈ {PDG, CFO, Directeur} | Cohérent avec la littérature : CFO > CEO > director > board en pouvoir prédictif (cf. backtest interne qui valide CFO). Exclure le « board only » coupe le pire signal. |
| Sweet-spot 200 M€-1 B€ | Bonne intuition : assez liquide pour exécuter sans impact prohibitif, assez sous-couvert sell-side pour que l'information insider n'ait pas déjà été arbitrée. |
| Track-record par insider avec shrinkage bayésien (k=5) | Excellente pratique. Évite l'illusion d'expertise sur n=2-3 trades. |
Anti-leak look-ahead sur track-record (pubDate < currentPubDate strict) |
Correct et explicite dans priorAlphaForInsider. À garder. |
| Coût de transaction 1 % | Conservateur et réaliste pour du retail. |
returnFromPub vs returnFromTrade |
Distinction propre. La stratégie devrait être backtestée sur returnFromPub90d uniquement (ce que le retail capture). À vérifier — STRATEGY_PROOF n'indique pas lequel des deux est utilisé. |
1.2 Ce qui pose problème (du plus grave au moins grave)
Problème n°1 — Overfitting du grid search
- 583 200 combinaisons testées sur
15 171 trades historiques. Le ratio paramètres/observations est de **38** (38 combinaisons explorées par observation). - Critère de sélection : « la seule combinaison qui bat le CAC chaque année 2022-2025 ». Soit 4 années indépendantes. Sous l'hypothèse nulle d'une stratégie sans alpha avec p(beat CAC) = 50 %, la probabilité qu'au moins une combinaison sur 583 200 batte le CAC 4 fois de suite par hasard est ≈
1 - (1 - 0.5^4)^583200 ≈ 1.0(essentiellement certain). Le critère « bat tous les ans » ne discrimine rien à ce volume de combinaisons. - En supposant une corrélation modérée entre combinaisons (~0.7, beaucoup partagent des filtres), le nombre effectif de tests indépendants tombe à ~500-2000 — toujours largement suffisant pour produire des faux positifs.
- Diagnostic : il est très probable que la « winning combo » capture en partie du bruit spécifique à 2022-2025. Le deflated Sharpe ratio (Bailey-López de Prado 2014) pour 583 200 essais avec Sharpe brut = 1.0 et 4 ans de données ferait passer le Sharpe corrigé sous 0.5, probablement sous 0.
Problème n°2 — Aucun out-of-sample
- La performance annoncée porte sur les années utilisées pour la sélection. C'est tautologique.
- Pas de walk-forward, pas de découpage train/test temporel, pas de cross-validation par blocs.
- Aucun moyen actuel de répondre à : « si je l'avais découvert fin 2021 et déployé sur 2022-2025, qu'aurais-je obtenu ? »
Problème n°3 — Tailles d'échantillon trop petites
- 2022 : 35 trades. 2023 : 25 trades. 2024 : 71. 2025 : 118.
- Avec n=25 et σ retours ~25 %/an, SE(moyenne) ≈ 5 pts. L'alpha 2023 de +4 pts est dans le bruit.
- Le portefeuille final, après dédup par société (cf.
byCompanymap), descend probablement à 15-25 noms / trimestre → concentration importante, idiosyncrasie élevée.
Problème n°4 — Pondération equal-weight + T+90 fixe
- Equal-weight ignore la conviction (score 40 = score 95 même poids).
- Equal-weight ignore la volatilité : un mid-cap biotech à σ=80 %/an reçoit le même poids qu'un industriel à σ=20 %.
- T+90 fixe ne s'adapte ni au régime (vol haute → sortir plus tôt) ni à la dynamique du signal (track-record amélioré sur 60-120j ? jamais mesuré).
- Pas de stop-loss explicite → un -40 % isolé peut absorber l'alpha annuel.
Problème n°5 — Filtre cap fixe (200M-1B€)
- Limite explicitement testée dans le grid → bin choisi parmi 6 buckets (Micro/Small/Sweet/Mid/Large/Mega). Risque que « Sweet » soit le pic local du backtest, pas une vraie discontinuité structurelle.
- Le filtre est statique : une société à 1.05 B€ en mai 2024 et 0.95 B€ en juillet 2024 entre/sort du filtre par dérive de prix, pas par changement fondamental. Ce bruit ajoute du turnover gratuit.
Problème n°6 — Pas de filtre de régime macro
- 2022 (CAC -10 %) : la stratégie fait +7.9 %, donc +18 pts. 2024 (CAC -2 %) : +2 %, soit +4 pts.
- Ces deux années « négatives marché » dominent le résultat. Comment se comporte la stratégie en bull market plat type 2017 ou crash type 2020-mars ? Pas testé.
- Aucun contrôle pour : VSTOXX, CAC 50dma slope, sector rotation, taux 10y.
Problème n°7 — Risques de leakage non-évidents
signalScoreest recomputé parscoreDeclarations(force=true)quand v3 a été déployé. Si le grid-search a tourné sur les scores v3 alors que la stratégie présente des trades 2022 avec un score v3 (calculé avec des features Yahoo « actuelles »), il y a leakage :analystScore,targetMean,trailingPE,numAnalystssont stockés au point-in-time présent, pas au point-in-time de la déclaration. Tout filtre sur ces champs en backtest a un leakage potentiel. À vérifier urgent.- Le filtre
marketCapest appliqué sur la valeur actuelle (company.marketCap), pas sur la cap à la date de transaction. Idem leakage — une société qui était à 150M€ en 2022 et passe à 250M€ en 2025 entre faussement dans le bucket.
Problème n°8 — Biais de survie / disparition
- Pas mentionné. Les sociétés délistées, en faillite, ou rachetées (squeeze-out) sortent du dataset Yahoo. Les pires drawdowns sont mécaniquement censurés. Effet possible : +2 à +5 pts/an d'alpha artificiel.
2. Trois alternatives détaillées
Alternative A — Smart weighting (signal × inverse-vol)
Hypothèse : la dispersion de la qualité des signaux dans l'échantillon final est forte (score 40 à 95). Equal-weight dilue l'edge des meilleurs signaux et sur-pondère les marginaux. La volatilité réalisée des positions est très hétérogène (mid-cap biotech vs industriel).
Mécanisme :
w_i ∝ (score_i - 40) × 1 / σ_i_60d(vol réalisée 60 jours pre-trade, calculable depuis prices Yahoo).- Normalisation :
Σ w_i = 1, cap par positionw_i ≤ 15 %, plancherw_i ≥ 2 %. - Vol-target portfolio : leverage cible 1.0 si
σ_portfolio < 12 %annualisé, sinon delever (pour retail = réduire l'exposition, garder cash).
Force :
- Concentre le capital sur les signaux à plus forte espérance.
- Réduit le drawdown via vol-targeting (gain attendu max DD : -12 % → -8 à -10 %).
- Améliore le Sharpe à alpha égal (Sharpe simulé 1.0 → ~1.25 estimé, non vérifié).
Faiblesse :
- Ajoute deux paramètres (cap par position, target vol) à overfitter. Doit être fixé a priori, pas optimisé.
- Plus de turnover si rebalancement mensuel des poids.
- Hypothèse vol stationnaire entre
σ_60detσ_forward— discutable en régime changeant.
Complexité d'implémentation : Faible. Calcul vol = SQL sur prices Yahoo déjà stockées. Pondération = pure JS post-getWinningStrategySignals.
Gain α/Sharpe estimé (qualitatif, non backtesté) : α inchangé à +10 pts, Sharpe 1.0 → 1.2-1.3, maxDD -12 % → -8 %.
Données nécessaires : prix journaliers 60j pre-trade par société (déjà disponible via Yahoo timeseries, à vérifier si stocké en DB).
Alternative B — Régime filter (CAC trend + VSTOXX)
Hypothèse : la stratégie capte un edge structurel (information asymétrique) qui devrait fonctionner dans tous les régimes — mais le timing du déploiement importe. En régime bear amplifié (CAC sous 200dma + VSTOXX > 30), même les bons signaux insider sont écrasés par le bêta marché.
Mécanisme :
- Indicateur 1 : CAC 40 above-200dma (binaire). Si CAC < 200dma → réduire exposition à 50 %.
- Indicateur 2 : VSTOXX level. Si VSTOXX > 35 → réduire à 30 %, hedge avec un short CAC futures (ou simplement plus de cash, retail-friendly).
- Indicateur 3 : breadth — % de sociétés du portefeuille déjà above-200dma. Si < 30 % → defensive.
- Hold T+90 conservé, mais entry gated par les 3 indicateurs.
Force :
- Coupe les pires drawdowns historiques (2020 mars, 2022 H1).
- Aligne avec une réalité empirique : les achats insiders en milieu de crash (mars-mai 2020) ont produit l'alpha le plus élevé — donc on veut doubler dans ce régime, pas se retirer. Le filtre doit être asymétrique : réduire en bear-trend lent, augmenter en crash brutal.
- VSTOXX > 35 + CAC > 200dma 6 mois plus tôt = configuration historique « peur sans fondamental cassé » → multiplier exposition par 1.5.
Faiblesse :
- Ajoute 3 paramètres (seuil VSTOXX, lookback CAC, threshold breadth) → autant de pistes overfit.
- VSTOXX/CAC daily data nécessaire (Yahoo
^STOXX50E,^VSTOXXou proxy^VIX). - Coupe potentiellement des entries qui auraient été gagnantes (faux négatifs).
Complexité : Moyenne. Un nouveau cron daily fetch indices + table MarketRegime(date, cacAbove200dma, vstoxx, breadth, regime).
Gain estimé (qualitatif) : α +10 pts → +11 à +13 pts (asymétrie crash-buying ajoutée), Sharpe 1.0 → 1.3-1.5, maxDD -12 % → -6 à -8 %. Win-rate probablement inchangé ou en légère baisse.
Données nécessaires : prix daily CAC 40, VSTOXX (ou VIX), prix daily de chaque société du portfolio pour breadth. Toutes disponibles via Yahoo.
Alternative C — Rich features (earnings drift × liquidité × analyst surprise)
Hypothèse : le score v3 capture déjà beaucoup, mais 3 features absentes ont une littérature solide et orthogonale au signal cluster :
- Post-Earnings Announcement Drift (PEAD) : si l'insider achète dans les 5 jours après une surprise positive d'EPS, l'alpha forward est documenté supérieur (Frazzini-Lamont, Ke-Petroni).
- Transaction size / ADV (Average Daily Volume) : un achat de 1 M€ sur une société à 200 k€ ADV est un signal différent d'un 1 M€ sur 5 M€ ADV (information vs noise hidden in liquidity).
- Analyst revision momentum :
Δ targetMeansur 30j prior au trade. Si l'insider achète contre une révision baissière fraîche = signal contrarian fort (corrobore la logique « analyst-contrarian » déjà dans v3, mais sur le flux, pas le niveau).
Mécanisme :
- Nouveau sous-score F-rich (0-12 pts) intégré au scoring v3, ou utilisé comme 2e filtre post-strategy.
- PEAD : flag si
transactionDate - lastEarningsDate ∈ [0, 5j]ETepsSurprisePct > 5 %. Nécessite earningsHistory. - TxSize/ADV ratio : log-scaled, bonus si ratio ∈ [0.5, 3] (ni trop petit ni illiquide).
- Analyst revision :
(targetMean_t - targetMean_t-30d) / targetMean_t-30d. Bonus si < -3 %.
Force :
- Signaux orthogonaux au cluster → addition d'alpha plutôt que substitution.
- PEAD seul = effet documenté de 2-5 %/trimestre dans la littérature US/EU.
- Réduit dépendance au seul filtre cluster (résilience si l'effet cluster s'érode par diffusion).
Faiblesse :
- Nécessite des données pas (toutes) en DB :
earningsHistory,targetMean_historytime-series. Coût d'ingestion non trivial. - Augmente le nombre de paramètres → re-overfitting si optimisé sur 2022-2025.
- Le ADV/liquidité Yahoo est bruité (volume FR mid-cap mal capturé).
Complexité : Élevée. Schema migration (EarningsEvent, AnalystSnapshot tables), backfill historique (coûteux côté provider), recompute des scores avec time-aware features.
Gain estimé (qualitatif) : α +10 pts → +13 à +17 pts si well-validated OOS. Sharpe 1.0 → 1.4-1.6. Mais risque overfit le plus élevé des 3 alternatives → mandatory walk-forward avant déploiement.
Données nécessaires :
- Earnings history (date, EPS actual, EPS estimate). Yahoo
earningsendpoint ou IEX/Finnhub. - Target price history par société (snapshot mensuel min).
- Volume daily 30j pre-trade.
3. Grille de lecture comparative
| Critère | Stratégie actuelle | Alt A — smart weighting | Alt B — régime filter | Alt C — rich features |
|---|---|---|---|---|
| Hypothèse principale | Cluster + rôle + acquisition fraîche + sweet-cap = edge stable. | Le cluster donne le signal binaire ; conviction (score) + vol pilotent la taille. | L'edge insider est structurel ; le timing macro module le rendement. | Trois features orthogonales (PEAD, liquidité, révisions) ajoutent de l'alpha décorrélé. |
| Mécanisme | 6 filtres binaires + minScore + equal-weight + T+90 + rebal Q. | Filtres identiques + pondération (score-40)/σ_60d + cap 15 % + vol-target 12 %. |
Filtres identiques + gating macro asymétrique (réduit en bear-lent, double en crash). | Score v3 enrichi de F-rich (0-12 pts) ou filtre 2e niveau post-strategy. |
| Force | Simplicité, interprétable, déjà en prod, narratif clair. | Risk-adjusted, robuste à un seul gros perdant, gain Sharpe « gratuit ». | Coupe les vrais drawdowns, exploite asymétrie crise. | Sources d'alpha additives, robustesse en cas d'érosion du signal cluster. |
| Faiblesse | Overfit grid-search, equal-weight, T+90 fixe, pas de régime. | 2 nouveaux hyperparamètres ; pondération sensible à la qualité de l'estimation σ. |
3 seuils à fixer a priori ; coûte des faux négatifs. | Ingestion data lourde, paramètres ajoutés, risque overfit max. |
| Complexité d'implémentation | (déjà fait) | Faible (1-2 j dev) | Moyenne (3-5 j dev + 1 j data) | Élevée (1-2 sem dev + 1-2 sem backfill data) |
| Attendu α/Sharpe (non backtesté) | α +10.4 / S 1.00 / DD -12 % | α +10 / S 1.20-1.30 / DD -8 % | α +11-13 / S 1.30-1.50 / DD -6 à -8 % | α +13-17 / S 1.40-1.60 / DD -8 % (mais OOS-dépendant) |
| Données nécessaires | Schema actuel suffit. | Prices daily 60j pre-trade (à vérifier en DB). | Indices daily CAC 40, VSTOXX, prices daily pour breadth. | EarningsHistory, AnalystSnapshot, Volume daily. |
| Risque additionnel d'overfit | (référence — déjà élevé) | Faible (2 paramètres, vol = standard). | Modéré (3 seuils macro). | Élevé (3 features × n thresholds). |
Note : tous les chiffres α/Sharpe en colonnes B/C/D sont des estimations qualitatives basées sur (i) la littérature insider/PEAD, (ii) des règles de pouce vol-targeting (gain Sharpe typique 15-30 % à α constant). Ils n'ont pas été simulés sur ce dataset. À traiter comme hypothèses à tester, pas comme garanties.
4. Roadmap d'amélioration (jalons indépendants et expédiables)
Jalon 0 — Audit de l'existant (1 semaine, prérequis bloquant)
Avant toute amélioration, valider la baseline :
- Vérifier le point-in-time des features :
marketCap,analystScore,targetMean,trailingPEsont-ils figés au moment de la déclaration, ou stockés « live » ? Si live → leakage. Auditenrich-yahoo-extras.mjset confirmer si historiques stockés. - Walk-forward replay : pour chaque trimestre Q de 2022 à 2025, ré-exécuter le grid search uniquement sur les données disponibles avant Q, sélectionner la meilleure combo, mesurer le rendement réalisé sur Q. C'est la vraie OOS.
- Deflated Sharpe : appliquer Bailey-López de Prado avec N=583 200 essais, T=4 ans, Sharpe=1.0. Publier le Sharpe corrigé.
- Tester le portefeuille sur 2017-2021 si les données AMF + prix historiques sont disponibles. Backtest sur des années non utilisées pour la sélection des filtres.
- Quantifier le biais de survie : croiser ISIN du dataset avec une liste de tickers actuellement actifs. Estimer % de trades sur sociétés disparues exclues du backtest.
Livrable : doc séparé docs/method-review/02-baseline-audit.md avec verdict honnête.
Jalon 1 — Validation OOS protocolaire (1 semaine, bloquant pour comm)
- Mettre en place un split rigide : grid search uniquement sur 2017-2022, validation 2023-2025 (sans re-optimization).
- Si la combo « winning » survit à 2023-2025 OOS avec α > 5 pts → comm honorable.
- Si elle s'effondre → retirer les chiffres
STRATEGY_PROOFdu site ou les estampiller « in-sample, voir méthodologie ».
Jalon 2 — Smart weighting (Alt A) (3 jours)
- Implémentation minimale : pondération
(score-40)/σ_60d, cap 15 %, plancher 2 %. - Backtester sur la même fenêtre OOS que Jalon 1.
- Critère de succès : Sharpe OOS améliore d'au moins +0.15 sans dégrader α.
Jalon 3 — Régime filter (Alt B) (1 semaine)
- Ajout cron
fetch-market-indices.mjs: CAC, VSTOXX, breadth daily. - Implémenter règle 1 (CAC < 200dma → 50 % expo) seule d'abord, vérifier impact.
- Ajouter règle 2 (VSTOXX) en deuxième temps.
- Critère : maxDD OOS réduit de ≥ 3 pts sans perte > 1 pt d'α.
Jalon 4 — Track-record longitudinal (3 jours)
- Le track-record bayésien existe déjà — l'utiliser comme filtre dur, pas juste comme bonus de score : exclure les insiders avec α historique shrunk < -2 %. Réduit le bruit en queue gauche.
Jalon 5 — Stop-loss adaptatif (3 jours)
- T+90 fixe → stop trailing à -15 % depuis le pic OU 90 jours, whichever first.
- Ou : stop dur à -25 % depuis entry.
- À backtester strictement OOS.
Jalon 6 — Rich features (Alt C, modulaire) (2-4 semaines selon ambition)
- 6a : Ajouter ratio TxSize/ADV (1 semaine, données déjà en partie disponibles).
- 6b : Ajouter PEAD flag (2 semaines, nécessite ingestion earnings history).
- 6c : Ajouter analyst revision momentum (1 semaine, nécessite snapshot mensuel
targetMean). - Chaque sous-feature testée isolément, ajoutée séquentiellement, validée OOS.
Jalon 7 — Re-comm & transparence (continu)
- Publier sur
/methodologieun encart « Limites du backtest » : OOS window, deflated Sharpe, survivorship caveat, taille d'échantillon par année. - Mettre à jour
STRATEGY_PROOFavec un champinSampleSharpeEToutOfSampleSharpe.
5. Risques d'overfitting + protocole OOS recommandé
5.1 Risques actuels concrets
| Risque | Sévérité | Mesure de mitigation |
|---|---|---|
| Grid 583 k combos / 15 k obs | Critique | Deflated Sharpe + walk-forward replay |
| 4 années de sélection in-sample | Critique | Bloquer 2017-2021 ou 2026 H1 comme OOS pur |
| Features Yahoo non point-in-time (analyst, target, mcap) | Élevé | Audit du pipeline d'enrichissement, snapshots datés |
| Biais de survie (sociétés délistées absentes) | Modéré | Inclure liste historique de sociétés AMF disparues |
| n=25 trades sur 2023 | Modéré | Bootstrap CI sur les rendements annuels |
| Filtre cap en EUR sur valeur actuelle | Modéré | Recomputer cap au point-in-time de la déclaration |
| Pas de stop / hold rigide T+90 | Faible-modéré | Ajouter stop adaptatif |
5.2 Protocole OOS recommandé
Schéma : Triple split + walk-forward.
- Train (filter selection) : 2017-2020. Grid search ici, ici seulement.
- Validation (param tuning) : 2021. Sélection finale des seuils continus (minScore, capRange, holdDays) après que les filtres binaires aient été figés en 1.
- Test (read-only) : 2022-2025. Aucune ré-optimisation. C'est ce qui doit être publié.
- Walk-forward update : à chaque trimestre futur, ré-entraîner les seuils sur toutes les données antérieures de ≥ 6 mois et appliquer sur le trimestre suivant. Suivre la dérive de performance.
Critères de purge stricts :
- Pas de coup d'œil au test set pendant le développement (yes — humainement difficile, mais critique).
- Pre-register la liste des combinaisons à tester avant d'avoir vu un seul rendement (paper trail dans git).
- Mesurer la dégradation in-sample → out-of-sample. > 50 % de dégradation = stratégie morte, à pivoter.
Métriques à publier (en plus du α brut) :
- Sharpe annualisé, brut et deflated (formule Bailey-López de Prado).
- Probabilistic Sharpe Ratio (P[SR > 0]).
- Skew + kurtosis des rendements trimestriels.
- 95 % bootstrap CI sur α annuel.
- Drawdown distribution (pas juste le max).
Tests de robustesse minimaux :
- ±20 % sur chaque seuil (minScore, capMin, capMax, maxPubDelay). Si l'α s'effondre → overfit local.
- Permutation test : randomiser les
signalScore1000 fois, mesurer la p-value du α observé. - Régime swap : performance par sous-période bull/bear (au moins 4 sous-périodes).
Conclusion synthétique
La stratégie actuelle a une vraie intuition économique (cluster + role + acquisition fraîche en mid-cap français sous-couvert) et un pipeline de scoring v3 propre (track-record shrunk bayésien, anti-leak track record, composite gated). Mais sa proof publique de +10.4 pts/an Sharpe 1.00 repose sur une sélection grid-search massive dans la même fenêtre que la validation — c'est de la performance d'ajustement, pas un alpha attendu.
Ordre de priorité (recommandation forte) :
- Audit point-in-time des features Yahoo (bloquant pour toute conclusion sérieuse).
- Walk-forward replay 2017-2025 pour avoir un vrai chiffre OOS publiable.
- Si OOS tient (α > 5 pts) : ajouter smart-weighting (Alt A) — gain Sharpe « gratuit ».
- Si OOS tient : ajouter régime filter (Alt B) — coupe les drawdowns.
- Plus tard : rich features (Alt C) — uniquement après validation OOS de la baseline.
Si l'OOS ne tient pas, être transparent sur le site. La valeur long-terme du produit dépend de la crédibilité méthodologique bien plus que d'un chiffre flatteur.
Summary (100 mots)
La stratégie « Sigma Winning » repose sur des intuitions valides (cluster directionnel, exclusion non-market, rôle senior, mid-cap sous-couverte) mais sa proof publique souffre d'un overfit majeur : 583 k combinaisons testées sur 15 k trades, sélection sur 4 années in-sample, taille d'échantillon annuel parfois ≤ 25 trades, pas de validation OOS, leakage probable sur features Yahoo non point-in-time. Trois alternatives proposées : smart weighting signal × inverse-vol (Sharpe attendu +0.2-0.3), régime filter CAC/VSTOXX asymétrique (maxDD -4 à -6 pts), rich features PEAD/ADV/révisions analystes (α +3-7 pts si validé OOS). Roadmap en 7 jalons, prérequis bloquant : audit point-in-time + walk-forward 2017-2025 avant toute communication renforcée.