Skip to content

[QC-research] Opening Range Breakout for Stocks in Play (#18444) #16355

Description

@jsboige

Grain: MED/qc — lane myia-po-2025:CoursIA — prev: MED/qc #16311

[QC-research] Opening Range Breakout for Stocks in Play (#18444)

Article source

Lecture analytique (5 axes)

1. Mécanisme. Range d'ouverture 5 min sur les 20 actions les plus « in play » (volume 5 min du jour / moyenne 14 j du volume 5 min > 1) tirées des 1 000 actions les plus liquides (> $5, ATR > $0.50). Long si cassure du haut du range après barre d'ouverture haussière, short symétrique. Stop = entrée − k×ATR(14) ; sizing à 1 % de risque par position, plafonné au poids equal-weight ; sortie à la clôture ou au stop. Bêta mesuré −0.042 (quasi market-neutral).

2. Métriques — INCOMPLÈTES. Backtest sur la seule année 2016 (« the first year of the paper's backtest period ») : Sharpe 2.396 vs SPY 0.836. Aucune année 2017-2023 du papier, aucun OOS, aucun CAGR/MaxDD cités, frais non discutés dans le corps. L'analyse de sensibilité est réelle (25 combos range×univers, 17/24 battent le benchmark ; ATR $0→$2 : Sharpe 1.5-2.7 ; variante ATR en % : Sharpe 2.237, PSR 97 %) mais toutes sur la même année unique.

3. Sources primaires — RÉELLES (contrairement au wheel #17871). Zarattini, Barbon & Aziz, A Profitable Day Trading Strategy For The U.S. Equity Market (16 fév 2024), Swiss Finance Institute Research Paper 24-98, SSRN 4729284, DOI 10.2139/ssrn.4729284. Le papier porte 2016-2023 et un univers de 7 000 actions ; l'article QC n'en reproduit qu'un an avec 1 000 actions.

4. Contre-évidence communautaire (de première main, thread lu intégralement).

  • Angus Li : « The backtest doesn't look good for other years. Does it overfit? »
  • Jack Pizza : frais ≈ 25 % du PnL sur 6 symboles ; collapse en dot-com ; perf en chute si prix > $50 ; suspicion que l'edge vient de la sélection d'actions, pas du processus ATR.
  • Yuri Lopukhov : bug de warmup ATR en Python (ATR 3× trop bas, stops trop serrés — voisin LEAN issue fix(guard,#8352): _is_frontmatter_block precision — no longer flags prose section dividers (FP root-cause) #8392) ; divergence backtest/live sur le placement du stop (résolution minute vs seconde) ; contraintes RAM.
  • Lars Klawitter : universe 2 000 + range 1 minute fait significativement mieux sur 2010-aujourd'hui — c'est-à-dire que les meilleurs paramètres communautaires contredisent ceux du papier (5 min / 7 000) : signal de sur-spécification.
  • Mark Kust : win rate 17 % — le ratio profit porte tout.
  • Taux de win 17 % + coûts 25 % + robustesse OOS contestée = l'edge net après frais est non établi à ce stade.

5. Différenciation vs bouquet — GAP RÉEL (0 redondance). docs/qc/qc-strategies-status.md : aucune stratégie intraday-momentum / opening-range / stocks-in-play dans le bouquet (grep « opening range|breakout|intraday » = 0). Le voisin le plus proche est la périodicité de volume intraday (#21066, semée #15834/#14991 — famille volume, pas momentum). Contrairement au wheel (4× mesuré), ici la famille manque — c'est le cas le plus favorable à un apport distinctif depuis #16308.

Verdict

  • CONSOLIDATION — aucun projet existant à rouvrir (famille absente).
  • PÉDAGOGIQUE — aucun notebook de cours existant sur le momentum intraday.
  • NOUVEAU (gated) — création conditionnelle, justification : famille intraday-momentum absente du bouquet (0 redondance) + source primaire réelle et identifiable (SSRN 4729284). La porte est ouverte uniquement sous garde-fous, l'article seul ne la justifie pas.
  • IGNORE — serait le verdict si le portage gated échoue (voir conditions).

Garde-fous du portage (toute PR future dérivée de ce semis DOIT les porter)

  1. Fenêtre pleine 2016-2023 du papier — jamais la seule année 2016 ; dév/OOS séparés (ex. dev 2016-2019, OOS 2020-2023).
  2. Frais réalistes documentés (la communauté mesure ~25 % de drag sur PnL en commissions/slippage équitables) — verdict « BEATS » sans coûts = invalide d'office (cf. pr-review-discipline §C).
  3. Paramètres du papier (5 min / univers large) testés et la variante communautaire (1 min / univers 2 000) rapportée comme analyse de sensibilité — pas l'inverse.
  4. Si l'edge ne survit pas aux frais sur la fenêtre pleine : retomber en IGNORE avec preuve et refermer la piste famille (le gap seul ne suffit pas à importer un edge non net).

Acceptance locale

  • Article lu en entier (corps + 2 pages de commentaires)
  • Voisinage docs/qc/qc-strategies-status.md re-vérifié (grep 0 match famille)
  • Sources primaires identifiées (SSRN 4729284, DOI 10.2139/ssrn.4729284)
  • Verdict coché avec justification
  • PR associée si portage gated tenté (grain futur, ouvert à toute lane)

See #11698

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    quantconnect-researchMoissonnage QC research — distillation intelligente

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions