{
  "_doc": "Measured basis for MIN_GRID_RETENTION in hades_research.cointegration.pairs. The floor was originally CHOSEN (0.90) and its silence on real data was mistaken for validation: byte-identical driver output proves only min(retention) >= floor, never how much margin there was, nor whether the floor was ever approached. Measuring the population showed it was never approached by ten percentage points \u2014 so the floor could not false-positive, and equally could not catch a PARTIAL mismatch. Re-derive with scripts/derive_grid_retention.py (--verify to check this file against a fresh derivation).",
  "measured_utc": "2026-08-23",
  "source": "data/trendbars/*-H1.jsonl (the on-disk 16y cTrader corpus) and python-research/data/cot/tff-*.csv (the CFTC TFF snapshots)",
  "method": "grid_retention / grid_retention_n: retention is each series' share of observations surviving the intersection INSIDE THE OVERLAPPING SPAN, so a differing history length is not counted as a grid mismatch. Every population below is span-restricted unless the key says naive.",
  "population_pin": {
    "_doc": "the exact inputs this derivation read: every series by name, its bar count, and the sha256 of the file. A re-derivation that differs can now name WHICH series moved rather than reporting the whole calibration as irreproducible.",
    "n_series": 28,
    "series": {
      "AUDCAD": {
        "bars": 98857,
        "sha256": "1da6d7c9aff53403d1dccc8d5d8f87721be800dba04ab2973ab61acfb6b58bb0"
      },
      "AUDCHF": {
        "bars": 98858,
        "sha256": "503ae6ff5db2b0c0e0b8c3bda769a8f8438833d982c28d5ffdc91cb7e3e57a36"
      },
      "AUDJPY": {
        "bars": 98867,
        "sha256": "0b24f0e8bc2b83785973947a80fd4dcbd9d87b6e2f56d057624bff98658c0184"
      },
      "AUDNZD": {
        "bars": 98851,
        "sha256": "fc67a9bb7ee534cfe4479ce8acb4a0389c53aa79f7c75cf735f1662bdcd8f3a2"
      },
      "AUDUSD": {
        "bars": 98863,
        "sha256": "2b528d90f29bce08833315255d177f16807138614b8ad9bcd8a4bcaf7c833891"
      },
      "CADCHF": {
        "bars": 98853,
        "sha256": "e61e9378f036d891e08bfd11e310e58429289feaceb540511c0de9a28baab8f8"
      },
      "CADJPY": {
        "bars": 98866,
        "sha256": "3f5d6913379472024310c1339e28717bf8fca5890a559e38c49bd223be1e830d"
      },
      "CHFJPY": {
        "bars": 98870,
        "sha256": "97da2974d76f59aa0f1e3288196f052407d1622cc4d86bfc9e23437b85472e32"
      },
      "EURAUD": {
        "bars": 98866,
        "sha256": "f40a7ec50b1d08a9a6fb0c65adca6be137ca8400d1eb8b9d16c28c751856a64f"
      },
      "EURCAD": {
        "bars": 98866,
        "sha256": "335e572ce0643beb96deb56adf4c1e1ac74353e6e4535b65dcc72660ed18aeb1"
      },
      "EURCHF": {
        "bars": 98858,
        "sha256": "dce126aaf11160af8a99578a66a3472c9ba5ba93b7e96032cf75ab6dba7e5bd7"
      },
      "EURGBP": {
        "bars": 98860,
        "sha256": "07eddd7e3dccc1bd25e69b702829988cee2e1766c2c975f2418bc01b4cbdfe87"
      },
      "EURJPY": {
        "bars": 98871,
        "sha256": "6a56138578e1c04c8c3373e1c8c3e6904677ce18ccce5fe293932b979e7e506e"
      },
      "EURNZD": {
        "bars": 98853,
        "sha256": "7c4bdb37a51f521f4609e8fbd3bfddc299ac3b5cbcdd5b24650e9a8f539ef8ca"
      },
      "EURUSD": {
        "bars": 98864,
        "sha256": "32e531cfe5ef131d075fce8d4ca97adaeb9addc47809983d99cea32cde504e12"
      },
      "GBPAUD": {
        "bars": 98864,
        "sha256": "faba8a1c180e8403ef32a649e7191cbc88d20e31d32345aaabfa3d5c9b2e45d1"
      },
      "GBPCAD": {
        "bars": 98839,
        "sha256": "7f1e249caa8ea6542a15df32871bbbf041f567a36f4cd2becc65db2586201974"
      },
      "GBPCHF": {
        "bars": 98864,
        "sha256": "4f5bc3624154906aa3e6d95a7225e80edda4cb7d4a010f3a8a3dd2a0e49b9e67"
      },
      "GBPJPY": {
        "bars": 98868,
        "sha256": "d53652db90e1f329c14f3964ec6435caa61b701cef7905093438f734b218fbb1"
      },
      "GBPNZD": {
        "bars": 98854,
        "sha256": "e7547910815cf04d77a5958cdd86fc066b207368c20e82e65f5cee67afe55700"
      },
      "GBPUSD": {
        "bars": 98865,
        "sha256": "d5f7247fdc3307b5585c97b35374cfb6c286e237cecd88a9b70fb3d8e6976bc1"
      },
      "NZDCAD": {
        "bars": 98843,
        "sha256": "edde51738df1e32fbe3ae8959491523b78e929b168311b95a1fbf200020cf049"
      },
      "NZDCHF": {
        "bars": 98849,
        "sha256": "49f83a57e50fa0543bf065413c52ac85f726622d0d7a8eccf3b0ce6746624dd9"
      },
      "NZDJPY": {
        "bars": 98859,
        "sha256": "4afcd6f994a91268af180eb949446f15066bae6826e94cd8146828a8d9c6fb31"
      },
      "NZDUSD": {
        "bars": 98847,
        "sha256": "17cb7af531c1a3d8fb77bd8cdd5f776097e95e886133048e42fa48243a6bf223"
      },
      "USDCAD": {
        "bars": 98862,
        "sha256": "214a31fc7e891bf037419981f853505620f06f00dec62881629996be8a4d2f79"
      },
      "USDCHF": {
        "bars": 98859,
        "sha256": "6263b0925494da631a87080692ff02b2d6252cbb1af19f08742b13d426ce297e"
      },
      "USDJPY": {
        "bars": 98863,
        "sha256": "6a68116f4eebfee92eed89ed3c18c69839f34fb123f0ecafd4145e7af85f5fe3"
      }
    }
  },
  "held_out_population_class": {
    "_doc": "series ON DISK that this floor does NOT govern. They are excluded by the declared FX population, and the exclusion is MEASURED here rather than silent: pooling them moves the same-grid minimum below this file's own floor, which is D-47 \u2014 a floor derived on one population class applied to a structurally different one. They keep different sessions from spot FX.",
    "series": [
      "XAGUSD",
      "XAUUSD",
      "XTIUSD"
    ],
    "n": 3,
    "measured_if_pooled": {
      "statistic": "min(retention_y, retention_x) per unordered combination",
      "n": 465,
      "min": 0.944352,
      "p01": 0.944388,
      "p05": 0.944447,
      "median": 0.999848,
      "max": 0.99998,
      "n_pairs": 31,
      "n_combinations": 465,
      "tightest_combination": "EURJPY~XAUUSD",
      "note": "One clock, one corpus. The residual is genuine per-pair gaps, not grid disagreement."
    },
    "reading": "the pooled figure is recorded so a reader can see WHAT the exclusion is worth, and so a future series landing on disk cannot be absorbed without the number moving visibly."
  },
  "same_grid_population": {
    "statistic": "min(retention_y, retention_x) per unordered combination",
    "n": 378,
    "min": 0.999606,
    "p01": 0.999646,
    "p05": 0.999686,
    "median": 0.999869,
    "max": 0.99998,
    "n_pairs": 28,
    "n_combinations": 378,
    "tightest_combination": "EURJPY~GBPCAD",
    "note": "One clock, one corpus. The residual is genuine per-pair gaps, not grid disagreement."
  },
  "crossrate_triangle_population": {
    "statistic": "min(retention) over the three legs, per triangle",
    "n": 21,
    "min": 0.999606,
    "p01": 0.999606,
    "p05": 0.999686,
    "median": 0.999858,
    "max": 0.999909,
    "pivot": "USD",
    "n_triangles": 21,
    "n_leg_retentions": 63,
    "tightest_triangle": "GBPCAD",
    "note": "THREE-way: a cross against its two pivot legs, the alignment behind /real/crossrate/coherence.json. Three-way retention is bounded above by the pairwise one, so the published board needed its own measurement rather than an inference from the pairwise population."
  },
  "cot_weekly_population": {
    "n_contracts": 7,
    "contracts": [
      "6A",
      "6B",
      "6C",
      "6E",
      "6J",
      "6N",
      "6S"
    ],
    "n_common_weeks": 201,
    "naive_min": 0.191977,
    "naive_max": 1.0,
    "span_restricted_min": 1.0,
    "span_restricted_max": 1.0,
    "note": "THE RECEIPT FOR THE SPAN RESTRICTION. Two contracts (6C, 6S) begin sixteen years after the other five, so naive len(common)/len(all) reads ~0.19 on the five long legs while the lattice agreement is exact. A floor applied to the naive ratio would refuse five legitimate legs; applied inside the overlapping span it passes all seven. Different HISTORY and different LATTICE are different facts."
  },
  "async_reference_cases": {
    "_doc": "Retention of the BANNED shapes, computed from the guard's own fixture constructions (span-restricted, as the guard measures) \u2014 the other population the floor must sit above.",
    "offset_half_hour_grid": 0.0,
    "daily_against_hourly": 0.0421,
    "eight_hour_session_against_24h_fx": 0.3344
  },
  "floor": {
    "value": 0.99,
    "basis": "Placed BELOW the measured same-grid minimum with room for a series whose gap rate is an order of magnitude worse than anything currently on disk, and far ABOVE the tightest banned shape. The two populations are separated by a gulf; the floor is positioned by the measurement rather than chosen from the middle of the empty space.",
    "previous_value": 0.9,
    "why_raised": "0.90 sits ~10 points below every real observation, so it could only ever catch CATASTROPHIC mismatch. A series at 0.92 \u2014 a partially-shared grid, or a badly gapped leg \u2014 would have passed while being genuinely wrong.",
    "widening_rule": "Lowering this floor requires a NEW measurement showing a legitimate same-grid population below it, recorded here. It is not a tuning knob."
  }
}
