Skip to content

Add: portage Short Term Reversal With Futures (article 15366, #18466) — 2 bras IBKR, NO BEATS - #19677

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/18466-short-term-reversal-futures
Oct 7, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/18466-short-term-reversal-futures

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/qc — lane myia-po-2023:CoursIA — prev: DEEP/qc #19670

See #18466. See #11698 (EPIC moisson qc-research, phase 2).

Ce que la PR livre

Artefact Rôle
projects/ShortTermReversalFutures-QC/main.py Portage fidèle du code de l'article QC research 15366 (Jing Wu, draft), adapté a1–a6 documentées en tête de fichier
projects/ShortTermReversalFutures-QC/README.md Source, 5 axes du semis re-mesurés, divergences prose/code, plan de backtests préinscrit avant exécution, résultats, verdict
projects/STRATEGIES_DETAIL.md Ligne de vérification (précédent : LowBeta-Industries-QC)
projects/catalog.json Entrée exploratoire avec métriques mesurées
docs/qc/qc-research-seeded.json seeded_at tamponné pour 15366 (l'entrée portait issue: 18466 mais seeded_at: null)

Le contexte : verdict IGNORE du semis vs dispatch coordinateur

Le semis #18466 (po-2025) avait clos l'article en IGNORE sur 5 axes. Tous re-mesurés encore vrais le 2026-10-07 : pending review/draft, aucune métrique rendue, backtests liés morts (404, commentaire Chetan Prabhu), aucune source primaire (Quantpedia = agrégateur), coût défavorable. Le 07/10 06:52Z, ai-01 a dispatché le portage (« portage sur QC Cloud, backtests préinscrits sous frais du courtier, verdict honnête ») — décision postérieure, la revendication du dernier arbitre s'applique. Cette PR exécute le dispatch en documentant les deux : les 5 axes bornent ce que le portage peut prouver ; aucun BEATS n'est claimable puisque l'article n'affiche aucun chiffre à battre.

Plan préinscrit (écrit avant exécution) et résultats

Deux bras, même code, frais IBKR marge, cash 1 M. Run 1 : crash au premier rééquilibrage sur portfolio.keys (a6) — il établit au passage que la route OI de l'article lie et s'exécute. Run 2 (dda99a9e1c) :

Bras Fenêtre Séances Statut Ordres Sharpe CAGR MaxDD Net
A — longue 2016-01→2026-06 2710 Completed. 1126 −0.474 −3.57 % 44.9 % −31.73 %
B — alignée #1630 2018-01→2025-01 1808 Completed. 884 −0.345 −1.48 % 37.9 % −9.90 %

Backtests : strf-18466-brasA-v2-long-2016-2026-ibkr, strf-18466-brasB-v2-aligne-2018-2025-ibkr — projet Cloud 37465962 (ShortTermReversalFutures-18466), compile BuildSuccess ×2.

Verdict : NO BEATS contre le cash — Sharpe ≤ 0 sur les deux bras, PSR 0 % partout, drawdown max 44.9 % sur un livre ±0.3. Le nombre d'ordres (≈2/semaine + rollovers) prouve que le circuit de sizing de l'article produit des tailles non nulles : le portage tourne, trade et se mesure — c'est ce que le dispatch demandait de vérifier, honnêtement.

Divergences et adaptations (mesurées, pas supposées)

  • Prose ≠ code (a5) : la prose annonce l'intersection volume-haut ∩ OI-bas ; le code prend l'union des 4 plus bas volume-ROC et des 4 plus hauts OI-ROC (corroboré par le commentaire du code). Le port suit le code ; la variante prose n'est pas testée — elle n'était pas dans le code mesuré.
  • Défaut rollover porté tel quel : quantity // contract_multiplier divise par le multiplicateur une quantité déjà en contrats — la position reportée est écrasée vers ~0 à chaque mappage ; borné par le rééquilibrage hebdo qui re-cible ±0.3.
  • a1 return est un mot réservé Python (le snippet de l'article ne peut pas s'exécuter tel quel) → return_value ; a2 déclencheur hebdo reconstruit (l'article montre le bloc d'ordres sans son portillon) ; a3 garde qty != 0 (update Derek Melchin STAFF) ; a4 fenêtre/capital paramétrés ; a6 portfolio.keys se lie en méthode sur LEAN courant — mesuré au run 1 (crash 2017-07-19 / 2018-01-03, 0 ordres).

Ce que la PR ne fait pas

  • Elle ne ferme pas [QC-research] Short Term Reversal With Futures (#15366) #18466 (le verdict du body reste à arbitrer par le coordinateur : l'IGNORE du semis ou le dispatch du 07/10 — la PR documente la tension sans la trancher).
  • Elle ne claim aucun edge : la mesure est nette sous brokerage IBKR, la variante prose n'est pas testée, et l'article n'affiche aucun chiffre confrontable.
  • Elle ne touche ni main.py d'autres projets, ni le notebook de série.

🤖 Generated with Claude Code

Portage fidele du code de l'article QC research 15366 (Jing Wu, draft)
sur QC Cloud, verify sous frais IBKR : 2 bras preinscrits, tous deux
Completed -- longue 2016-2026 Sharpe -0.474 (net -31.7%, MaxDD 44.9%),
alignee 2018-2025 Sharpe -0.345 (net -9.9%). Verdict NO BEATS contre le
cash ; aucun chiffre article a battre (backtests lies morts, aucun
metric rendu -- les 5 axes du semis restent vrais, re-mesures 2026-10-07).

Adaptations documentees a1-a6 (mot reserve `return`, portillon hebdo
reconstruit, garde qty!=0 Derek Melchin, fenetre parametree, union
prose/code, portfolio.keys->methode mesuree au run 1). Defaut rollover
`quantity // multiplier` porte tel quel et documente.

Enregistrements : STRATEGIES_DETAIL.md, catalog.json (exploratoire),
compteur qc-research-seeded.json (seeded_at 15366).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-07) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19677 (Add: portage Short Term Reversal With Futures (article 15366, #18466) — 2 bras IBKR, NO BEATS) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19677
head: dda99a9
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 857afa0347a63d1e2d20bbcb74c464beb755b5237f58785d7bc70bf479f1f335
diff-files: 5
diff-additions: 330
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19677
organ-rc: 0
[/ADJOINT PREFLIGHT]

Dossier tiers emis par myia-po-2027:CoursIA, lane qui ne porte pas cette PR (porteuse : myia-po-2023:CoursIA). Bloc rendu par --emit (verdict et champs mecaniques derives par l'organe, rc=0) ; les quatre lectures sont de ce cycle.

Actes de lecture.

  • complete — les 4 surfaces lues integralement : body (integral, en deux passes), 3 commentaires, 0 review, 0 thread inline.
  • body — tag Grain: DEEP/qc -- lane myia-po-2023:CoursIA en ligne 1. Le body annonce 5 artefacts ; le diff porte exactement 5 fichiers, +330/-2 (main.py, README.md, STRATEGIES_DETAIL.md, catalog.json, qc-research-seeded.json). Rien hors perimetre.
  • checks — derives par l'organe dans la fenetre REST (fold latest-wins, READY exige vert).
  • b0 — aucune review, aucun thread ; les 3 commentaires sont des advisories bots sans marqueur de reserve : organ-duplication no collision, variation-genre-signals (concerne le tally de la lane, pas cette PR — elle est DEEP/contenu, ce que G-VAR-1 demande), path-collision (advisory declare non bloquant par l'organe lui-meme).
  • scope — pass : 5 fichiers, coherents avec la table d'artefacts annoncee.
  • domain — pass (QC, critere G) : (1) backtests executes et nommes — strf-18466-brasA-v2-long-2016-2026-ibkr et strf-18466-brasB-v2-aligne-2018-2025-ibkr, projet Cloud 37465962, compile BuildSuccess x2 ; (2) Sharpe/CAGR/MaxDD dans le body (table : bras A −0,474 / −3,57 % / 44,9 % ; bras B −0,345 / −1,48 % / 37,9 %) ; (3) exigence OOS sans objet : portage sans training, deux fenetres completes mesurees, verdict NO BEATS honnete contre le cash (aucun edge claimable — l'article n'affiche aucun chiffre a battre, documente). Le plan de backtests est preinscrit avant execution dans le README (exigence du dispatch ai-01 du 07/10 06:52Z, execute).

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

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants