Skip to content

feat(qc,#20189): BTC-ETH-Rotation -- rotation par force relative, mesure de ligue NO BEATS - #20192

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/btc-eth-rotation
Oct 10, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/btc-eth-rotation

Conversation

@jsboige

@jsboige jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/qc — lane myia-po-2024:CoursIA-3 — prev: LIGHT/ledger #20187

Closes #20189 (règle de mesure pré-inscrite avant le premier backtest ; résultat publié sur l'issue, commentaire du 2026-10-10).

Résumé

Nouveau projet Lean projects/BTC-ETH-Rotation/, candidat de la ligue de stratégies (#19821). Chaque lundi, la stratégie place 99 % de sa valeur dans l'actif, BTC ou ETH, dont le rendement sur 28 barres journalières est le plus fort. Elle n'a aucune jambe de liquidités. C'est la question inverse des stratégies de tendance crypto du dépôt, qui sortent en liquidités.

  • main.py : la règle, avec des paramètres optionnels (fenêtre, lookback, revue hebdomadaire ou quotidienne, contrôle weaker, multiplicateur de frais) ; le graphique shadow au format de la ligue ; les compteurs en statistiques d'exécution.
  • README.md : description, mesure (données, protocole, tableaux, verdict), contrôle descriptif et trois exercices de lecture.

Mesure (QC Cloud, projet 37602829, main.py d'empreinte 45bdd8f3084d)

Différence de Sharpe Écart p p Holm 2017-2019 2020-2022 2023 → 2026-06
base − BTC détenu +0,23 0,16 0,32 +0,41 +0,50 −0,40
base − 50/50 rééquilibré +0,10 0,25 0,32 +0,16 +0,16 −0,10

Verdict : NO BEATS. La différence n'est significative contre aucune des deux références. Conformément à la règle, la grille et le run à frais doublés ne sont pas lancés.

Protocole de la ligue :

  • Sharpe à taux sans risque nul, annualisé sur 365 jours ;
  • bootstrap circulaire par blocs de 21 jours, 10 000 tirages, graine 18921 ;
  • correction de Holm sur les deux références.

Contrôles mécaniques :

  • 205 ordres = 1 achat initial + 102 bascules × 2 ;
  • 3503 barres par actif, sans jour manquant ;
  • première décision le lundi 2017-01-02 ;
  • le run weaker a les jours BTC/ETH de base exactement inversés.

Traces hors dépôt sous QC-traces/20189-btc-eth-rotation/ : plans, empreintes, graphiques, statistiques et results.json.

Organe d'abord (5 questions)

  1. Quelle série possède déjà la sémantique ? La ligue [EPIC][QC] Ligue de stratégies Framework : protocole de mesure commun, PCM par poches, revue semestrielle du panier #19821 pour le protocole de mesure, et EMA-Cross-Crypto ([QC] EMA-Cross-Crypto : mesure QC Cloud au protocole de la ligue #20054) pour le contrat du graphique shadow (valeur par jour, séries entrelacées). Aucun projet du dépôt ne fait de rotation relative BTC/ETH (git grep cité dans [QC] Rotation BTC/ETH par force relative : règle pré-enregistrée et mesure au protocole de la ligue #20189).
  2. Peut-on invoquer le module natif ? Oui, pour tout ce qui existe. Le moteur, les indicateurs (ROC), les données et le modèle de frais sont ceux de Lean, avec le modèle de courtier natif BrokerageName.BITFINEX. L'analyse appelle les fonctions du dépôt (circular_block_diff, holm, qc_daily_equity). Seule la règle de rotation est écrite, parce qu'elle est l'objet de la mesure.
  3. Que faudrait-il exporter ? Rien pour cette PR. Le multiplicateur de frais (_ScaledFeeModel) est une petite enveloppe locale du modèle natif, déjà présente sous une autre forme dans d'autres projets. Son extraction relève du même chantier que [QC] MultiStrategyPCM : 9 copies, 6 variantes, le correctif #19740 dans 3 seulement — extraire une source unique #20188 (une source commune pour le code partagé entre projets QC).
  4. Témoin négatif ? Le contrôle weaker, qui suit le même calendrier et détient l'actif le plus faible. Ses jours par actif sont l'inverse exact de ceux de base : c'est le contrôle positif de la mécanique de bascule.
  5. Vérification indépendante ? Les références sont recalculées hors QC, sur les clôtures tracées par la candidate. Le CAGR recalculé (90,3 %) recoupe celui de QC (90,7 %). La corrélation avec les autres membres de la ligue sera mesurée par scripts/league_correlation.py ([QC][Ligue] Brique 4 : matrice de corrélation hebdomadaire des séries mesurées (#19821) #20083) après le merge de feat(qc,#20083): matrice de corrélation hebdomadaire de la ligue sur les séries mesurées #20084.

Hors périmètre

  • L'inventaire manuel de docs/qc/qc-strategies-status.md n'est pas modifié. L'entrée du projet et la mise à jour des comptes de cet inventaire relèvent d'une PR de l'inventaire.
  • Aucun déploiement : mesure en backtest uniquement.

🤖 Generated with Claude Code

…ure de ligue NO BEATS

Nouveau projet Lean : chaque lundi, 99 % dans l'actif (BTC ou ETH) au
rendement 28 barres le plus fort, sans jambe de liquidites. Place Bitfinex
(historique ETHUSD le plus long, sonde du 2026-10-10), frais du modele de
courtier natif. Graphique shadow au format de la ligue (#19821).

Mesure pre-inscrite sur #20189 (2017-01-03 -> 2026-06-30) : NO BEATS,
p Holm 0,32 contre BTC detenu et contre le 50/50. Grille et frais x2 non
lances (regle). README : donnees, protocole, tableaux, controle weaker.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 10, 2026
@github-actions

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).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20192
head: def6be9
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7eeb85ce6af2799f6a26de68a10a535bf04e2affb98dc905928a3230224d1bae
diff-files: 2
diff-additions: 220
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20192
organ-rc: 0
[/ADJOINT PREFLIGHT]

READY — les quatre surfaces du contrat tiennent a la tete du dossier.

  • checks : latest-wins-green — pliage dernier started_at par nom sur commits/<head>/check-runs ; l'organe ne releve aucune jambe rouge residente (--derive-verdict rc=0).
  • b0 : clear — check_unaddressed_nits.py 20192 rc=0 ; aucune reserve postee, aucun thread inline non resolu.
  • scope : pass — 2 fichiers — BTC-ETH-Rotation/README.md et BTC-ETH-Rotation/main.py. Conforme au titre ([QC] Rotation BTC/ETH par force relative : règle pré-enregistrée et mesure au protocole de la ligue #20189).
  • domain : not-applicable — aucun *.lean modifie : aucun gate de preuve n'est declenche.

Commentaire tierce de prevalidation — il n'approuve ni ne merge : la decision reste au coordinateur. Lane emettrice : myia-po-2023:CoursIA (file c2142).

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Relu a la tete exacte. sha256 de main.py recalcule : 45bdd8f3084d680e..., identique au body. NO BEATS coherent (p Holm 0,32, IC a cheval sur zero) ; le Sharpe affiche par QC est ecarte du protocole avec sa raison ; sous-periodes negatives rapportees. Compteurs mecaniques coherents (205 ordres = 1 + 102x2). Aucune reserve posee. B.0 rc=0.

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

Labels

variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QC] Rotation BTC/ETH par force relative : règle pré-enregistrée et mesure au protocole de la ligue

2 participants