{
 "bound": "churn is over days BOTH arms label; the placebo arm re-runs RAW returns over the deseasonalised day set, so its churn is the day-set artifact alone and the net is what the correction moved",
 "code_git_sha": "092e103ca235e669d7507bb64b66e7b91b486cbb",
 "derivation_receipt": "bar_measure_series(return) proved elementwise identical to BOTH vol.decomposition.intraday_returns_by_day and jumps.detect.intraday_returns_with_times on this corpus: 94,674 returns each, 0 timestamps differing, max disagreement 0.0",
 "families": [
  {
   "churn": 0.149265,
   "churn_net_of_placebo": 0.14875,
   "dist_deseasonalised": {
    "FC_HIGH": 1481,
    "FC_LOW": 430,
    "FC_MID": 1968
   },
   "dist_raw": {
    "FC_HIGH": 1222,
    "FC_LOW": 516,
    "FC_MID": 2141
   },
   "family": "har-vol",
   "n_changed": 579,
   "n_jointly_labelled": 3879,
   "placebo_churn_dayset_only": 0.000516,
   "transitions": {
    "FC_HIGH->FC_MID": 56,
    "FC_LOW->FC_MID": 147,
    "FC_MID->FC_HIGH": 315,
    "FC_MID->FC_LOW": 61
   },
   "tvd": 0.06677
  },
  {
   "churn": 0.053654,
   "churn_net_of_placebo": 0.053654,
   "dist_deseasonalised": {
    "JUMP": 353,
    "NO_JUMP": 3766
   },
   "dist_raw": {
    "JUMP": 352,
    "NO_JUMP": 3767
   },
   "family": "jumps",
   "n_changed": 221,
   "n_jointly_labelled": 4119,
   "placebo_churn_dayset_only": 0.0,
   "transitions": {
    "JUMP->NO_JUMP": 110,
    "NO_JUMP->JUMP": 111
   },
   "tvd": 0.000243
  },
  {
   "baseline_note": "the baseline is the PLACEBO (raw returns on the deseasonalised arm's timestamp set), because positional 720-blocks re-phase when warm-up returns are dropped and raw-vs-deseasonalised shares zero block boundaries - the placebo has identical phasing so the comparison isolates the correction",
   "churn_placebo_vs_deseasonalised": 0.051852,
   "dist_deseasonalised": {
    "mean-reverting": 7,
    "random-walk": 128
   },
   "dist_placebo": {
    "mean-reverting": 2,
    "random-walk": 131,
    "trending": 2
   },
   "family": "return-memory",
   "n_blocks_deseasonalised": 135,
   "n_blocks_raw": 136,
   "n_blocks_shared_raw_vs_deseasonalised": 0,
   "n_changed": 7,
   "n_jointly_labelled": 135,
   "own_return_population": 98011,
   "population_note": "reads log_return_segments (gap-split, 98,011) not the within-fx-day series (94,674) the other two families read; 3,343 timestamps are unique to the gap rule and the 94,668 shared returns agree to 0.0",
   "returns_after_deseasonalisation": 97915,
   "tvd": 0.037037
  },
  {
   "churn": 0.427606,
   "design_note": "correction applied where a trailing hour profile exists, raw TR kept where it does not, so the series stays 1:1 with the bars and the arms are index-aligned - no phase confound to control for",
   "dist_deseasonalised": {
    "Q1": 32237,
    "Q2": 25668,
    "Q3": 20549,
    "Q4": 19910
   },
   "dist_raw": {
    "Q1": 46220,
    "Q2": 26801,
    "Q3": 16315,
    "Q4": 9028
   },
   "family": "atr",
   "grain": "INTRADAY",
   "n_changed": 42061,
   "n_jointly_labelled": 98364,
   "n_left_raw": 96,
   "n_true_ranges_corrected": 98767,
   "replication_receipt": "the TR + Wilder replication reproduces wilder_atr(bars) on this corpus: 98,864 values, identical nan pattern, max disagreement 0.0",
   "transitions": {
    "Q1->Q2": 13877,
    "Q1->Q3": 1003,
    "Q2->Q1": 837,
    "Q2->Q3": 13461,
    "Q2->Q4": 1519,
    "Q3->Q1": 57,
    "Q3->Q2": 610,
    "Q3->Q4": 10030,
    "Q4->Q1": 3,
    "Q4->Q2": 197,
    "Q4->Q3": 467
   },
   "tvd": 0.153674
  },
  {
   "churn": 0.116688,
   "control_note": "compared against a RAW reconstruction, not the original bars, so the rebuild is controlled out; the raw reconstruction reproduces AM-2a's independently measured modal shares (regime CALM 0.8811 vs 0.881, liquidity LIQUID 0.6143 vs 0.614)",
   "dist_control": {
    "CALM": 86887,
    "COMPRESSION": 8629,
    "EXPANSION": 1075,
    "UNSTABLE": 2022
   },
   "dist_corrected": {
    "CALM": 98314,
    "EXPANSION": 140,
    "UNSTABLE": 159
   },
   "family": "regime",
   "grain": "INTRADAY",
   "n_changed": 11507,
   "n_jointly_labelled": 98613,
   "seam": "rebuilt bar series",
   "transitions": {
    "CALM->EXPANSION": 13,
    "COMPRESSION->CALM": 8629,
    "EXPANSION->CALM": 1002,
    "UNSTABLE->CALM": 1809,
    "UNSTABLE->EXPANSION": 54
   },
   "tvd": 0.115877
  },
  {
   "churn": 0.096967,
   "control_note": "compared against a RAW reconstruction, not the original bars, so the rebuild is controlled out; the raw reconstruction reproduces AM-2a's independently measured modal shares (regime CALM 0.8811 vs 0.881, liquidity LIQUID 0.6143 vs 0.614)",
   "dist_control": {
    "ILLIQUID": 37936,
    "LIQUID": 60427
   },
   "dist_corrected": {
    "ILLIQUID": 36822,
    "LIQUID": 61541
   },
   "family": "liquidity",
   "grain": "INTRADAY",
   "n_changed": 9538,
   "n_jointly_labelled": 98363,
   "seam": "rebuilt bar series",
   "transitions": {
    "ILLIQUID->LIQUID": 5326,
    "LIQUID->ILLIQUID": 4212
   },
   "tvd": 0.011325
  }
 ],
 "grain": "H1",
 "kind": "hades-deseasonalisation-churn",
 "n_bars": 98864,
 "n_days_deseasonalised": 4174,
 "n_days_raw": 4178,
 "n_returns": 94674,
 "n_returns_no_profile": 96,
 "pair": "EURUSD"
}