NY Reversal H1 — fader l'extension du move London à l'ouverture NY
Stratégie reversal session-aware candidate. Mesurer le move directionnel London 08:00-12:00 UTC, puis fader la première H1 NY (13:00-14:00 UTC) si elle prolonge le move avant de clôturer en sens inverse. Setup conçu en miroir méthodologique de LonBO #12 (seule stratégie validée du repo) : contrainte temporelle forte + contexte session = filtre du bruit.
🛑🛑 STATUT au 2026-05-12 : REJETÉ OOS — pas d'EA livré. Backtest 8 ans 4 mois Dukascopy : 231 trades, expectancy IS −0.023 R / OOS +0.047 R (sous gate +0.20), hit rate 13.4% (très sous break-even RR=2.0 = 33.3%), max DD OOS −5.7 R. 2/4 gates échouent. Verdict détaillé :
mt5/AUDIT_2026-05-12_ny_reversal.md.Particularité vs les 4 rejets précédents : asymétrie LONG/SHORT révélée. SHORT seul a OOS +0.119 R (33 trades, hit 15.2%), LONG seul OOS −0.026 R. Pas suffisant pour atteindre le gate (toujours sous +0.20 R) mais signale un biais structurel EUR/USD intéressant.
Aucun EA MQL5 livré. La fiche reste comme référence méthodologique + point de départ pour d'éventuelles variantes v2 (SHORT-only, RR=1.5, filtre D1, exclusion 2018-2019). Chaque variante = nouveau cycle complet.
🛑 STATUT ORIGINEL : CANDIDATE — backtest gate à passer avant tout EA. Cette fiche décrit une stratégie candidate au registry Hermes V2+ (hors scope V1.5 strict qui fixe 4 stratégies actives). Aucune ligne d'EA MQL5 ne sera écrite avant que le backtest Dukascopy 2018-2026 passe les 4 gates OOS : expectancy ≥ +0.20 R, max DD < 20 R, n ≥ 30 trades, ratio OOS/IS ≥ 0.6. Si rejet → archivage comme BCMR / RSI Learn / Alligator / MACD Zone Cross (script de backtest conservé, EA non livré).
Méthodologie stricte (cf. KANBAN root, anti-patterns) : pas de tuning post-hoc. Les paramètres ci-dessous sont fixés AVANT le backtest selon une logique structurelle (fenêtres session standards, seuils ATR raisonnables). Toute variation nécessite une justification ex-ante et un commit sous nouveau nom (v2).
Pourquoi cette candidate après 4 rejets consécutifs
Bilan des stratégies candidates testées en mai 2026 :
| Strat | TF | Mécanique dominante | Verdict OOS |
|---|---|---|---|
| BCMR | M5 | Bollinger mean-reversion | ❌ −0.21 R |
| RSI Pullback Learn | M15 | EMA trend + RSI oversold same-TF | ❌ broken (2 trades / 6 ans) |
| Alligator Learn | M15 | SMMA trend follow | ❌ −0.10 R |
| MACD Zone Cross | H1 | MACD cross + zone filter | ❌ +0.011 R (bruit) |
Le pattern commun : aucun contexte structurel fort, ces 4 stratégies se contentent d'un signal d'indicateur sans contrainte temporelle ou session. LonBO #12 (validée +0.342 R OOS sur 23 ans) en a au contraire un très fort : range Asian défini + fenêtre NY overlap stricte + 1 trade max/jour.
NY Reversal applique le même principe :
- Fenêtre stricte : déclenchement à 14:00 UTC exclusivement (1 bar/jour)
- Contexte préalable obligatoire : London a fait un move directionnel (filtre par magnitude ATR)
- Trigger structurel : NY first H1 a prolongé le move ET refermé contre
Si cette hypothèse est fausse (4/4 rejets de strats sans contexte = donnée statistique), au moins on aura testé la version la plus défendable méthodologiquement.
Mécanique
Bars H1 EUR/USD, timestamps UTC.
Notation : "bar à HH:00 UTC" = bar qui ouvre à HH:00 et ferme à HH+1:00.
1. Définir la fenêtre London (4 bars H1, 08:00-12:00 UTC) :
- london_open = open du bar 08:00 UTC (jour courant)
- london_close = close du bar 11:00 UTC (jour courant)
- london_high = max(high) sur bars 08-11 UTC
- london_low = min(low) sur bars 08-11 UTC
- london_move = london_close - london_open
2. NY first H1 = bar 13:00 UTC (jour courant)
Évaluation au close de ce bar = à 14:00 UTC.
- ny_open = open du bar 13:00 UTC
- ny_close = close du bar 13:00 UTC
- ny_high = high du bar 13:00 UTC
- ny_low = low du bar 13:00 UTC
- ny_move = ny_close - ny_open
3. Filtre "London a bougé" (magnitude ATR) :
- ATR(14) calculé sur la série H1 jusqu'au bar 13:00 inclus
- london_strength = |london_move| / ATR
- SKIP si london_strength < 0.8 (London flat = pas de move à fader)
- SKIP si london_strength > 3.0 (trend-day = fader = se faire écraser)
4. Trigger reversal :
Cas A — London bullish (london_move > 0) :
- Extension required : ny_high > london_high
(NY a fait un nouveau plus haut au-dessus du sommet London)
- Reversal required : ny_close < ny_open
(NY first H1 clôture bearish malgré l'extension)
→ Entry SHORT au close du bar 13:00 UTC
Cas B — London bearish (london_move < 0) :
- Extension required : ny_low < london_low
- Reversal required : ny_close > ny_open
→ Entry LONG au close du bar 13:00 UTC
Aucun trigger si London neutre (move == 0) — éliminé par le filtre
magnitude qui exige london_strength ≥ 0.8.
5. SL / TP ATR-based :
- Calcul ATR(14) au bar 13:00 (déjà calculé pour le filtre)
- SHORT : SL = ny_high + 0.3 × ATR
entry = ny_close
sl_distance = SL - entry
TP = entry - 2.0 × sl_distance
- LONG : SL = ny_low - 0.3 × ATR
entry = ny_close
sl_distance = entry - SL
TP = entry + 2.0 × sl_distance
- RR théorique fixe = 2.0
6. Filtre coût (live) :
- Skip si spread courant > 30 points (3 pips 5-digit, aligné LonBO)
7. Cooldown : trade évalué uniquement au close du bar 13:00 UTC,
1 fois par jour calendaire UTC. Cas symétriques exclusifs (pas de
double signal LONG+SHORT le même jour).
8. Timeout : exit forcé à clôture du bar 21:00 UTC (= 8 bars H1 après
l'entry) si ni SL ni TP touché. NY session fermée, on n'attend pas
le lendemain.
Pourquoi 08:00-12:00 UTC pour London
- 08:00 UTC = London cash open (07:00 GMT, 08:00 BST en été)
- 12:00 UTC = London midday, fin du momentum d'open
- 4 bars H1 = échantillon assez grand pour mesurer une direction, pas trop long pour rester séparé de la fenêtre NY
- Ne chevauche pas la fenêtre LonBO 12-17 UTC (différenciation cruciale, sinon les deux stratégies trade la même chose en sens inverse)
Pourquoi NY first H1 = 13:00 UTC bar
- 13:00 UTC bar ouvre 1h avant NY cash open (14:30 UTC winter / 13:30 UTC summer) — capture le pre-market US où les flow institutionnels s'installent
- Close à 14:00 UTC = juste avant les news US 14:30 (NFP, CPI, FOMC)
- Au moment de l'entry on sait déjà si le pre-market a fait un nouveau extrême et l'a annulé — le setup est complet sans dépendre de la news 14:30 elle-même
- Évite l'enchevêtrement DST : 13:00 UTC est dans les heures NY actives en hiver comme en été
Pourquoi extension + reversal (les deux)
Tester chaque condition seule :
- Reversal seule (NY ferme contre London, sans extension) : signal trop faible, ~tous les ranges intra-day. Hit-rate proche de random.
- Extension seule (NY fait nouveau extrême, sans contrainte close) : c'est un breakout, pas une reversal. Contredit l'hypothèse de fade.
- Extension + reversal : pattern de stop-hunt classique. Le marché va chercher les stops au-delà du high/low London, échoue à confirmer, et retrace. C'est le seul des trois qui a un mécanisme exploitable (capitulation post-stop-hunt).
Pourquoi SL = extrême NY + 0.3 × ATR
- Le SL doit être au-delà du high/low NY first H1 (sinon n'importe quel retest le tape immédiatement)
- Le buffer 0.3 × ATR évite les déclenchements sur spread spike news
- 0.3 × ATR ≈ 10-20 pips selon vol ; supplément raisonnable
Pourquoi RR = 2.0 et pas 2.5 (comme LonBO)
- Setup reversal = hit-rate naturellement plus bas que breakout
- RR 2.0 → break-even hit rate = 33.3% (atteignable sur fade pattern)
- RR 2.5 → break-even hit rate = 28.6% (peut-être atteignable mais marge plus mince ; à tester en v2 si v1 passe)
Pourquoi cooldown = 1 trade/jour (1 bar fixe)
- Évite le sur-engagement : pattern est calé sur 14:00 UTC strict
- Naturellement aligné LonBO (1 trade/jour) — pas de comportement pathologique d'over-trading
Paramètres baseline
| Paramètre | Valeur | Justification |
|---|---|---|
LondonOpenUTC |
8 | Standard London cash open |
LondonCloseUTC |
12 | Fin window London (= NY first commence à 13) |
NYFirstHourUTC |
13 | Bar pre-market US, close à 14:00 |
ATRPeriod |
14 | Wilder standard |
MinLondonStrength |
0.8 | London ≥ 0.8 × ATR pour qualifier |
MaxLondonStrength |
3.0 | London ≤ 3.0 × ATR pour exclure trend-day |
SLBufferATRMult |
0.3 | Buffer au-delà du high/low NY first |
RRMultiple |
2.0 | TP = 2 × distance SL |
TimeoutBars |
8 | Exit forcé 21:00 UTC si pendant |
MaxSpreadPoints |
30 | 3 pips 5-digit (live uniquement, aligné LonBO) |
MagicNumber |
80808080 | Identifiant EA (TBD si livraison) |
Aucune optimisation post-backtest. Si l'edge n'apparaît pas avec ces paramètres standards, l'hypothèse de stop-hunt structurel sur NY open EUR/USD est invalidée — pas qu'il faut "ajuster les seuils".
Fréquence attendue
- ~5 jours ouvrés / semaine
- Filtre
0.8 ≤ london_strength ≤ 3.0: ~50-70% des jours qualifient - Trigger extension + reversal : ~15-30% des jours qualifiés
- Estimation : ~1-2 signaux / semaine, soit ~50-100 / an
Sur 8 ans 4 mois (2018-01 → 2026-05) ≈ 2100 jours ouvrés, on attend
~400-800 signaux. Largement au-dessus du gate n ≥ 30 trades OOS.
Gates OOS (méthodologie BCMR, non négociables)
| # | Gate | Cible | Action si raté |
|---|---|---|---|
| 1 | OOS expectancy ≥ +0.20 R / trade | edge réel après random walk + frais | rejet définitif |
| 2 | OOS max DD < 20 R | gestion risque acceptable | rejet (~10% capital à 0.5%/trade) |
| 3 | OOS n ≥ 30 trades | significativité statistique | rejet (sample trop petit) |
| 4 | Ratio OOS/IS expectancy ≥ 0.6 | robustesse / pas d'effondrement OOS | rejet (sur-fit IS) |
Découpage IS/OOS : 2018-01-01 → 2023-12-31 = IS (6 ans), 2024-01-01 → 2026-05-11 = OOS (~2.4 ans), soit ~72/28.
Performance attendue (à confirmer)
| Métrique | Cible | Acceptable | Rejet |
|---|---|---|---|
| Hit rate à RR=2.0 | ≥ 40% | ≥ 33.3% (BE) | < 30% |
| Expectancy R | ≥ +0.30 | ≥ +0.20 | < +0.10 |
| Profit factor | ≥ 1.5 | ≥ 1.2 | < 1.0 |
| Max DD OOS | < 12 R | < 20 R | ≥ 25 R |
Conditions favorables
- Range jour (pas trend-day) — le filtre
london_strength ≤ 3.0aide - Vol normale NY — ATR(14) H1 entre 6 et 30 pips
- Pas de news rouge majeure à 14:30 UTC (NFP, FOMC, CPI) — sinon reversal pattern souvent invalidé par la news elle-même
- Pas de jour férié US/EU — liquidité réduite, stop-hunts moins systématiques
Pièges connus
1. Trend-day non détecté
Si London fait un move 2.5×ATR (proche du plafond 3.0×) et NY continue dans la même direction puis fade légèrement, le pattern se déclenche mais le contre-mouvement n'est qu'une pause avant continuation. Risque d'être pris en SHORT pendant un trend bullish strong.
Mitigation possible v2 : filtre D1 (skip si D1 fait un nouveau plus haut/bas hebdomadaire), ou réduire plafond à 2.5×ATR.
2. News rouge 14:30 UTC
NFP/CPI/FOMC sortent dans la fenêtre. Le bar 13:00 UTC fini, l'entry est validée, puis la news fait spike ±50 pips. SL ATR-based atténue mais ne résout pas. Pas de filtre news en v1.
Mitigation possible v2 : skip si news rouge USD prévue dans 30 min post-entry. À implémenter via le pilier A Forex Factory XML.
3. NY first H1 = doji
Si ny_high > london_high (extension validée) mais ny_close ≈ ny_open
(doji), la condition ny_close < ny_open peut être validée par
0.1 pip de différence. Trigger valide mais signal faible.
Mitigation possible v2 : exiger |ny_close - ny_open| ≥ 0.2 × ATR.
Pas en v1 pour éviter le tuning.
4. Bias direction (long vs short)
EUR/USD sur 8 ans = bias structurel selon la phase EUR/USD. Décompo LONG/SHORT obligatoire dans le backtest — si LONG seul a un edge, c'est acceptable (variante v2 LONG-only).
5. Conflit avec LonBO
Les deux stratégies peuvent trigger le même jour (LonBO breakout entre 12-17 UTC, NY Reversal au close 13:00 UTC). En live, prioriser LonBO (stratégie validée). En backtest, considérer indépendamment — ce sont des tests de mécaniques distinctes.
6. DST UTC drift
Les heures NY/London glissent en mars/novembre via DST. Le strategy définit en UTC fixe : pas de glissement, mais l'interprétation session varie de 1h en hiver vs été. Acceptable car pattern intra-day basé sur structure prix, pas sur clock retail.
Variantes envisagées (non implémentées en v1)
| Variante | Modification | Rationale |
|---|---|---|
| LONG-only | Skip cas A (SHORT) | Si bias structurel EUR/USD |
| Multi-TF D1 align | Skip si D1 fait HHH/LLL hebdo | Évite contre-trend D1 |
| Magnitude reversal | Exiger ny_close vs ny_open ≥ 0.2 × ATR | Évite dojis |
| Filtre news rouge USD | Skip si news ±30 min post-entry | Évite spike news |
| Cooldown post-loss | Skip lendemain si loss aujourd'hui | Évite séries baissières |
| Plafond réduit | MaxLondonStrength = 2.5 | Évite trend-days plus tôt |
| TF M30 trigger | Bar 13:30 UTC en plus du 13:00 | 2 chances/jour |
Toutes attendent que la baseline passe le gate avant d'être considérées.
Couplage piliers A↔B↔C (CLAUDE.md root)
| Pilier | Fichier |
|---|---|
| A (docs) | docs/strategies/mean-reversion/ny-reversal.md (cette fiche) |
| C (spec) | mt5/tests/test_ny_reversal_spec.py |
| B (R&D) | hermes/scripts/backtest_ny_reversal.py |
| C (EA) | mt5/NY_Reversal_v1.mq5 + includes — uniquement si gates OOS verts |
Pas d'EA tant que le backtest n'a pas validé l'edge.
Liens
- Référence méthodologique :
../breakout/london-breakout.md(LonBO #12 validé, miroir conceptuel) - Famille :
index.md(mean-reversion) - Spec exécutable :
mt5/tests/test_ny_reversal_spec.py - Backtest R&D :
hermes/scripts/backtest_ny_reversal.py - Audit (post-backtest) :
mt5/AUDIT_<date>_ny_reversal.md