{
  "strategie": "playbook tache 8 (pre-registre CLAW_TASKS.md, commit 50dd517)",
  "periode": {
    "debut": "2023-06-01",
    "fin": "2026-08-31",
    "jours": 1187,
    "folds": 39
  },
  "capital": 10000.0,
  "equity_finale": 5860.281538532468,
  "n_trades": 2402,
  "hit_rate": 0.4150707743547044,
  "expectancy_nette_par_trade": -1.7270876544410758,
  "expectancy_bootstrap_ic95": [
    -7.131627544693421,
    4.226445779926142
  ],
  "cagr_net": -0.1516275793378139,
  "max_drawdown": -0.7422271077163228,
  "sharpe": 0.024789169477752043,
  "sortino": 0.036875485148335205,
  "cout_total": 7054.089198790624,
  "volume_total": 4702726.132527083,
  "cout_pct_volume_2_cotes": 0.0014999999999999998,
  "sorties": {
    "hors_top30": 2072,
    "stop": 323,
    "fin_periode": 7
  },
  "duree_moyenne_jours": 4.534970857618651,
  "frais_appliques": "0.1% taker x2 + 0.05% slippage x2 (0.30% AR)",
  "regles": {
    "entree": "top10(J) & top10(J+1), fill close J+1",
    "sortie": "hors top30 OU close <= entree - 1.5xATR14",
    "taille": "1% equity / (1.5xATR), pas de levier, max 10 pos"
  },
  "barre": "cadre_valide = expectancy>0 ET IC95_bas>0 ET CAGR>0 (pre-registre)",
  "cadre_valide": false,
  "methodes_historiques": {
    "bootstrap_iid_10000": {
      "applique_a": "expectancy_nette_par_trade",
      "ic95": [
        -7.131627544693421,
        4.226445779926142
      ],
      "statut": "conservé à titre historique — échantillonnage iid des trades, hypothèse d'indépendance non tenable (trades chevauchants). Ne pas citer comme incertitude courante.",
      "remplace_par": "expectancy_detail (bootstrap par blocs temporels, fiche 21)"
    }
  },
  "expectancy_detail": {
    "recalcule_le": "2026-10-06T21:10:28.438868+00:00",
    "source_trades": "labo/playbook_trades.csv (validate_playbook.py, tâche 8 — règles pré-enregistrées, walk-forward 39 folds, 2023-06-01 → 2026-08-31)",
    "protocole": {
      "protocole_id": "bootstrap-blocs-semaine-v1",
      "unite_bloc": "semaine ISO (clé %G-W%V de la date d'entrée du trade)",
      "n_boot": 10000,
      "graine": 20261007,
      "ic": "percentiles 2,5 / 97,5 de la distribution bootstrap des moyennes",
      "justification": "les trades se chevauchent (max 10 positions, durée moyenne ~4,5 j) : deux trades quelconques ne sont pas des observations indépendantes. Un bloc = une semaine calendaire d'entrée ; on rééchantillonne les BLOCS avec remise, pas les trades. Le bootstrap iid historique est conservé à titre historique (plus étroit, hypothèse d'indépendance non tenable ici)."
    },
    "expectancy_brute_par_trade": {
      "moyenne": 1.2097,
      "ic95_bas": -7.9274,
      "ic95_haut": 11.1919,
      "n_valeurs": 2402,
      "n_blocs": 170,
      "donnees_insuffisantes": false,
      "protocole_id": "bootstrap-blocs-semaine-v1"
    },
    "expectancy_nette_par_trade_blocs": {
      "moyenne": -1.7271,
      "ic95_bas": -10.7883,
      "ic95_haut": 8.2253,
      "n_valeurs": 2402,
      "n_blocs": 170,
      "donnees_insuffisantes": false,
      "protocole_id": "bootstrap-blocs-semaine-v1"
    },
    "cout_moyen_par_trade": 2.9368,
    "qualification_brute": "moyenne observée +1.21 mais intervalle [-7.93 ; +11.19] qui contient 0 — observation, pas avantage démontré",
    "qualification_nette": "moyenne observée -1.73 mais intervalle [-10.79 ; +8.23] qui contient 0 — observation, pas avantage démontré",
    "lecture": "la moyenne brute n'est pas un avantage démontré : deux trades se chevauchant ne sont pas deux observations indépendantes. Le déplacement « brut moins coût moyen = nette » ne suffit pas à conclure ; chaque période porte sa moyenne, son nombre d'observations indépendantes et son intervalle."
  }
}