[
  {
    "slug": "prop-firm-strategy-claims",
    "ledgerClaim": "Prop-firm strategy claims: 13 setups sold to prop traders, NQ and ES micros, 0 of 26 validated (site item, not a LEDGER row)",
    "ledgerClaims": [
      "Prop-firm strategy claims: 13 setups sold to prop traders, NQ and ES micros, 0 of 26 validated (site item, not a LEDGER row)"
    ],
    "title": "Backtest of claimed 'profitable prop trader' strategies (13 setups x NQ/ES micros) plus a prop-account simulator",
    "verdict": "Tape: 0 of 26 cells VALIDATED. Prop overlays (frozen H-P1): not supported. Prop business test (frozen H-P2): holds. Post-hoc size sensitivity (addendum, not a pre-registered verdict).",
    "preregistered": "yes",
    "preregDate": "2026-09-16T17:48:13-04:00",
    "resultsDate": "2026-09-16T17:50:48-04:00",
    "arms": 28,
    "sample": "In-sample 2019-01-01 to 2023-12-31; out-of-sample 2024-01-01 to 2026-09-11 (2018 used only to warm 20-day means)",
    "markets": "MNQ and MES (micros), traded off NQ and ES GLBX 1m bars (.v.0 volume roll)",
    "costs": "$1.50 per micro round turn plus 1 tick slippage each way on market and stop orders; news stop entries +4 ticks; limits fill only 1 tick through",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ, ES 2018-2026); CPI/NFP/FOMC release timestamps from the fp-context event archive (<data-root>/fp-context: events/**/*.jsonl with ts_event/ts_published/subclass/region, events/earnings/_weights.json, features/context_daily.jsonl); built from FMP, Fed, BLS/BEA, Federal Register, GDELT, Alpaca and SEC EDGAR feeds; not redistributed and its builder is not included",
    "files": [
      "prop-firm-strategy-claims/CATALOG.md",
      "prop-firm-strategy-claims/PREREG-2026-09-16.md",
      "prop-firm-strategy-claims/PREREG-2026-09-16.sha256",
      "prop-firm-strategy-claims/RESULTS-2026-09-16.md",
      "prop-firm-strategy-claims/SOURCES.md",
      "prop-firm-strategy-claims/engine.mjs",
      "prop-firm-strategy-claims/out/engine.log",
      "prop-firm-strategy-claims/out/prop-size-sensitivity.json",
      "prop-firm-strategy-claims/out/prop-summary.json",
      "prop-firm-strategy-claims/out/tape-summary.json",
      "prop-firm-strategy-claims/sim.mjs"
    ],
    "modifiedFromSource": [
      "prop-firm-strategy-claims/CATALOG.md",
      "prop-firm-strategy-claims/engine.mjs"
    ],
    "notes": "Strongest pre-registration in the bundle: PREREG-2026-09-16.md is byte-identical to the source and its sha256 4e921928ecd174744cb1d2970fce62d1c0305015e9308a8c4d2f3aa3242cfe32 matches the recorded .sha256 file ('frozen 2026-09-16 17:48:13 EDT'); prereg created 17:48:11, engine.mjs 17:50:33, first output 17:50:48. Arms = 26 tape cells (13 setups x 2 roots) + the two prop hypotheses H-P1/H-P2. Not counted as arms: 26 seeded coin-flip control streams, and the post-hoc size addendum (520 cells; 4 positive in both halves at list fees, 3 of them coin-flip controls). The site's strategyClaims.ts numbers (all 26 cells' net/t/n/verdict, overlay table, size rows, 520/4/3) match out/*.json exactly. CATALOG.md/SOURCES.md are the public claims being tested (third-party URLs). Run: node --max-old-space-size=12288 engine.mjs; node sim.mjs; SIZES=1,3,5,10,20 node sim.mjs. Trade-level outputs (out/trades-NQ.json, out/trades-ES.json) are not included."
  },
  {
    "slug": "level-breakouts-tape-diagnosis",
    "ledgerClaim": "Level breakouts",
    "ledgerClaims": [
      "Level breakouts"
    ],
    "title": "Why the tape-graded record loses: replication of the published level-breakout family, plus late-session momentum and overnight drift checks",
    "verdict": "The published pick family has no edge — replicated three ways (net of $4 RT + 1 tick each way: -0.217R to -0.091R per trade across five variants).",
    "preregistered": "post-hoc",
    "preregDate": null,
    "resultsDate": "2026-09-15T22:26:10-04:00",
    "arms": 53,
    "sample": "Breakout replication: 2026 year-to-date only (3,971 sessions, about 5,500 trades per variant). Late-session momentum: 702 days 2023-2026. Overnight drift: 2020-2026, about 1,660 nights per root",
    "markets": "CL, NQ, ES, GC, ZN, RTY, YM, 6E (full-size contracts)",
    "costs": "$4 round turn plus 1 tick slippage each way (overnight/late-session scripts: NQ $14, ES $29, CL $24, GC $24 per round turn)",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (2020-2026; the breakout scripts read 2026.csv only); QQQ dealer-gamma history <data-root>/fp-data/gex/history/*.json.gz from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE)",
    "files": [
      "level-breakouts-tape-diagnosis/2026-09-15-why-the-tape-loses.md",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study2.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study3.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study4.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study5.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study6.mjs"
    ],
    "modifiedFromSource": [
      "level-breakouts-tape-diagnosis/2026-09-15-why-the-tape-loses.md",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study2.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study3.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study4.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study5.mjs",
      "level-breakouts-tape-diagnosis/scripts-2026-09-15/study6.mjs"
    ],
    "notes": "Post hoc diagnosis, no pre-registration. Arms is a lower bound: 26 cells reported in the write-up (5 breakout variants, 4 target multiples, 1 breakeven-stop variant, 8 late-session-momentum cells, 8 overnight/day cells) plus about 27 conditioner splits printed by study2.mjs and not tabulated. The breakout replication covers 2026 YTD only; the multi-year evidence the write-up cites is the separate pn-001 study (orb-vxn-and-gex-regime) and an external paper. Three passages quoting the desk's live pick record were redacted under the 2026-09-10 disclosure rule. Scripts write a debug file to <out-dir>."
  },
  {
    "slug": "orb-vxn-and-gex-regime",
    "ledgerClaim": "Opening-range breaks; Level breakouts (multi-year evidence)",
    "ledgerClaims": [
      "Opening-range breaks",
      "Level breakouts (multi-year evidence)"
    ],
    "title": "pn-001 opening-range breakout by VXN tercile (NQ, ES 2010-2026) and pn-070/071 GEX-regime fade vs breakout (2026 forward archive)",
    "verdict": "pn-001 ORB by VXN tercile — REFUTED as a system. pn-070/071 GEX regime — H1 PROMISING, accruing; H2 unreadable.",
    "preregistered": "yes",
    "preregDate": "2026-08-22T11:53:23-04:00",
    "resultsDate": "2026-08-22T11:57:45-04:00",
    "arms": 32,
    "sample": "pn-001: NQ+ES 1m 2010-2026, quad-witching Fridays excluded, about 10,500 trades; VXN tercile cuts frozen on 2010-2015. pn-070: 2026-07-26 onward, about 20 days per symbol (11-15 classified)",
    "markets": "NQ, ES (.c.0 continuous)",
    "costs": "NQ 0.5 pt / ES 0.25 pt per side (secondary net line)",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ, ES 2010-2026); FRED VXNCLS.csv (public); QQQ/SPY GEX snapshots <data-root>/fp-data/gex/2026/ from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE) (pn-070 only)",
    "files": [
      "orb-vxn-and-gex-regime/2026-08-22-pn001-orb-vxn.md",
      "orb-vxn-and-gex-regime/2026-08-22-pn070-gex-regime.md",
      "orb-vxn-and-gex-regime/RESULTS-2026-08-22.md",
      "orb-vxn-and-gex-regime/study_gex_regime.py",
      "orb-vxn-and-gex-regime/study_orb_vxn.py"
    ],
    "modifiedFromSource": [
      "orb-vxn-and-gex-regime/2026-08-22-pn001-orb-vxn.md",
      "orb-vxn-and-gex-regime/2026-08-22-pn070-gex-regime.md",
      "orb-vxn-and-gex-regime/study_gex_regime.py",
      "orb-vxn-and-gex-regime/study_orb_vxn.py"
    ],
    "notes": "Both preregs were created 22-31 s before the scripts and about 4 minutes before RESULTS; no in-text times. Arms: pn-001 24 cells (2 symbols x 2 OR windows x 3 VXN terciles x 2 exits); pn-070 8 cells (2 symbols x 2 regimes x 2 tests). pn-070 H1 (breakouts on negative-GEX days) is a gamma-regime rule that was left 'PROMISING, accruing' at n=3/8 with a rerun due at about 60 classified days (late Oct 2026); it was never closed."
  },
  {
    "slug": "rvol-orb",
    "ledgerClaim": "Opening-range breaks",
    "ledgerClaims": [
      "Opening-range breaks"
    ],
    "title": "Does relative-volume selection rescue the opening-range breakout on futures?",
    "verdict": "VERDICT: REFUTED (primary cell t = -0.33, mean -1.11 pt; 0 of 7 instruments replicate).",
    "preregistered": "yes",
    "preregDate": "2026-08-25T21:26:52-04:00",
    "resultsDate": "2026-08-25T21:31:33-04:00",
    "arms": 320,
    "sample": "2010-06-07 to 2026-08-25; NQ 4,033 sessions, 3,913 trades (577 in the top RVOL quintile); IS/OOS split at 2020",
    "markets": "NQ primary; ES, RTY, YM, CL, GC, ZN, 6E replication",
    "costs": "NQ 1.0 pt round trip base (amended from 0.5 before any run); sensitivity 0 / 0.5 / 2.0 pt; per-instrument tick-scaled; stop slippage max(2 ticks, 0.25 x excursion)",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (8 roots, 2010-2026)",
    "files": [
      "rvol-orb/2026-08-25-rvol-orb-prereg.md",
      "rvol-orb/2026-08-25-rvol-orb-results.md",
      "rvol-orb/2026-08-25-rvol-orb-results.txt",
      "rvol-orb/rvol_orb.py",
      "rvol-orb/rvol_orb_battery.py"
    ],
    "modifiedFromSource": [
      "rvol-orb/2026-08-25-rvol-orb-prereg.md",
      "rvol-orb/2026-08-25-rvol-orb-results.md",
      "rvol-orb/2026-08-25-rvol-orb-results.txt",
      "rvol-orb/rvol_orb.py",
      "rvol-orb/rvol_orb_battery.py"
    ],
    "notes": "320 cells were pre-counted by the study (8 instruments x 5 RVOL buckets x 2 entries x 4 frictions); 1 cell was confirmatory. Unconditional ORB (all trades) is also reported: +0.744 pt gross, -0.256 pt net (t -0.21). Timestamp defect: the prereg says 'Frozen 19:30 MDT' and its amendment says '19:45 MDT', but the file was created 21:26:52 EDT (19:26 MDT) and last written 21:27:37 EDT, before rvol_orb.py (21:28:24) and the first raw output (21:31:33). The file order supports pre-registration; the in-document times are wrong. The results honestly record that monotonicity criterion 2 was written too loosely and a mid-study bug fix (NQ results bit-identical)."
  },
  {
    "slug": "crown-play-policies",
    "ledgerClaim": "Opening-range breaks (P6 control); Gamma walls, cages and flow direction (parent pre-registration of Parts C and D)",
    "ledgerClaims": [
      "Opening-range breaks (P6 control)",
      "Gamma walls, cages and flow direction (parent pre-registration of Parts C and D)"
    ],
    "title": "Mechanical crown-play policies on NQ (Part A), exit-geometry grid (Part B), and the definitions of the gamma-wall policies (Parts C, D)",
    "verdict": "Part A: all seven policies refuted. Part B geometry grid: Survivors none; Suggestive none.",
    "preregistered": "partial",
    "preregDate": "2026-09-09T11:57:36-04:00",
    "resultsDate": "2026-09-09T11:58:53-04:00",
    "arms": 196,
    "sample": "NQ 1m GLBX .c.0, 2012-01-03 to 2026-09-04, 3,569 sessions; halves 2012-2018 / 2019-2026",
    "markets": "NQ",
    "costs": "0.25 pt slippage against the trade on fills; no commission (about $4.5 round turn, noted as about 0.006R)",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ 2011-2026; open_factors.py builds the data/NQ_1m_et.parquet cache that crown_policies.py requires); FRED VXN",
    "files": [
      "crown-play-policies/2026-09-09-crown-geometry-results.md",
      "crown-play-policies/2026-09-09-crown-policies-prereg.md",
      "crown-play-policies/2026-09-09-crown-policies-results.md",
      "crown-play-policies/crown_geometry.py",
      "crown-play-policies/crown_policies.py",
      "crown-play-policies/open_factors.py"
    ],
    "modifiedFromSource": [
      "crown-play-policies/2026-09-09-crown-policies-prereg.md",
      "crown-play-policies/crown_policies.py",
      "crown-play-policies/open_factors.py"
    ],
    "notes": "Included because Parts C and D of this prereg define the gamma-wall rules tested in gamma-wall-backfill, and crown_policies.py/open_factors.py are code dependencies of every gamma study. Part A (7 policies) prereg created 11:57:36, before crown_policies.py (11:58:29) and its results (11:58:53). Partial because Parts B-D were appended to the same file later (final write 12:34:38) and the Part B grid results were written at 12:14:16, so the file system cannot show Part B's text predates its results. Arms = 7 (Part A) + 189 (Part B grid: 7 policies x 27 geometries). P6 is a 15-minute opening-range-break control (-0.003 R/trigger, n=3,497). One sentence quoting the live crown-play record was redacted under the disclosure rule. open_factors.py also runs the 2026-09-08 open-factor study, which is not part of this bundle."
  },
  {
    "slug": "gamma-wall-backfill",
    "ledgerClaim": "Gamma walls, cages and flow direction",
    "ledgerClaims": [
      "Gamma walls, cages and flow direction"
    ],
    "title": "Gamma-wall history backfill: wall-fade and wall-break policies on 730 days of reconstructed dealer positioning",
    "verdict": "P8 long-gamma fade REFUTED; P9 short-gamma break REFUTED; Part D first-touch fade REFUTED; Part D2 (doctrine stop) REFUTED; P10 cage held 68% — descriptive only. The wall-fade line is closed on this sample.",
    "preregistered": "partial",
    "preregDate": "2026-09-09T12:55:44-04:00",
    "resultsDate": "2026-09-09T12:57:48-04:00",
    "arms": 4,
    "sample": "730 history days 2023-10-10 to 2026-09-08; 693 sessions evaluated (quad-witching excluded); halves 2023-10 to 2025-03 / 2025-03 to 2026-09",
    "markets": "NQ, with QQQ (and NDX, agreement only) strike-level gamma exposure",
    "costs": "Part C: 1 pt slippage; Part D: limit fill at the wall or the bar's open, whichever is worse; costs not needed for the verdict (gross already negative)",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ); QQQ/NDX end-of-day strike gamma exposure and QQQ daily OHLC per date from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE) (pulled with backfill_history.mjs and backfill_ndx_close.mjs into <data-root>/fp-data/gex/history); live 09:10 QQQ snapshots <data-root>/fp-data/gex/2026/QQQ_*T0910.json.gz for the proxy validation (forward archive, not included)",
    "files": [
      "gamma-wall-backfill/2026-09-09-gamma-backfill-prereg.md",
      "gamma-wall-backfill/2026-09-09-gamma-backfill-results.md",
      "gamma-wall-backfill/backfill_history.mjs",
      "gamma-wall-backfill/backfill_ndx_close.mjs",
      "gamma-wall-backfill/crown_policies.py",
      "gamma-wall-backfill/gamma_backfill.py",
      "gamma-wall-backfill/gamma_policy.py",
      "gamma-wall-backfill/open_factors.py"
    ],
    "modifiedFromSource": [
      "gamma-wall-backfill/2026-09-09-gamma-backfill-results.md",
      "gamma-wall-backfill/backfill_history.mjs",
      "gamma-wall-backfill/backfill_ndx_close.mjs",
      "gamma-wall-backfill/crown_policies.py",
      "gamma-wall-backfill/open_factors.py"
    ],
    "notes": "The original prereg file (created 12:55:44) predates the data pull (12:56:04 to 12:57:38). Partial because three disclosed changes followed partial output: Amendment 2 (proxy spot fix, written after descriptive policy figures had printed), a walk correction that removed a look-ahead (which had produced 62-64% hit rates), and Part D2 (added after Part D was refuted). Timestamp defect: those sections are stamped 13:05, 13:12 and 13:20, but the prereg file's last write is 13:03:53 and the results file (with D2 results) was created at 12:57:48 and last written 13:06:46. Arms = P8, P9, D, D2 (P10 is descriptive). One sentence giving the live shadow-ledger tally was redacted under the disclosure rule."
  },
  {
    "slug": "gamma-cage-classifier",
    "ledgerClaim": "Gamma walls, cages and flow direction",
    "ledgerClaims": [
      "Gamma walls, cages and flow direction"
    ],
    "title": "Cage-day classifier: can pre-09:30 factors predict a close inside the gamma walls, and does that make the walls tradable?",
    "verdict": "REFUTED (rule: AUC >= 0.65, top >= 80%, bottom <= 55%); conditional trade rules reported descriptively, no verdict.",
    "preregistered": "yes",
    "preregDate": "2026-09-09T13:28:11-04:00",
    "resultsDate": "2026-09-09T13:28:29-04:00",
    "arms": 3,
    "sample": "688 sessions 2023-10-11 to 2026-09-04 (base cage rate 67.9%); walk-forward OOS 2025-2026 (398 sessions)",
    "markets": "NQ with QQQ gamma walls",
    "costs": "0.25 pt slippage; stop max(12, 2 x ATR3 of 5m bars); target 1.5R",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ); <data-root>/fp-data/gex/history from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE); FRED VXNCLS.csv",
    "files": [
      "gamma-cage-classifier/2026-09-09-cage-classifier-prereg.md",
      "gamma-cage-classifier/2026-09-09-cage-classifier-results.md",
      "gamma-cage-classifier/cage_classifier.py",
      "gamma-cage-classifier/crown_policies.py",
      "gamma-cage-classifier/gamma_policy.py",
      "gamma-cage-classifier/open_factors.py"
    ],
    "modifiedFromSource": [
      "gamma-cage-classifier/crown_policies.py",
      "gamma-cage-classifier/open_factors.py"
    ],
    "notes": "Near miss recorded honestly: AUC 0.658 and top tercile 82.0% pass, bottom tercile 56.4% fails the 55% bar; width alone gives AUC 0.660. Arms = 1 classifier + 2 conditional rules (C1, C2) that were only to be evaluated if the classifier validated. Timestamp defect: the prereg says 'frozen 2026-09-09 14:20', but the file was created 13:28:11 (same second as cage_classifier.py) and the results file 18 s later, headed 13:28. The file order supports pre-registration; the stated freeze time is wrong."
  },
  {
    "slug": "options-flow-direction",
    "ledgerClaim": "Gamma walls, cages and flow direction",
    "ledgerClaims": [
      "Gamma walls, cages and flow direction"
    ],
    "title": "Options-flow direction factors: does net options premium carry NQ direction?",
    "verdict": "All three policies refuted (FL1 QQQ 10:10 flow, FL2 market tide 10:10, FL3 prior-day QQQ flow). No factor carries direction.",
    "preregistered": "yes",
    "preregDate": "2026-09-09T13:33:24-04:00",
    "resultsDate": "2026-09-09T13:34:27-04:00",
    "arms": 3,
    "sample": "712 sessions 2023-10-10 to 2026-09-04; halves split 2025-03-15",
    "markets": "NQ, with QQQ net premium and market-wide tide",
    "costs": "0.25 pt slippage; stop max(12, 2 x ATR3 of 5m bars); target 1.5R; 60-minute cap",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ); per-minute QQQ net-premium ticks and market tide per date from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE) (backfill_flow.mjs writes <data-root>/fp-data/flow/*.json.gz)",
    "files": [
      "options-flow-direction/2026-09-09-flow-prereg.md",
      "options-flow-direction/2026-09-09-flow-results.md",
      "options-flow-direction/backfill_flow.mjs",
      "options-flow-direction/crown_policies.py",
      "options-flow-direction/flow_study.py",
      "options-flow-direction/open_factors.py"
    ],
    "modifiedFromSource": [
      "options-flow-direction/backfill_flow.mjs",
      "options-flow-direction/crown_policies.py",
      "options-flow-direction/open_factors.py"
    ],
    "notes": "The prereg file (13:33:24) predates the first flow data file (13:33:31), consistent with 'frozen before the bulk pull'. Arms = FL1-FL3 (8 descriptive factor/target rows carry no verdict). Timestamp defect: the prereg says 'frozen 2026-09-09 14:45'; the file system and the results header (13:35) show it was written about 70 minutes earlier than stated."
  },
  {
    "slug": "gamma-wall-migration",
    "ledgerClaim": "Gamma walls, cages and flow direction",
    "ledgerClaims": [
      "Gamma walls, cages and flow direction"
    ],
    "title": "Gamma-wall migration at the 10:10 book refresh as an NQ entry signal",
    "verdict": "REFUTED as mechanical 10:10 entries; suggestive as a context factor.",
    "preregistered": "yes",
    "preregDate": "2026-09-09T13:10:11-04:00",
    "resultsDate": "2026-09-09T13:10:19-04:00",
    "arms": 3,
    "sample": "693 sessions 2023-10-11 to 2026-09-04; halves split 2025-03-15",
    "markets": "NQ with QQQ gamma book",
    "costs": "0.25 pt slippage; stop max(12, 2 x ATR3 of 5m bars); target 1.5R; 60-minute cap",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ); <data-root>/fp-data/gex/history from Unusual Whales API data (requires your own subscription; the pull scripts here read the key from an env file named by UW_KEY_FILE)",
    "files": [
      "gamma-wall-migration/2026-09-09-wall-migration-prereg.md",
      "gamma-wall-migration/2026-09-09-wall-migration-results.md",
      "gamma-wall-migration/crown_policies.py",
      "gamma-wall-migration/gamma_policy.py",
      "gamma-wall-migration/open_factors.py",
      "gamma-wall-migration/wall_migration.py"
    ],
    "modifiedFromSource": [
      "gamma-wall-migration/crown_policies.py",
      "gamma-wall-migration/open_factors.py"
    ],
    "notes": "All three policies (M1 wall drift, M2 tilt shift, M3 flip cross) were positive in both halves but none cleared one-sided p < 0.0167, so all failed the frozen rule. Timestamp defect: the prereg says 'frozen 2026-09-09 13:55', but it was created 13:10:11 (same second as wall_migration.py) and the results 8 s later, headed 13:10."
  },
  {
    "slug": "product-strategy-suite",
    "ledgerClaim": "Being long during the day session; Gap continuation in the first 30 minutes; Turn-of-month strength; Release days are wilder",
    "ledgerClaims": [
      "Being long during the day session",
      "Gap continuation in the first 30 minutes",
      "Turn-of-month strength",
      "Release days are wilder"
    ],
    "title": "What the desk can actually publish: a 29-arm strategy suite (overnight, timing, calendar, day session, gap follow-through)",
    "verdict": "Twenty-nine arms run against a 27-test pre-registration, zero validated.",
    "preregistered": "partial",
    "preregDate": "2026-09-16T09:58:43-04:00",
    "resultsDate": "2026-09-16T10:02:33-04:00",
    "arms": 29,
    "sample": "2010-2026 per root (RTY from 2017, 6E partial); event-conditioned arms only 2020-01-03 onward (event flags start there, not 2016 as the prereg assumed); splits 2010-2018 / 2019-2026 (price arms), 2016-2021 / 2022-2026 (event arms)",
    "markets": "NQ, ES, YM, RTY, GC, CL, ZN, 6E (full-size)",
    "costs": "Round turn (2 ticks + $4): NQ $14, ES $29, YM $14, RTY $14, GC $24, CL $24, ZN $35.25, 6E $16.50",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (8 roots, 2010-2026); the fp-context event archive (<data-root>/fp-context: events/**/*.jsonl with ts_event/ts_published/subclass/region, events/earnings/_weights.json, features/context_daily.jsonl); built from FMP, Fed, BLS/BEA, Federal Register, GDELT, Alpaca and SEC EDGAR feeds; not redistributed and its builder is not included",
    "files": [
      "product-strategy-suite/2026-09-16-product-strategies-prereg.md",
      "product-strategy-suite/2026-09-16-product-strategies-results.json",
      "product-strategy-suite/2026-09-16-product-strategies-results.md",
      "product-strategy-suite/run_overnight_event_nights.py",
      "product-strategy-suite/run_product_strategies.py"
    ],
    "modifiedFromSource": [
      "product-strategy-suite/2026-09-16-product-strategies-prereg.md",
      "product-strategy-suite/run_overnight_event_nights.py"
    ],
    "notes": "Per claim: day session = pre-registered family D1 (8 roots, none pays; 5 of 8 negative); gap continuation = family E (2 arms, both refuted); turn-of-month = family C1 (refuted; flips sign between halves); 'Release days are wilder' ($2,880 vs $2,776 mean absolute NQ move, 2020+) is NOT a pre-registered test: the results label that table 'Computed after the fact and labelled descriptive — no test attached'. The NQ hour profile was pre-declared as descriptive. Partial because: 2 arms beyond the 27 frozen (declared); the prereg file was edited after the results (an 'ANSWERED' banner; no hash of the original body exists); and the release-day range figures are post hoc. Timestamp defect: the prereg says 'Frozen 2026-09-16 10:15 ET', but it was created 09:58:43 and the results JSON was written 10:02:33, so the stated freeze time is after the results."
  },
  {
    "slug": "overnight-three-layer",
    "ledgerClaim": "Crowd attention as a signal; The pre-FOMC night on NQ",
    "ledgerClaims": [
      "Crowd attention as a signal",
      "The pre-FOMC night on NQ"
    ],
    "title": "The overnight drift under three layers (technical, event, behavioural), including the attention arm B1 and the pre-FOMC arm N1",
    "verdict": "Of 19 arms across three layers, exactly one passes every frozen test: the pre-FOMC night on NQ (N1 — VALIDATED). B1 attention-induced buying: refuted.",
    "preregistered": "partial",
    "preregDate": "2026-09-16T06:37:45-04:00",
    "resultsDate": "2026-09-16T06:38:58-04:00",
    "arms": 57,
    "sample": "Nights 2016-01-05 to 2026-09-11 (NQ 2,581 nights); train 2016-2021 / confirm 2022-2026. The pre-FOMC arm's 53 nights are 2020-2026 only, because the event archive's FOMC rows start in 2020",
    "markets": "NQ primary; ES and GC secondary",
    "costs": "Round turn NQ $14, ES $29, GC $24; fills at the 16:00 and 09:30 prints",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ, ES, GC 2016-2026); VIX daily <data-root>/fp-data/fmp/vix-daily.json (FMP); the fp-context event archive (<data-root>/fp-context: events/**/*.jsonl with ts_event/ts_published/subclass/region, events/earnings/_weights.json, features/context_daily.jsonl); built from FMP, Fed, BLS/BEA, Federal Register, GDELT, Alpaca and SEC EDGAR feeds; not redistributed and its builder is not included; Wikipedia pageview attention series (fp-context attention/wikipedia, public API)",
    "files": [
      "overnight-three-layer/2026-09-16-attention-arm-prereg.md",
      "overnight-three-layer/2026-09-16-three-layer-overnight-prereg.md",
      "overnight-three-layer/2026-09-16-three-layer-overnight-results.json",
      "overnight-three-layer/2026-09-16-three-layer-overnight-results.md",
      "overnight-three-layer/run_overnight_event_nights.py",
      "overnight-three-layer/run_three_layer_overnight.py"
    ],
    "modifiedFromSource": [
      "overnight-three-layer/2026-09-16-attention-arm-prereg.md",
      "overnight-three-layer/2026-09-16-three-layer-overnight-prereg.md",
      "overnight-three-layer/run_overnight_event_nights.py"
    ],
    "notes": "Arms = 19 per root x 3 roots (15 hypotheses Bonferroni-counted on NQ, p < 0.0033). Attention (B1): the narrower attention-arm prereg (created 05:53:05, about 45 min before the run) and B1 here were both written before results; B1 = +$281.58/night, t 1.57, p 0.117, refuted. CAUTION on the placebo: with attention dates shuffled, the same arm returns +$100.11 (t 0.70), about the $98.00 baseline. Shuffling therefore removes the effect, it does not reproduce it; both write-ups describe this backwards. The refutation stands on p = 0.117 and random-night placebo p = 0.188. Pre-FOMC (N1): partial. The prereg itself quotes the answer (+$973 net, n=53, t=3.12) from the event-nights run hours earlier, and N1 re-measures those same 53 nights, which lie inside the 2016-2026 window where the effect was first found (macro-events-fundamentals). It is a re-measurement, not an independent confirmation. 'On a longer sample' in the results is not true for this arm. Timestamp defect: the prereg says 'Frozen 2026-09-16 09:45 ET', but the file was created 06:37:45 and the results 06:38:58."
  },
  {
    "slug": "overnight-event-nights",
    "ledgerClaim": "The pre-FOMC night on NQ",
    "ledgerClaims": [
      "The pre-FOMC night on NQ"
    ],
    "title": "Does the overnight drift concentrate in identifiable event nights beyond pre-FOMC?",
    "verdict": "Pre-FOMC (positive control) supported on NQ (n=53, net $972.70, t=3.12) and ES; every other arm inconclusive or suggestive. The overnight drift does not live only in identifiable event nights.",
    "preregistered": "yes",
    "preregDate": "2026-09-15T22:42:14-04:00",
    "resultsDate": "2026-09-15T23:26:19-04:00",
    "arms": 20,
    "sample": "Nights 2020-01-01 to 2026-09 (NQ 1,642 nights); train 2020-2023 / confirm 2024 onward",
    "markets": "NQ, ES, GC (CL side table)",
    "costs": "$4 round turn + 1 tick each way: NQ $14, ES $29, GC $24",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ, ES, GC 2020-2026); the fp-context event archive (<data-root>/fp-context: events/**/*.jsonl with ts_event/ts_published/subclass/region, events/earnings/_weights.json, features/context_daily.jsonl); built from FMP, Fed, BLS/BEA, Federal Register, GDELT, Alpaca and SEC EDGAR feeds; not redistributed and its builder is not included",
    "files": [
      "overnight-event-nights/2026-09-16-overnight-event-nights-prereg.md",
      "overnight-event-nights/2026-09-16-overnight-event-nights-results.md",
      "overnight-event-nights/run_overnight_event_nights.py"
    ],
    "modifiedFromSource": [
      "overnight-event-nights/2026-09-16-overnight-event-nights-prereg.md",
      "overnight-event-nights/2026-09-16-overnight-event-nights-results.md",
      "overnight-event-nights/run_overnight_event_nights.py"
    ],
    "notes": "Prereg created 22:42:14, runner 22:54:20, first results 23:26:19 (re-run 05:32 after the news wire was filled; verdicts unchanged). Arms = 7 (NQ) + 7 (ES) + 6 (GC) primary cells. Pre-FOMC was pre-registered as a pipeline POSITIVE CONTROL for an effect already known from the 2026-08-25 study, not as a new hypothesis."
  },
  {
    "slug": "macro-events-fundamentals",
    "ledgerClaim": "The pre-FOMC night on NQ (origin of the finding); Release days are wilder (related: event-day premium H2)",
    "ledgerClaims": [
      "The pre-FOMC night on NQ (origin of the finding)",
      "Release days are wilder (related: event-day premium H2)"
    ],
    "title": "Do macro events, surprises and administrations predict NQ? (where the pre-FOMC drift was first found)",
    "verdict": "H1 CONTESTED; H2 REFUTED; H3 Confounded, as predicted; (bonus) pre-FOMC overnight drift: Robust and survives every check — a forward-shadow candidate, not something to size tomorrow.",
    "preregistered": "yes",
    "preregDate": "2026-08-26T00:36:30-04:00",
    "resultsDate": "2026-08-26T00:37:41-04:00",
    "arms": 176,
    "sample": "NQ 1m 2010-06-07 to 2026-08-25 (4,033 sessions); FMP econ calendar 2016-2026 (909 sessions with a composite surprise); pre-FOMC n=85 FOMC days 2016-2026 after the 2026-08-26 calendar correction",
    "markets": "NQ",
    "costs": "1.0 pt round trip for the tradability legs; distribution tests gross",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ 2010-2026); FMP economic calendar 2016-2026 JSON (<data-root>/fp-data/fmp/econ-calendar-*.json; FMP subscription)",
    "files": [
      "macro-events-fundamentals/2026-08-25-fundamentals-prereg.md",
      "macro-events-fundamentals/2026-08-25-fundamentals-results.md",
      "macro-events-fundamentals/2026-08-25-fundamentals-results.txt",
      "macro-events-fundamentals/fundamentals_nq.py",
      "macro-events-fundamentals/rvol_orb.py"
    ],
    "modifiedFromSource": [
      "macro-events-fundamentals/2026-08-25-fundamentals-prereg.md",
      "macro-events-fundamentals/2026-08-25-fundamentals-results.txt",
      "macro-events-fundamentals/fundamentals_nq.py",
      "macro-events-fundamentals/rvol_orb.py"
    ],
    "notes": "The pre-FOMC drift was a pre-specified SECONDARY test ('reported, never confirmatory'), measured 18:00 ET prior day to 09:30 ET open: +25.38 bps gross, t +3.61 (corrected), one cell among about 176 in this study and about 544 pre-counted across that day's three studies (the study notes the expected max |t| under the null is about 3.3). Prereg created 00:36:30 EDT, before fundamentals_nq.py (00:37:36) and the first output (00:37:41); its in-text 'Frozen 20:25 MDT' (22:25 EDT) is two hours earlier than the file and cannot be verified. Results carry two dated corrections (2026-08-26: calendar repair; jobless-claims result refuted). Arms = about 176 cells as pre-counted by the study."
  },
  {
    "slug": "pre-fomc-forward-shadow",
    "ledgerClaim": "The pre-FOMC night on NQ",
    "ledgerClaims": [
      "The pre-FOMC night on NQ"
    ],
    "title": "Pre-FOMC overnight drift: forward shadow-grading spec and grader",
    "verdict": "No verdict yet. Shadow only: promotion requires forward n >= 8 (about 2027-08 at the earliest), forward mean net > 0, forward hit rate >= 55%, pooled t > 3.0, and positive excess over the non-FOMC baseline.",
    "preregistered": "yes",
    "preregDate": "2026-08-26T07:20:57-04:00",
    "resultsDate": null,
    "arms": 1,
    "sample": "Historical seed n=85 FOMC days 2016-01-27 to 2026-07-29 (can never promote the rule); forward observations from 2026-08-26 onward: 1 so far (2026-09-16)",
    "markets": "NQ (1 contract)",
    "costs": "1.0 index point round trip",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ); FMP economic calendar (FOMC decision dates, 'Interest Rate Decision', country US)",
    "files": [
      "pre-fomc-forward-shadow/2026-08-26-prefomc-shadow-spec.md",
      "pre-fomc-forward-shadow/fundamentals_nq.py",
      "pre-fomc-forward-shadow/prefomc_shadow.py",
      "pre-fomc-forward-shadow/rvol_orb.py"
    ],
    "modifiedFromSource": [
      "pre-fomc-forward-shadow/2026-08-26-prefomc-shadow-spec.md",
      "pre-fomc-forward-shadow/fundamentals_nq.py",
      "pre-fomc-forward-shadow/prefomc_shadow.py",
      "pre-fomc-forward-shadow/rvol_orb.py"
    ],
    "notes": "This is the only genuinely out-of-sample test of the pre-FOMC rule, and it has 1 of the 8 forward observations its own frozen bar requires. The rule graded here enters at 18:00 ET (after the daily halt) and exits 09:30 ET. The forward track file (prefomc-shadow-track.jsonl, per-date entry/exit prices) is not included. The grader (prefomc_shadow.py, created 07:12:11) predates the spec (07:20:57); the spec froze the promotion bar before any forward observation existed."
  },
  {
    "slug": "close-read-last-half-hour",
    "ledgerClaim": "The last half hour, 15:30→16:00",
    "ledgerClaims": [
      "The last half hour, 15:30→16:00"
    ],
    "title": "Close Read feasibility study: the 15:30 to 16:00 ET NQ window",
    "verdict": "VALIDATED, conditional — ship as a shadow-mode Close Read, not a sized trade.",
    "preregistered": "post-hoc",
    "preregDate": null,
    "resultsDate": "2026-07-27",
    "arms": 25,
    "sample": "NQ.c.0 1m, 3,948 full RTH sessions 2010-06-07 to 2026-07-24; IS 2010-2019 / OOS 2020-2026; survivor n=540 trades",
    "markets": "NQ (cross-symbol check on ES, YM, RTY)",
    "costs": "1.0 pt round trip on NQ; ES 0.5, YM 2.0, RTY 0.3 pt in the cross-symbol check",
    "dataNeeded": "CME futures 1-minute OHLCV bars (Databento GLBX layout: ts_event,rtype,publisher_id,instrument_id,open,high,low,close,volume,symbol) at <data-root>/fp-data/glbx/<ROOT>/1m/<YEAR>.csv; licensed vendor data, not redistributed (NQ, ES, YM, RTY 2010-2026)",
    "files": [
      "close-read-last-half-hour/close-read-study.md",
      "close-read-last-half-hour/close_cross_symbol.py",
      "close-read-last-half-hour/close_dataset.py",
      "close-read-last-half-hour/close_deep_dive.py",
      "close-read-last-half-hour/close_regime.py",
      "close-read-last-half-hour/close_robustness.py",
      "close-read-last-half-hour/close_study.py"
    ],
    "modifiedFromSource": [
      "close-read-last-half-hour/close-read-study.md",
      "close-read-last-half-hour/close_cross_symbol.py",
      "close-read-last-half-hour/close_dataset.py"
    ],
    "notes": "Post hoc: about 25 hypothesis variants screened (18 in close_study.py), then the survivor put through robustness checks; no pre-registration exists. Survivor: |15:00 to 15:30 move| > 0.30%, follow it to the close: +5.79 bps/trade, t 2.17, bootstrap p 0.016, hit rate 51.5% (not significant). That t is below the t >= 3 bar the later pre-registered studies use. 2023-2026: the base rule is negative on all four index futures (NQ -2.3, ES -4.0, YM -0.9, RTY -0.6 bps, all n.s.); NQ longs +2.5 pt, shorts -8.9 pt. close_deep_dive.py needs pm_paths.parquet, which no script on disk generates. The calendar-study (OPEX, month-end, quarter-end) code was not found."
  }
]