# StrateForge Intraday — Protocole pré-enregistré Phase 0 + Phase 1 (v2)

**Statut : PRÉ-ENREGISTRÉ v2 — figé avant tout run.**
v1 gelée le 2026-09-28, amendée le même jour APRÈS la ronde 2 de revue adversariale
et AVANT tout run — amendment légitime (aucune donnée n'a encore été touchée),
consigné ici conformément à la doctrine. Toute déviation ultérieure sera consignée comme telle.

Sources de cadrage : ronde 1 (`StrateForge_Intraday_Étude_de_faisabilité.md`) corrigée par
ronde 2 (`StrateForge_Intraday_Ronde2_Revue_adversariale_et_spec_Phase0.md`).

**Doctrine : on cherche à falsifier, pas à confirmer. Un rejet propre est un livrable.**

---

## 0. Ce que la ronde 2 a changé (résumé)

- **Grille de coûts durcie (figée)** : taker 5,0 bps/côté + slippage 2,0 bps (BTC/ETH) / 5,0 bps (alts)
  → aller-retour **14 bps (BTC/ETH), 20 bps (alts)** ; maker 2,0 bps/côté, fill 60 %, sélection adverse
  non comptée (rappel : flash crash oct. 2025) ; mixte ≈ 9 bps. Sensibilité obligatoire ×2.
- **E3 scindé** : E3a (carry delta-neutre — descriptif uniquement, hors mandat directionnel)
  et E3b (réponse directionnelle aux déciles empiriques de funding — hypothèse NOUVElle à prior de rejet,
  car le contrarian directionnel n'a AUCUN ancrage académique).
- **E1 reformulé** : pas un test de stratégie taker (strawman interdit) mais une **mesure d'edge brut
  conditionnel** par paire et par régime, comparée aux lignes de coût.
- **Portes d'hygiène données ajoutées** (obligatoires AVANT tout test d'effet) — cf. section 2.
- **Compte de paris effectif** : ratio de variance long terme (Lo 2002) + unicité moyenne
  (López de Prado) — jamais le compte nominal.
- **Univers point-in-time** (anti-biais de survie) avec table des entrées/sorties publiée.
- Probabilités recalibrées (informationnel) : 20 min mort (80 %), 1h 55/35/10, 4h 40/45/15.
  Résultat le plus probable de la Phase 0 : **trois réfutations propres — livrables en soi**.

---

## PHASE 0 — Falsification à modèle zéro

### Portes d'hygiène données (à passer AVANT tout test d'effet — 2-3 jours)

1. **Reconstruire les klines 1m à partir des aggTrades bruts** sur un échantillon de journées,
   comparer OHLCV aux klines API. Divergence systématique → source disqualifiée.
2. **Taux de barres manquantes / volume nul par actif** ; exclusion des actifs sous seuil
   (seuil fixé APRÈS mesure, pas avant).
3. **Alignement timestamps** : UTC milliseconde, convention de barre (open/close time) IDENTIQUE
   pour tous les actifs. Un décalage d'une barre fabrique un faux lead-lag — piège n°1 du projet.
4. **Barres artefacts** : winsoriser ou exclure les amplitudes extrêmes documentées (flash crashes).

### E1 — Lead-lag BTC → alts : mesure d'edge brut conditionnel

- Grille (20 combinaisons, figées) : lag signal ∈ {1, 2, 3, 5, 10} min × seuil d'entrée ∈ {0 ; 0,5σ₁ₘᵢₙ}
  × détention ∈ {5, 10} min.
- **Signe pré-enregistré par paire** (deux régimes documentés : prédictibilité agrégée positive
  [Guo 2024] vs « seesaw » négatif large→small [Jia 2023] — jamais de signe unique global).
- Estimations de Hayashi-Yoshida pour l'asynchronicité (garde-fou anti faux lead-lag).
- **Verdict** : espérance conditionnelle (quantile haut = forte vol + forte participation) comparée
  aux lignes de coût (14/9/4 bps). Si quantile haut < 14 bps → **réfutation propre**.

### E2 — Momentum intraday : réplication pré-enregistrée

- Fenêtres exactes (Shen, Urquhart & Wang 2022) : « ouverture » = pic de volume recalculé EN TEMPS RÉEL
  (volume cumulé vs moyenne mobile — JAMAIS ex post, look-ahead interdit) ; première demi-heure =
  ouverture + 30 min ; dernière demi-heure = 16h30-17h00 EST (pause CME) ; avant-dernière = 16h00-16h30.
- Grille (16 combinaisons, figées) : signal ∈ {r_ONFH, r_SLH, combiné} × filtre régime ∈
  {tous jours, tercile haut volume 1re ½h, tercile haut vol 1re ½h, jours de baisse} × +4 paires horaires
  NAJEF 2022 pré-enregistrées.
- Verdict attendu (honnête) : taker mort, maker ≈ 0 ; seule la version conditionnée a une chance étroite.
  La réplication vaut aussi comme calibration du pipeline sur un effet à valeur brute connue.

### E3a / E3b — Funding

- **E3a (descriptif)** : statistiques du carry delta-neutre par actif. Réplication documentée
  (~7 %/an, profitable même aux frais max — Christin 2022, BIS WP 1087, He 2022). AUCUNE conclusion
  directionnelle tirée de ce volet.
- **E3b (hypothèse nouvelle, prior de rejet)** : bins = déciles empiriques glissants du funding_8h
  par actif (JAMAIS de seuil absolu ±0,05 %) × horizon ∈ {8h, 24h} × sens ∈ {contrarian, momentum}
  = 12 combinaisons. Slippage stressé ×3 les jours d'extrême (cascades de liquidations).

### Univers (point-in-time, anti-biais de survie)

- Top 30 perpétuels USDT-M par liquidité **rééquilibré mensuellement, connu à chaque date**
  (snapshots historiques ; actifs délistés inclus jusqu'au délistage avec sortie forcée à coût majoré).
- **Table des entrées/sorties d'univers publiée** (actifs actifs par mois, délistements).
- **Analyse de sensibilité univers large vs survivants** : si l'écart dépasse l'edge mesuré →
  l'edge n'existe pas.

### Compte de paris effectif (obligatoire dans le rapport)

- Autocorrélogramme des rendements de stratégie par effet ; T_effectif = T × (σ²_naïf / σ²_LRV) ;
  cohérence avec unicité moyenne des labels. C'est T_effectif qui entre dans tous les tests
  de significance (ex. attendu : ~800-1 300 paris effectifs sur 3 ans à 4h, pas 6 570 nominaux).

### Règle de décision Phase 0 (figée)

Un effet « survit » si son espérance brute conditionnelle excède le coût aller-retout du profil
d'exécution avec **marge ≥ 30 %** (absorbe sélection adverse, funding, écart backtest/réel).

- **GO Phase 1** si ≥ 1 effet survit à la grille centrale ×1 ET à la sensibilité ×2,
  sur ≥ 300 paris effectifs indépendants.
- **Sinon : REJET publié** (format identique à la tâche 8) — attendu comme résultat le plus probable.

---

## PHASE 1 — Modèle (uniquement si Phase 0 = GO)

Configuration unique : **A (décision 4h)** — cf. v1 inchangé sur l'architecture
(GBM existant + calibration isotonique, triple-barrière PT +2,0×σ_RV / SL −1,0×σ_RV,
features T1 klines + T2 funding/ΔOI/lead-lag, walk-forward imbriqué, budget ≤ 200 configs).
Cible privilégiée si GO partiel : **prévisibilité de la volatilité** (mieux établie statistiquement
que la direction) au service du filtrage et du sizing.

---

## RÉSULTATS (à remplir — format imposé)

### Phase 0 — Résultats

Univers PIT : 36 mois (2023-10 → 2026-08), top-30 mensuel, 235 membres uniques, 706 entrées/sorties (table publiée, `intraday/univers/`). Fenêtre d'évaluation OOS : 2025-04 → 2026-08. Toutes les cellules : paris EFFECTIFS (LRV Bartlett, plafonnés à 1.0 — déviation D1) ; t HAC et contrôle de multiplicité Bonferroni rapportés (hors règle figée, en colonne honnêteté).

| Effet | Paris NOMINAUX | Paris EFFECTIFS | Edge brute conditionnelle (quantile haut) | vs 14/9/4 bps | Verdict |
|---|---|---|---|---|---|
| E1 lead-lag | 44 510 587 | 42 489 467 (460 cellules ≥300 eff) | **2,71 bps** (CFXUSDT L1, θ0.5σ, h10 ; 12 939 eff) ; 34 cellules survivent à Bonferroni mais toutes < 3 bps | < 4 bps partout | **REJET** — edge réel mais économiquement nul (≤7× sous le maker) |
| E2 momentum | 91 113 | 83 174 (55 cellules ≥300 eff) | **13,42 bps** (1000PEPEUSDT r_on·jours_baisse→fh_l ; 361 eff ; t=1,3) ; 0 cellule Bonferroni | ≥ 4 bps maker en ×1 seulement (13,4 ≥ 1,3×4 mais < 2×4) ; < 9/14/20 sinon | **REJET** — ne survit à aucun profil taker, maker en ×1 seul sans significance |
| E3b funding | 300 042 | 181 098 (148 cellules ≥300 eff) | **311,9 bps** (1000BONKUSDT 24h contrarian ; 363 eff) — mais **t=1,37**, IC95 ≈ ±457 bps ; 0 cellule Bonferroni (max t=3,10 vs z=4,01) | dépasse 14/9/4 mécaniquement, sans significance | **REJET** — l'estimation ne distingue pas l'edge du bruit (voir note N1) |

Note N1 (E3b) : la règle figée « edge ≥ 1,3×coût ET ≥ coût×2 sur ≥300 paris effectifs » est satisfaite mécaniquement par la cellule BONK (311,9 ≥ 40 ; 363 eff). Elle n'est PAS retenue : le protocole impose que T_effectif entre « dans tous les tests de significance », et t=1,37 établit que l'espérance n'est pas mesurable (l'IC95 contient 0 et contient 2× le coût). Max de |t| sur les 824 cellules E3b = 3,10, dans le bruit attendu d'un max de 824 tirages sous H0. Un GO fondé sur cette cellule serait indéfendable. La sensibilité survivants creuse l'écart (67,9 bps vs 311,9) sans conclure à elle seule.

E3a descriptif (hors mandat directionnel) : 206 actifs évalués ; carry funding médian +4,4 %/an, dispersion large (q10 −46,7 %, q90 +20,9 %), 137/206 de moyenne positive — compatible en ordre de grandeur avec la littérature répliquée (~7 %/an, Christin 2022), AUCUNE conclusion directionnelle tirée de ce volet.

### Portes d'hygiène données (cochées)

- [x] Klines reconstruites vs API
- [x] Taux de barres manquantes mesurés
- [x] Alignement timestamps vérifié
- [x] Barres artefacts traitées
- [x] Table d'univers point-in-time publiée

(Rapports gelés : `intraday/portes/gate1-4.*`, 2026-09-29 02:10-02:17. Signes E1 figés avant run OOS : commit `52de7c1`. Grilles E2/E3 figées avant tout run : commit `b9bb40d`.)

### Verdict final (une ligne, publiable)

`[REJET PUBLIÉ] — Trois effets falsifiés sur univers PIT 36 mois × top-30 (235 membres, 706 entrées/sorties) : E1 lead-lag ≤ 2,7 bps, E2 momentum ≤ 13,4 bps (maker ×1 seul, non significatif), E3b funding 311,9 bps max mais t = 1,37 (0/824 cellules en Bonferroni). Aucun effet n'établit une espérance brute mesurable au-delà des coûts 14/9/4 bps. Phase 1 non justifiée ; le chantier intraday reste clos (même conclusion que la tâche 5 — deux méthodes indépendantes convergent).`

### Déviations au protocole (liste, même vides)

- **D1 — Paris effectifs plafonnés à 1.0.** La formule gelée T·(g0/lrv) excède T sous autocorrélation négative (séries signées 1m). Un compte de paris effectifs ne peut excéder le nominal ; la significance reste portée par la LRV du test HAC (conservateur). Code : `effets_common.py`, commit `c951d0a`.
- **D2 — Fenêtres NY rattachées au jour civil NY du jour UTC J.** La 1re implémentation appliquait les fenêtres 16:00-17:00 NY au jour civil J-1 (t0 UTC converti), hors du groupe de bars → r_l/r_s NaN partout. La spec figée (close 23:59 UTC pour r_on, ouverture temps réel du jour J) est inchangée. Commit `550de71`.
- **D3 — Source funding = API REST** (fapi/v1/fundingRate, paginée, cache mensuel reprise possible). Le dump data.binance.vision ne publie aucun zip fundingRate (404 vérifié mensuel ET journalier sur LTCUSDT). Le protocole ne figeait pas de source ; 2/1050 membres-mois vides (币安人生USDT 2026-05, 1 autre) — négligeable, consigné.
- **D4 — Interprétations verrouillées avant run, documentées ici** : « sensibilité ×2 » = stress des coûts ×2 ; « quantile haut » E1 = combos θ=0.5σ de la grille figée ; conditionnel E2 = filtres terciles + jours de baisse ; E3b principal = non stressé (le stress ×3 est rapporté à part).
- **D5 — g0 (variance naïve) ajoutée aux sorties** de chaque cellule (hors spec) pour permettre les tests HAC/Bonferroni honnêtes. Un bug d'échelle des t-stats E3 (séries déjà en bps) a été détecté en recoupement et corrigé AVANT publication de ce rapport.
- **D6 — Multiplicité** : le contrôle Bonferroni par famille de cellules n'est pas dans la règle figée ; il est rapporté en colonne honnêteté. Il ne modifie aucun verdict (E1 reste sous les coûts ; E2/E3b n'ont aucune cellule significative).

---

*Outil de mesure statistique — en aucun cas un conseil en investissement. Le trading de produits dérivés à effet de levier comporte un risque de perte totale du capital.*
