We Value Your Privacy

    We use cookies to enhance your experience, provide essential functionality, and analyze site usage. You can customize your preferences or accept all cookies. Learn more

    Strategy Library
    The kill log

    A vetting bar only means something if you can see what it rejects.

    Start with the question you came for

    Below: the full archive, sweep by sweep, in the order it was run. Seven strategies cleared this bar — read the ones that survived. The bar itself gained a sixth check in September 2026, after a candidate passed the other five and turned out to be indistinguishable from random entry timing.

    Research Log — what was tested and killed

    The library only ships survivors, which makes it easy to forget how many candidates die. This log records completed research sweeps: the pre-registered hypotheses, the protocol, and the full results — including every kill. Two reasons it exists:

    1. Honesty. "Why so few entries?" Because this is what the vetting bar does to ideas.
    2. Discipline. A documented kill must not be quietly re-mined later with new knobs until it looks good. If a dead idea is to be revisited, it needs a genuinely new mechanism or market structure change — stated up front.

    Sweep 2026-08-05 — lower timeframes (crypto 1h/4h)

    Question: is there a strategy on lower timeframes (1h primary; 4h probe; 15m if anything survived 1h) that clears the vetting bar?

    Protocol. Pre-registered hypotheses and neighbors (fixed before any run; neighbors run only for families whose primary showed genuine signal). Engine: the app's own (runBuilderBacktest), long entries at bar close. Costs: 0.1%/side fees — corrected from sweep #4 on to the USDT-M perpetual schedule, 0.05% taker / 0.02% maker — plus perp funding, charged at each 8-hour settlement a position is held through (not per bar: a 15m bar that crosses no settlement pays nothing). Assets: BTC, ETH, BNB (majors). Two independent windows: W1 Aug 2018 → Aug 2022, W2 Aug 2022 → Aug 2026. Funding history begins Sep 2019, so funding-gated setups effectively start there in W1 — and holds before that date are charged no funding at all. Gates per asset: net positive in BOTH windows, survives strip-best-trade in both, max DD ≤ 20%, then cross-asset (≥ 2 majors).

    What the three headline numbers actually measure. Return is the arithmetic sum of per-trade percentages, not a compounded equity curve — which is why dividing it by the trade count is a legitimate per-trade average, and why +887% is not a 9× account. Drawdown is measured on that same summed curve and marked only at trade exits, so a position that goes far underwater and closes green contributes nothing to it; it is quoted in points, and where the two differ the account-basis figure follows in parentheses. MC p95 is a shuffle of the same trades into a different order, repeated 1,000 times — it bounds how unlucky the sequencing could have been, and says nothing about return uncertainty. All three are gated on the stricter reading where a choice exists.

    Hypotheses and verdicts

    # Hypothesis (pre-registered spec) TF Verdict
    H1 Donchian breakout long: close crosses above highest(prior 55), ATR-trail 2×ATR(14). Neighbors: period 20/100, trail 3× 1h, 4h Killed — see below; nearest miss of the sweep
    H2 Squeeze-breakout long: Donchian-48 width ≤ 3% AND close crosses above highest(48), ATR-trail 2× 1h, 4h Killed — window-unstable
    H3 RSI(2) < 10 above SMA(200), exit close > SMA(5) (entry #2 verbatim on crypto 1h) 1h Killed — decisively
    H1s Short mirror: close crosses below lowest(55) 1h Killed — decisively
    H4 Entry #1 funding-squeeze verbatim at 1h (funding < 0 AND RSI(14) crosses above 30, ATR-trail 2×) 1h Killed as a library entry — BTC-only and marginal

    H1 — Donchian breakout (the nearest miss)

    On 1h: destroyed everywhere (PF 0.74–0.92, −31% to −102% per window, 300–500 trades). Fees and chop churn dominate. The 20-period neighbor is even worse; 100 doesn't save it.

    On 4h, the family shows a real momentum edge — with the pre-registered 3×ATR trail (dc55x3) all six asset × window cells are net positive and all six survive strip-best-trade:

    Asset W1 W2
    BTC +87.4% · PF 1.52 · DD 31.4% +37.7% · PF 1.35 · DD 32.7%
    ETH +124.9% · PF 1.50 · DD 75.9% +36.2% · PF 1.23 · DD 27.2% (strip-best +0.4%)
    BNB +173.6% · PF 1.88 · DD 45.3% +59.3% · PF 1.53 · DD 26.1%

    Why it's not an entry: drawdown. 26–76% max DD versus the bar's ≤ 20%. This is structural for an always-in breakout system on crypto — ~35% winners with long losing streaks through chop. The edge is real; the raw form is not compatible with a sane risk plan, and dressing it up (extra filters until the DD looks nice) is exactly the curve-fit the bar forbids. If it ever ships it will be as an explicitly high-drawdown, sleeve-sized, paper-trade-first entry — a decision to make deliberately, not by quietly relaxing the bar.

    H2 — squeeze-breakout: the two-window gate doing its job

    BTC W1 looked spectacular (58 trades, PF 3.73, +51.8%, DD 6.3%, survives strip-best) — and W2 collapsed (168 trades, PF 0.53, −37.3%). ETH roughly mirror-image, BNB small both ways. (Replication 2026-10-09: both BTC cells reproduce to the decimal; ETH is small both ways too — +0.7% on 17 trades, then +8.5% on 65 — rather than a mirror image.) Same spec, adjacent windows, opposite result: this is what an unstable regime artifact looks like, and publishing the W1 row alone would have been a lie of omission. Neighbors were not run (family failed its primary — pre-registration rule). On 4h the setup never occurs (an 8-day ≤ 3% range doesn't happen on crypto).

    H3 — mean reversion does not transplant to crypto 1h

    Entry #2's exact spec, which is genuinely robust on daily index ETFs, loses catastrophically on crypto 1h: PF 0.51–1.19, −40% to −140% per window, ~750 trades each. A diversified index mean-reverts on a daily panic; a single crypto asset on a 1h dip is just as likely trending to zero for the day. No-stop dip-buying is knife-catching here. (Replication 2026-10-09: five of six cells inside that range; BNB's first window is +72.8% at PF 1.19 — the PF range above already implied a positive cell.)

    H1s — shorts still have no edge

    PF 0.56–0.88, −46% to −166% everywhere. Consistent with entry #1's finding: crypto's drift and squeeze dynamics make fading weakness a losing short. Long-only stands.

    H4 — funding-squeeze at 1h does not generalize

    Entry #1's write-up reports a flattering 1h row (BTC recent-24mo: PF 1.67, survives strip-best). Across the full history and assets: BTC 12.6%/6.5% per window but PF ~1.2, a 20.5% DD breach, and W2 strip-best of +0.2%; ETH negative both windows; BNB +74%/−12.5%. BTC-only and marginal ≠ library-grade. The 4h original remains the tradable form; the entry #1 doc now carries this cross-window note on its 1h row.

    Structural conclusion

    At realistic retail costs (0.1%/side + funding), no 1h crypto strategy expressible in the current strategy DSL cleared the bar — momentum churns, mean reversion catches knives, squeezes don't repeat across regimes, shorts lose. The per-trade edge needed to overcome ~0.2% round-trip plus noise simply isn't there at this frequency for these mechanism families. 15m was not run: it strictly worsens the cost-to-edge ratio that already killed 1h. Lower-timeframe research that wants a different answer needs a different lever: maker/low-fee execution assumptions (a different product than this library models), intraday session/time-of-day structure (not currently compilable), or order-flow data beyond OHLCV + funding.

    Superseded in part by sweep #4 (below). This conclusion charged 0.1%/side, the spot-taker default; these instruments are USDT-M perpetuals at 0.05% taker. Re-run at the corrected rate, the 1h funding-squeeze passes on BTC and ships as entry #5, and the 1h mean-reversion result turns out to have been gross-POSITIVE at roughly +95% — the execution model killed it, not the signal. "Mean reversion catches knives" is not the standing verdict; "regime-fragile, not cost-dead" is. The structural claim that survives is narrower: at real perp costs the 1h layer is reachable, but the edges there that do not read market internals appear bound to the volatility era they were born in.


    Sweep 2026-08-06 — session structure (crypto 15m/1h, new session atoms)

    The previous sweep's "different lever": session/time-of-day atoms were added to the strategy DSL (hour_utc, day_of_week, session open/high/low/VWAP, opening ranges — fixed UTC windows), unlocking the classic intraday literature. Same protocol, assets, windows, costs, and gates as the 2026-08-05 sweep; 15m primary, 1h probe.

    Hypotheses and verdicts

    # Hypothesis (pre-registered spec) Verdict
    S1 US-open ORB long: first hour of the US session {13.5–20 UTC}, close crosses above the range high (no entries after 18:00), 2×ATR trail + session-end exit Killed at costs — see the gross diagnostic below
    S1s Short mirror (one probe) Killed — −135% to −254% per window
    S2 Session-VWAP reversion long: close < US-session VWAP × 0.99, exit on VWAP reclaim or session end Killed — negative in all 12 cells
    S3 London breakout of the Asia range {00–07 UTC}, entries 07–13:30, 2×ATR trail + session-end exit Killed — W1/W2 regime flip, even gross

    All 42 net-of-cost cells were negative (PF 0.38–0.98). No hypothesis reached the neighbor or stress phases. (Re-run from committed code on 2026-10-09: 41 of the 42 — BNB's first window of the 1h VWAP probe is +11.1% at PF 1.04 and fails on drawdown. See the replication section below sweep #8.)

    The gross diagnostic — quantifying WHY (fees off, funding still on; not tradable)

    Setup (gross) W1 W2 Reading
    ORB BTC 15m +28.8% · PF 1.09 · sb+ +36.3% · PF 1.17 · sb+ Real, window-stable gross tendency
    ORB ETH 15m +31.5% · PF 1.08 · sb+ +43.0% · PF 1.16 · sb+ Same
    VWAP-reversion (best cells) mixed + mostly − Unstable even gross
    London breakout big + in W1 negative everywhere in W2 Regime artifact even gross

    The US-open ORB on BTC/ETH 15m is the interesting kill: a genuine session-structure edge exists — positive in both independent windows, survives strip-best, about 870 trades per window. But it averages about +0.04% per trade gross, and break-even for an edge that size is 0.02%/side.

    This sweep charged 0.1%/side (spot-taker default), which puts the edge 5× below the cost line. Sweep #4 corrects the instrument: at the USDT-M perpetual taker rate of 0.05%/side the round trip is 0.1% and the edge is 2.5× below it; at the 0.02% maker rate it is break-even. The honest retail number is 2.5×. Break-even sitting on the maker rate is not a route in for this family — a breakout enters by crossing a level, which is a taker action by construction. That is the low-timeframe conclusion in one sentence: the structure is there, and retail execution costs are bigger than it is.

    Session atoms remain in the DSL — they are useful as filters and exits on higher-timeframe strategies (session-end exits, day-of-week gates) even though no standalone intraday entry cleared the bar.


    Sweep 2026-08-06 (#3) — new instruments & mechanisms, daily bars

    Pre-registered: (T1) entry #2's RSI(2) dip-buy verbatim, zero knobs on sector SPDRs (XLK/XLF/XLE/XLV/XLI) + international (EFA/EEM); (T2) the 2026-08-01 pre-registered leftover, a crypto daily trend-pullback (close > SMA200 AND RSI(14) < 40, 3×ATR trail, BTC/ETH/BNB); (T3) SMA-200 trend timing (Faber-style cross, SPY/QQQ/EFA). Same gates; new evidence attached from the holistic engine: DD-from-peak, exposure, Monte-Carlo p95 shuffled drawdown, 0.1%/side fee stress, and next-open fill checks.

    Hypothesis Verdict
    T1 sectors/international 5 of 7 PASS → shipped as entry #2's extension section (XLK/EEM first-rank; XLF/XLE/EFA baseline-costs-only; XLV failed W2, XLI breached the DD bar by 0.1)
    T2 crypto trend-pullback Killed — window-flipping everywhere (BTC/ETH: W1 negative, W2 positive; BNB the mirror). The leftover is closed; no neighbors run. Re-run 2026-10-09: BTC −33.9% / +86.7%, ETH −49.2% / +52.3%, BNB +50.9% / −38.3%, drawdowns 27–70
    T3 SMA-200 timing SPY/QQQ PASS → shipped as entry #3. EFA failed (−4.3% W1). The 2000–2010 stress decade fails strip-best — reported in the entry as the known whipsaw cost

    Also measured: the dip-buy family is genuinely flattered by close fills (SPY W2 +36.4% → +19.4% at next-open — still profitable, now quantified in entry #2); the trend-timing system is fill-indifferent (next-open slightly better). Costs kill nothing at ~3 trades/yr; they thin the dip-buy's secondary instruments exactly as they did IWM.


    Sweep 2026-08-06 (#4) — low timeframes under corrected market structure

    The sweep-1/2 kill rule allows a revisit only with a stated market-structure change. Two were stated up front: (a) cost correction — prior sweeps priced crypto at 0.1%/side, the spot-taker default, but these strategies trade USDT-M perpetuals whose standard schedule is 0.05% taker / 0.02% maker; (b) new engine capability — resting limit-order entries with strict-pierce fills at the maker rate (mean-reversion entries are naturally passive). Motivating arithmetic, stated before running: sweep-1's 1h RSI(2) MR lost about 55%/window net while paying about 150% of costs — it was gross-POSITIVE at roughly +95%; the execution model, not the signal, killed it.

    # Hypothesis Verdict
    P1 Entry #1's funding-squeeze at 1h, real futures taker fees (spec verbatim) BTC passes every per-asset gate (W1 +18.2% PF 1.39 DD 17.0 sb+; W2 +13.1% PF 1.36 DD 11.6 sb+; 122 trades). ETH/BNB still fail → BTC-only → ships as entry #1's rehabilitated 1h variant, not a standalone entry
    P2 Passive limit MR, 1h (limit at close −0.5%, maker 0.02 in / taker 0.05 out) Killed — but the thesis was right in W1: BNB +179.5% PF 1.69, ETH +112.1%, BTC +59.0%, all strip-best-surviving — passive fills DO capture the gross edge. Then W2 flips BTC/ETH negative and BNB breaches the DD bar in W1. Regime-fragile, not cost-dead. No neighbors run (no full passer)
    P3 Sweep-1's Donchian-4h 3×ATR + a daily SMA-200 trend filter (the single pre-registered revisit variant) Killed — the filter worked as theorized (drawdowns roughly halved; BTC W2 now 18.4, under the bar) but W1 drawdowns still breach (30–64). All 6 cells positive and strip-best-surviving, again. The revisit clause for this family is now SPENT

    Replication 2026-10-09: P1 reproduces to the decimal. P2's first-window cells reproduce exactly with the resting limit valid for two bars — the August setting, recovered after the run and disclosed as such. P3's six cells are all positive and strip-best-surviving, with first-window drawdowns of 35, 64 and 47 and BTC's second window at 17.8.

    Structural conclusion, updated

    The corrected market structure moves the line but doesn't erase it. With real futures fees and honest passive fills, the 1h layer contains exactly one durable edge — BTC funding-squeeze — and one regime-fragile one (passive MR: pays handsomely in the high-volatility 2018–2022 era, flat-to-negative in the post-2022 regime). The earlier "costs are bigger than the structure" conclusion softens to: at real perp costs the structure is reachable, but 1h edges that don't read market internals (funding) appear regime-bound — they need the volatility era they were born in. Anything further down (15m) remains cost-dead even at maker rates (sweep #2's ORB arithmetic).


    Sweep 2026-08-06 (#5) — metals, Double-7s, and a blocked intraday candidate

    Pre-registered: (Q1) entry #3's SMA-200 timing spec verbatim on metals (GLD/SLV, IAU as parity probe); (Q2) Connors' Double-7s channel dip-buy, frozen 2009 params (stated deviation: the DSL's rolling extremes use lows/highs where the book uses closing extremes), on SPY/QQQ/XLK/EEM; (Q3) SPY/QQQ 15m session-VWAP reversion — registered while blocked on data, run later the same day once Alpaca keys landed, spec pinned before the run (0.3% stretch below the day-anchored session VWAP, RTH SIP bars, 0.02%/side, windows 2016–2021 / 2021–2026).

    # Hypothesis Verdict
    Q1 metals trend timing Killed — GLD/IAU window-flip (2011–2015 gold bear: −18% W1, PF 0.47; then +131–135% W2). SLV positive both windows but fails strip-best in W1 (−36.2) at a 41% drawdown. Trend timing on metals is regime-hostage; the equity result does not transfer
    Q2 Double-7s QQQ + XLK PASS the full bar — including the 2000–2010 stress decade on all three US instruments (QQQ +75.7% PF 2.77 sb+). SPY is a near-miss (every check passes except W2 sum-point DD 22.6 vs ≤ 20 — covid held with no stop; account-basis DD 19.1). EEM fails on DD. Fee-stress at 0.1%/side: robust (PF 1.6–2.4). → shipped as entry #4 with a prominent correlation disclosure: same mean-reversion family as entry #2, one dip-buy sleeve, not two

    Q3 — intraday index-ETF VWAP reversion: killed, and it generalizes the low-TF finding

    Run on real regular-hours SIP bars (extended hours filtered, DST-aware), 2 bp/side — about the friendliest honest cost model retail can claim. All four cells fail: SPY nets to ~zero (PF 0.98 / 1.00, −3.1% / +0.3%, fails strip-best in both windows), QQQ is outright negative (PF 0.94 / 0.97) with 24–42-point drawdowns and Monte-Carlo p95 tails of 34–55. With ~500–1,000 trades per window paying ~0.04% round trips, the implied gross edge is ~+0.02–0.04% per trade — once again the size of the cost line, this time on the most liquid instruments in the world at near-zero fees. No neighbors were run (no passer). (Replication 2026-10-09: these cells reproduce exactly only when the position is held overnight until the VWAP reclaim, which is what the August run did. Flattened at the session close, as described, the cell is clearly negative even with fees off — SPY −12.5% / −4.2%, QQQ −32.5% / −8.7% gross. The kill stands; the "faint edge" reading below does not.)

    That completes the cross-asset picture the crypto sweeps started: the sub-daily mean-reversion structure exists faintly everywhere and clears trading costs nowhere — not on crypto perps at maker rates, not on index ETFs at 2 bp. The library's intraday answer stands on evidence from both asset classes now: the only durable sub-daily edge found in five sweeps reads market internals (funding), everything else lives on daily bars and above. (2026-10-09: on the ETFs the "exists faintly" half rests on the overnight-hold reading above; flattened at the close, intraday, it does not exist at all.)


    Sweep 2026-08-08 (#6) — the last untested mechanism family, and an elevation

    Pre-registered: (V1) capitulation-volume reversal on crypto 1h — volume internals, the only DSL data channel never yet tested at low timeframes. Spec: volume > 3× its 20-bar average AND close below the lower Bollinger(20,2) → fade at the close; exit on a mid-band reclaim or a 2-day backstop; futures fees + funding; BTC/ETH/BNB, the standard windows and gates. Prior stated up front as moderate (Wyckoff selling-climax literature is an equities result; crypto evidence anecdotal).

    V1: killed decisively. PF 0.62–0.75 with −50% to −129% per window on BTC and ETH (BNB's lone flat cell fails strip-best; replicated to those ranges from committed code on 2026-10-09). On crypto 1h, an extreme-volume flush bar is continuation, not exhaustion — the knife-catching result again, now confirmed on the volume channel too. No neighbors were run. (The dip-buy half of that reading was later shown to be a cost story — see the sweep #4 note under sweep #1; this run charged the corrected futures fees, so that explanation does not reach it.)

    Elevation, not a new find: with every price-shape, session, execution-model and volume hypothesis now tested and dead below daily bars, the sole sub-daily survivor of six sweeps — the BTC funding-squeeze at 1h on real futures fees (validated in sweep #4) — has been promoted from a footnote in entry #1 to standalone entry #5 under the README's narrow-clearer rule, with its BTC-only and fee-tier conditions stated as first-class guardrails. The library's answer to "a profitable low-timeframe crypto strategy" is that one exists, it reads market internals rather than price shapes, and everything else we could express was tested and is on this page.


    Sweep 2026-08-08 (#7) — the last rung: 15m

    One pre-registered run, no neighbors possible (the spec is frozen): the funding-squeeze — the sole sub-daily survivor of six sweeps — tested at 15m under the same futures-fee correction that validated it at 1h. Entry #1's doc had killed 15m only at spot fees on a single window; this closes it properly: full history, BTC/ETH/BNB, both windows.

    Dead. BTC — the one asset where the edge lives at 1h — is negative in both windows (PF 0.72 / 0.86, −22.9% / −10.3%); ETH negative in both; BNB's lone positive window is followed by a flat one that fails strip-best. Nothing passes anything. (Replicated to the decimal on 2026-10-09.)

    That completes the cleanest cost-vs-structure demonstration in this log: one frozen spec, three timeframes — strong and cross-asset at 4h (entry #1), BTC-only at 1h on futures fees (entry #5), gone at 15m. The per-trade edge shrinks with the bar; the per-trade cost doesn't. The sub-daily floor for this library is 1h, measured — not assumed. Below it, every mechanism family expressible on OHLCV + funding is now tested and dead; going lower is a data-acquisition problem (order flow, historical open interest, liquidation feeds — none freely available), not a backtesting problem.


    Sweep 2026-08-08 (#8) — the angle change: collect the transfers, not the candles

    After sweep #7 measured the 1h floor, the pre-registered angle change: stop predicting sub-daily candles (dead, sweeps #1–#7) and harvest the mechanism that makes them hostile — funding-rate cash-and-carry (long spot + short perp, market-neutral, collect the 8h payments). The single-leg engine cannot express two legs, so this ran on a dedicated simulator with real spot klines, real perp klines, and real funding history; rules pinned before the run (enter mean-of-3 > 0.01%/8h, exit < 0.003%; full costs both legs; returns on total capital; basis P&L from real prices).

    PASS — BTC + ETH clear every gate in both windows (worst episode across all runs: −0.2% of capital). BNB fails W2 strip-best at the primary gate but passes at the stricter pre-registered neighbor. The neighbor grid is monotone and mechanically expected: a looser entry gate fails W2 everywhere (weak funding churns the fee hurdle), a stricter one passes 6/6 — selectivity IS the edge. Shipped as entry #6 with the honest characterization stated first: while-deployed APR ~6–14%, but idle 70–90% of the time and below cash rates overall in the post-2022 quiet regime — an opportunistic harvester for hot-funding episodes, not a yield product. Manual two-leg execution (the DSL is single-leg); validated by simulator, so the entry ships without an interactive chart.

    Replication 2026-10-09: a simulator rebuilt from the pinned rules and committed reproduces every verdict above and the neighbour grid cell for cell, but not the magnitudes on entry #6's page — more episodes, longer deployment, higher net, and mid-episode marks of at most 2.4% of capital against the 13–18% reported. Both sets are on the entry page, in the funding-harvest finding, and in the replication section below.


    Replication 2026-10-09 — sweeps #1–#8 re-run from committed code

    Sweeps #1–#8 were run in August 2026 from scratchpad scripts that were never committed. The numbers could be read on these pages but not re-derived from the repository, which the 20 September pre-publication audit flagged as the log's largest reproducibility gap. This section closes it. Each sweep was rebuilt from the specification frozen above — committed on 5–8 August in 38bf7d0, 9c02bfb, 18de618, a361c59, ae77629, 3c5714c, 3831c19, c55cea2 and 0d40d0b — as a script under scripts/research/replicate-sweep*.ts, committed before any protocol-window result was seen (2c12a26), then run on the app's real engine over the same public data the originals used. Every number this log or an entry page printed for those sweeps was embedded beside its cell, so each run ends with a published-versus-replicated table. The outputs, with every trade, are in scripts/research/results/replication-2026-10/.

    The short version: the August numbers reproduce. Of the 84 cells for which a number was published, 68 reproduce to the precision they were printed at, 15 more sit within rounding or differ only in the Monte-Carlo column by about a point (a different shuffle seed), and one differs by 1.6 points in that column alone. Eleven of the 68 reproduced only after an implementation convention the log never recorded was recovered afterwards; those are listed separately below. Every verdict stands. Three sentences of prose were wrong and are corrected below, and the two-leg carry simulator of sweep #8 reproduces its verdicts but not its magnitudes.

    Sweep What was compared Result
    #1 lower timeframes 12 printed cells, 3 range claims 11 exact, 1 within rounding; all three range claims hold with one cell each at the rounded edge
    #2 session structure 42 net cells, 4 gross ORB cells 41 of 42 negative (the log said 42); ORB gross exact once the flatten convention was recovered
    #3 daily transplants 37 printed cells 32 exact, 5 differ only in MC p95 by ≤ 1 point
    #4 corrected costs 6 printed cells entry #5's cells exact; the +95% gross autopsy exact; passive fills exact once the limit's validity was recovered
    #5 metals, Double-7s, VWAP 23 printed cells Q1 and Q2 exact (MC within a point); Q3 exact once the exit convention was recovered
    #6 volume 2 range claims hold, one cell at the rounded edge
    #7 the 15m rung 2 printed cells exact
    #8 cash-and-carry 6 cells × 7 figures every verdict reproduces; episode counts partly; returns, deployment and drawdown do not

    What reproduces exactly

    • Sweep #1. The 4h Donchian table (dc55x3, six cells of return, profit factor and drawdown) to the decimal. The squeeze cells BTC W1 (58 trades, PF 3.73, +51.8%, DD 6.3) and W2 (168 trades, PF 0.53, −37.3%) to the decimal — which also confirms the width definition the log left implicit (the prior 48-bar range within 3% of its own low). H4's BTC cells (+12.6% and +6.5%, strip-best +0.2%, the 20.5-point W1 breach) and BNB's (+74.4% / −12.5%).
    • Sweep #3. Entry #2's six main cells and all nineteen extension cells, the three next-open cells, and entry #3's six cells plus EFA's −4.3%; the 0.1%/side profit factors on SPY/QQQ run 2.75–6.54 against the page's "2.8–6.5", and the next-open PFs are 3.42 and 9.88. The crypto trend-pullback (T2), for which the log printed only a verdict, lands exactly on it: BTC −33.9% then +86.7%, ETH −49.2% then +52.3%, BNB +50.9% then −38.3%, drawdowns 27–70.
    • Sweep #4. Entry #5's two cells (56 trades, PF 1.39, +18.2%, strip-best +10.2%, DD 17.0 and 13.3; 66 trades, PF 1.36, +13.1%, +6.7%, 11.6 and 10.1). The "gross-positive at roughly +95%" autopsy is BTC's first window at +95.7% gross, paying 151% of notional in fees over 756 trades. P3's six cells are all positive and strip-best-surviving with first-window drawdowns of 35, 64 and 47 against the log's "30–64", and BTC's second window at 17.8 against the log's 18.4.
    • Sweep #5. GLD's first window (PF 0.47, −18.2%), the +131% and +135% second windows, SLV's strip-best −36.2% at a 41.4-point drawdown; all eleven Double-7s cells and all six 0.1%/side profit factors.
    • Sweep #6. PF 0.62–0.75 on BTC and ETH with returns of −50 to −129 per window, and BNB's one flat cell (+2.4%) failing strip-best.
    • Sweep #7. BTC at 15m: PF 0.72 / 0.86, −22.9% / −10.3%; ETH negative in both windows; BNB +46.0% then +4.1% failing strip-best.

    Three conventions the log never wrote down

    Three results reproduced in shape but not to the point under the reading each script fixed before its run. In each case a single unrecorded implementation choice was found afterwards that reproduces the August number exactly; the sensitivity runs are committed as separate files and marked post hoc, and no verdict depends on them.

    1. Sweep #2's ORB "session-end exit" flattened on the first bar after the session, whose close is 20:15 UTC, not on the last bar inside it. Under the pre-registered reading the gross cells were +20.6% / +38.4% (BTC) and +25.8% / +45.8% (ETH); under the recovered one they are the log's +28.8% / +36.3% and +31.5% / +43.0%, PF 1.09 / 1.17 / 1.08 / 1.16, on 876 / 880 / 861 / 862 trades — about +0.03 to +0.05% per trade gross.
    2. Sweep #4's resting limit (P2) stayed valid for two bars. With one bar the first window paid +40.6% / +117.9% / +187.8%; with two it is the log's +59.0%, +112.1% and +179.5% at PF 1.69 exactly.
    3. Sweep #5's intraday VWAP cell (Q3) had no session-end exit. The August run held a position overnight until the VWAP reclaim. Under that reading SPY is the log's PF 0.98 / 1.00 at −3.1% / +0.3% and QQQ PF 0.94 / 0.97 with 24–42-point drawdowns, exactly. Flattened at the close — which is what this log and the opening-range page described — the cell is clearly negative even with fees off: SPY −12.5% / −4.2% gross, QQQ −32.5% / −8.7%, at −0.006 to −0.047% per trade. The "faint edge the size of the cost line" on SPY/QQQ was an overnight-hold reading, not an intraday one. The kill stands and is stronger.

    Prose the re-run corrects

    • Sweep #2 said all 42 net-of-cost cells were negative. 41 are. BNB's first window of the 1h session-VWAP probe is +11.1% at PF 1.04 and fails the bar on a 57.6-point drawdown. Two London-breakout cells also sit at PF 0.36, just under the stated 0.38 floor.
    • Sweep #1 H3 gave its returns as "−40% to −140% per window". Five of six cells are in that range; BNB's first window is +72.8% at PF 1.19 — the profit-factor range the same sentence printed already implied a positive cell, the return range did not say so.
    • Sweep #1 H2 called ETH "roughly the mirror image" of BTC. It is not: ETH is small both ways (+0.7% on 17 trades, then +8.5% on 65), which is what the log said of BNB.
    • Sweep #4 P3 breaches the bar in every cell except BTC's second window — ETH's second window at 24.2 and BNB's at 22.6 as well as the three first windows — which the log's sentence left to be inferred.

    Sweep #8: the verdicts reproduce, the magnitudes do not

    The two-leg simulator was rebuilt from the rules pinned on entry #6's page. Under those rules BTC and ETH pass every gate in both windows, BNB fails its second window's strip-best at the pinned gate and passes at the stricter one, the looser 0.005% gate fails every second window and the stricter 0.02% gate passes six of six — the published verdicts, every one. The numbers inside them are different: more episodes (9, 5, 6, 6 for BTC and ETH against 7, 3, 4, 3), longer deployment (22–58% of the window against 8–30%), higher net returns (+23.6% and +29.3% in the first windows against +9.5% and +12.1%) and mid-episode marks of at most 2.4% of capital against the 13–18% the page describes. Reading the entry rule as "all three rates above the gate" reproduces three of the six episode counts exactly and brings the second windows within a point, but no reading of the pinned rules produces the August drawdowns, and the August simulator is gone. Entry #6's page and the funding-harvest finding now carry the committed simulator's figures beside the August ones and say which can be checked.

    What else a reader should know

    • Several cells carry one trade still open at the window's end, marked to market at the last close; the engine counted those in August too and now flags them (openAtEnd).
    • Monte-Carlo p95 differs by up to a point from the August prints because the shuffle seed is not the August one; the drawdown and strip-best columns do not depend on it.
    • The engine core has changed in two ways since August, neither of which moved a number here: the open-at-end flag above, and a second funding channel these scripts do not use.
    • Yahoo's split-adjusted history and Binance's spot klines returned the same bars as in August for every instrument used; no cell moved for a data reason.

    Sweep 2026-09-18 (#9) — daily and weekly crypto: the literature transplants

    Pre-registered on 2026-09-18 and committed before the run (this section's git history is the timestamp; results are appended in a later commit). Restarting the cadence after the August sweeps: one sweep, one question, hypotheses and gates fixed up front.

    Question: does any daily-or-slower crypto strategy clear the vetting bar? Every crypto sweep so far ran at 4h and below; the only daily crypto spec ever tested is sweep #3's trend-pullback (killed). Daily and weekly bars are the untested layer — and the one where costs stop mattering, so a price-shape edge has its fairest hearing.

    What this sweep deliberately does NOT do: no sub-daily crypto (floor measured at 1h, sweep #7), no Donchian-family breakouts (revisit clause spent, sweep #4), no crypto mean-reversion dip-buys (killed at 1d in sweep #3 and at 1h in sweep #1). Three frozen published rules only, zero parameter changes, run on instruments their authors did not tune them for — the transplant discipline of sweep #3/#5.

    Protocol. Engine: the app's own (runBuilderBacktest), harness committed at scripts/research/sweep9-crypto-daily.ts (public Binance spot data, cached; reproducible with no keys). Assets: BTC, ETH, BNB spot. Windows: W1 Aug 2018 → Aug 2022, W2 Aug 2022 → Aug 2026. Costs: 0.1%/side spot fees (the library's conservative crypto default); fee stress at 0.2%/side. Fills at the bar close — crypto trades 24/7, so the next open is the close and a next-open check is a no-op. Evidence per cell: trades, profit factor, net return, strip-best, sum-point max drawdown (account-basis in parentheses), Monte-Carlo p95 shuffled drawdown, exposure, the largest open-trade giveback (highest close to exit — the number the equity curve hides on a trend system), and same-window buy-and-hold.

    Gates per asset (unchanged): net positive in BOTH windows, survives strip-best in both, sum-point max DD ≤ 20. Cross-asset: ≥ 2 majors pass, or a single-asset passer ships under the README's narrow-clearer rule with BTC-only guardrails stated first-class (the entry #5 precedent). A drawdown near-miss (≤ 25) is reported as a near-miss, not shipped.

    Neighbors run only for a family whose primary shows genuine signal — positive AND strip-best-surviving in both windows on ≥ 2 assets, drawdown ignored — and exist to show a plateau, never to pick a winner. Only T1 has neighbors (SMA-100 / SMA-300); T2 has no parameters; T3's spec is frozen.

    Hypotheses (specs fixed before the run)

    # Hypothesis Source Spec (verbatim) TF Stated prior
    T1 SMA-200 trend timing — entry #3 transplanted verbatim to crypto Faber (2007), daily twin of the 10-month SMA close crosses_above sma(200) → long; close crosses_below sma(200) → exit at close; no stop 1d Return gates likely pass (the crash years are spent in cash); drawdown is where this is expected to fail — crypto whipsaw stacks run 2–3× an equity index's
    T2 One-week time-series momentum Liu & Tsyvinski, Risks and Returns of Cryptocurrency, RFS 2021 (documented on 2011–2018 data — both windows here are out-of-sample) Weekly bars: long at the close of an up-week (close is_rising), flat at the close of the first down-week (close is_falling); no stop; no parameters 1w Moderate: the effect is published and pre-dates both windows; ~15–25 round trips a year make the 0.2% cost line a real hurdle
    T3 TTM-squeeze breakout — the 2026-08-01 pre-registered leftover ("crypto vol-squeeze breakout"), never run at 1d (the 1h cousin died window-unstable in sweep #1) Carter (2005), frozen 20 / 2.0 / 1.5 Squeeze on while bb_upper(20,2) < ema(20) + 1.5×ATR(20); long fires when the upper Bollinger crosses_above that Keltner line with close > sma(20); exit close crosses_below sma(20); no stop 1d Low–moderate: compression → expansion is a real regularity, but breakout systems on crypto have failed the drawdown gate every time

    Stated T3 deviations (the book's momentum histogram and its exit-on-decline are not DSL atoms): momentum = close above the 20-day midline; exit = close back below it. These are fixed here, before the run, and will not be adjusted afterwards.

    Also run, informational only: T1 executed on the perpetual instead of spot (0.05%/side taker, funding charged over multi-month holds) — the number a futures trader needs.

    Decision rule, written down first. A full-bar passer on ≥ 2 majors ships as entry #7. A BTC-only full-bar passer ships BTC-only with guardrails. Anything else is a kill or a documented near-miss, and the library's answer to "a profitable daily crypto strategy" becomes this section.

    Results — all three killed, and the rejection reason has moved

    Every cell's failure is a drawdown failure. Not one of the eighteen primary cells was rejected for costs. Above the daily bar the 0.1%/side fee line is irrelevant — T1 trades ~4/yr, T2 ~13/yr — and the fee stress at 0.2%/side changes no verdict anywhere. That is the sweep's structural finding: below the daily bar crypto strategies die of costs; above it they die of drawdown. The library has now measured both walls.

    T1 — Faber SMA-200 trend timing: the transplant fails, and fails instructively

    Cell Trades PF Return Strip-best Sum DD (acct) MC p95 Exposure B&H (DD) Verdict
    BTC W1 14 5.60 +315.0% −2.7% 45.8 (13.7) 64.3 50% +206.3% (71.9) ❌ strip-best, DD
    BTC W2 16 6.81 +146.2% +46.2% 10.5 (4.2) 19.3 59% +170.3% (53.0) ✅
    ETH W1 11 14.30 +887.9% −2.0% 61.0 (53.3) 63.7 55% +299.2% (80.1) ❌ strip-best, DD
    ETH W2 12 6.07 +100.5% +30.3% 9.9 (5.2) 17.5 48% +14.3% (67.6) ✅
    BNB W1 18 24.74 +1579.3% +119.8% 46.4 (18.1) 52.7 55% +1973.7% (76.1) ❌ DD
    BNB W2 33 1.34 +34.5% −73.3% 50.5 (50.5) 93.8 55% +107.3% (58.2) ❌ strip-best, DD

    The headline returns are enormous and they are worth nothing, which is exactly what the bar exists to detect. BTC's first window makes +315% across fourteen trades — and one trade, 29 Apr 2020 → 19 May 2021, is +317.8% of it. Delete that single hold and the window is negative. ETH's W1 is the same story at a larger scale: +887.9% total, +889.9% from one trade (22 Apr 2020 → 25 Jun 2021), strip-best −2.0%. Twelve of BTC's fourteen W1 trades are whipsaw losses of −2.6% to −10.1% — a 14.3% win rate, the second winner being an Apr–Sep 2019 hold worth +65.8%. The system is a lottery ticket on catching one bull run, wrapped in a year of small bleeding.

    BTC's and ETH's second windows pass cleanly on all counts (BNB's fails strip-best at −73.3%), and that is the trap: run this on 2022–2026 alone and you would publish a 6.8 profit factor at a 10.5-point drawdown. The two-window gate is the only reason this isn't in the library.

    The comparison that matters, because the identical spec is entry #3 on SPY/QQQ: on US index ETFs it clears every gate in both windows with 9–15 point drawdowns. On BTC/ETH/BNB the same line produces 46–61 point drawdowns and a return one trade carries. The rule didn't change; the instrument did. A 200-day average on an index tracks a diversified thing that grinds; on a single crypto asset it tracks a thing that gaps 40% around the line and then whipsaws through it for months.

    T2 — one-week momentum: the effect is there, the drawdown is disqualifying

    Cell Trades PF Return Strip-best Sum DD (acct) MC p95 B&H (DD) Verdict
    BTC W1 53 1.98 +216.2% +156.4% 41.3 (38.2) 99.0 +269.3% (70.5) ❌ DD
    BTC W2 54 1.55 +82.8% +41.7% 30.7 (30.7) 77.2 +174.3% (51.8) ❌ DD
    ETH W1 48 2.38 +309.2% +216.3% 62.1 (62.1) 112.0 +427.9% (76.8) ❌ DD
    ETH W2 53 1.61 +112.2% +53.2% 40.9 (22.2) 87.7 +10.9% (67.1) ❌ DD
    BNB W1 51 3.95 +653.9% +279.8% 66.1 (45.3) 112.2 +2301.7% (72.1) ❌ DD
    BNB W2 53 1.56 +67.4% −9.4% 36.8 (29.0) 70.2 +82.3% (57.7) ❌ strip-best, DD

    This is the sweep's strongest signal and still a kill. All six cells are net positive with profit factors of 1.55–3.95 across ~50 trades per window, and five of the six survive strip-best (BNB W2 does not, at −9.4%) — the Liu–Tsyvinski effect, documented on 2011–2018 data, is still visible in two windows entirely out of sample for it. Then the drawdown column: 30.7 to 66.1 points against a ≤20 bar, with Monte-Carlo p95 tails of 70–112. Fee stress at 0.2%/side leaves every verdict unchanged (PF 1.45–3.82) — this is not a cost problem, and no cost assumption rescues it.

    The honest reading is that a weekly momentum filter is a real thing that roughly halves your exposure without halving your return, and it is not a ≤20%-drawdown strategy. ETH's second window is the one genuinely interesting cell — +112.2% against buy-and-hold's +10.9% — and it still carries a 40.9-point drawdown to get there.

    T3 — TTM squeeze: the lowest exposure in the sweep, still over the bar

    Cell Trades PF Return Strip-best Sum DD (acct) Exposure Verdict
    BTC W1 15 2.87 +113.2% +46.3% 24.4 (15.7) 21% ❌ DD
    BTC W2 17 1.77 +42.2% −1.8% 23.5 (15.5) 19% ❌ strip-best, DD
    ETH W1 18 3.72 +177.7% +106.1% 21.5 (16.2) 23% ❌ DD (near-miss)
    ETH W2 14 2.24 +57.9% +20.7% 17.8 (17.2) 14% ✅
    BNB W1 19 6.57 +460.5% +121.0% 45.2 (26.8) 23% ❌ DD
    BNB W2 20 1.61 +45.9% −29.5% 45.6 (24.5) 19% ❌ strip-best, DD

    The compression-then-expansion idea puts you in the market only 14–23% of the time and still breaches. ETH is the near-miss of the sweep — 21.5 in W1, 17.8 in W2, so one window over the line by 1.5 points — but that is a single asset failing a single gate, which is a near-miss, not an entry. BTC and BNB both fail strip-best in the second window on top of the drawdown. The 2026-08-01 "crypto vol-squeeze breakout" leftover is now closed at 1d, as its 1h cousin was in sweep #1.

    Informational — what the perp costs a daily trend trader

    T1 re-run on the perpetual (0.05%/side taker, funding charged over the holds) is the number a futures trader actually needs, and it is large: BTC W1 paid 50.4 points of funding, ETH W1 paid 64.7, BNB W1 paid 29.3 — against total returns of 266–1552 points, so 3–20% of gross, but on the losing whipsaw trades it is pure additional bleed. BNB's second window is the exception that proves the mechanism: funding there was net negative, paying the long 12.3 points. The lesson for anyone holding a multi-month crypto trend position: spot and perp are not interchangeable, and on a 385-bar hold the perp charges you roughly a fifth of a bull run.

    Verdicts

    # Hypothesis Verdict
    T1 Faber SMA-200 timing, crypto 1d Killed — 46–61 point drawdowns, and W1's entire return is one trade on both BTC and ETH. The identical spec passing on SPY/QQQ (entry #3) is the control
    T2 One-week momentum, crypto 1w Killed on drawdown — the published effect is visibly alive out of sample (PF 1.55–3.95, five of six cells strip-best-surviving) at 30.7–66.1 points of drawdown. Not a cost problem; fee stress changes nothing
    T3 TTM-squeeze breakout, crypto 1d Killed — 17.8–45.6 points at only 14–23% exposure; ETH is a 1.5-point near-miss, BTC/BNB also fail strip-best in W2. Closes the 2026-08-01 vol-squeeze leftover at the daily bar

    Neighbors were not run: the pre-registration allows them only for a family with genuine signal on ≥ 2 assets, and T1 had none (its returns depend on single trades). T2 reached the fee-stress phase and failed it identically.

    Structural conclusion — the second wall

    Sweeps #1–#7 measured the cost wall below the daily bar: sub-daily crypto edges are real and smaller than the fees. This sweep measures the drawdown wall above it: daily and weekly crypto momentum is real, survives strip-best, ignores fees entirely — and runs 30–66 points of drawdown, because that is what a single crypto asset does to anyone holding it directionally. Buy-and-hold's own drawdown in these windows is 52–80 points; trend systems cut that roughly in half, and half of 70 is still over the bar.

    Both walls have the same implication, and it is the one this library keeps arriving at: the crypto strategies that clear the bar do not hold directional exposure through the drawdown. They read positioning and get out (entry #1, entry #5), or they hold no direction at all (entry #6). Price-shape crypto is now tested and dead at 15m, 1h, 4h, 1d and 1w — the full ladder, both walls, published.

    A legitimate revisit of T1 or T2 needs a mechanism that addresses drawdown before seeing the results, not a filter added afterwards until the number looks acceptable — sweep #4 spent the Donchian family's revisit clause doing exactly that, and it still failed.


    Sweep 2026-09-18 (#10) — a second internals channel, and the ladder's top rung

    Pre-registered on 2026-09-18 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Sweep #9 closed the price-shape ladder: crypto price shape is dead at 15m, 1h, 4h, 1d and 1w — of costs below the daily bar and of drawdown above it. Everything that has ever cleared the bar on crypto reads positioning: perp funding, directionally in entries #1 and #5, market-neutrally in entry #6. So: is there a second positioning channel that clears the bar — and does the funding mechanism itself survive at the one rung of the timeframe ladder never tested?

    The new data channel: the cross-exchange premium. Coinbase quotes BTC and ETH against US dollars to a mostly US, mostly spot, mostly institutional customer base; Binance quotes them against USDT to everyone else. The gap between the two prices — the "Coinbase premium" that desks watch — is a read on who is buying, in the same way funding is a read on who is positioned. It has never been tested here. It is free, it is deep (Coinbase daily candles reach back to 2016 for BTC and 2018 for ETH), and it is not derivable from the OHLCV the previous nine sweeps have exhausted.

    Disclosed confound, stated before the run: the two venues quote different assets — USD against USDT — so this series carries the USDT peg deviation as well as the venue premium. That is how practitioners compute it, and a depeg is itself a stress signal, but the number means "US spot demand and peg health", not a clean venue spread. No adjustment is made.

    Protocol. Engine: the app's own (runBuilderBacktest), harness committed at scripts/research/sweep10-crypto-internals.ts (public Binance + Coinbase data, cached, reproducible with no keys). Windows: W1 Aug 2018 → Aug 2022, W2 Aug 2022 → Aug 2026. M1/M3 run on BTC and ETH spot (Coinbase lists no BNB pair) at 0.1%/side, stressed at 0.2%; M2 runs on BTC/ETH/BNB perps at 0.05%/side futures taker with funding charged, stressed at the 0.1% spot-level tier. Gates per asset, unchanged: net positive in BOTH windows, strip-best positive in both, sum-point max drawdown ≤ 20. Cross-asset: ≥ 2 majors, or the README's narrow-clearer rule with first-class guardrails.

    How the premium reaches the engine. The DSL has no cross-exchange atom, so the signal is injected through the engine's aux channel — the same channel perp funding uses — and read with the funding_rate atom, with includeFunding false so nothing is charged as a cashflow. What is injected is the signal minus its threshold, so one operator (crosses_above 0) expresses both a fixed-zero and a moving-percentile trigger. Fills, exits, fees and every metric are the real engine, unmodified. If a premium hypothesis passes, shipping it as an adoptable entry requires a real DSL atom and a live feed — a build decision, stated here so a pass is not mistaken for something users can adopt the same day.

    Hypotheses (specs fixed before the run)

    # Hypothesis Spec Assets Stated prior
    M1 Premium momentum — US spot demand returning marks the turn Daily. Premium = (Coinbase close / Binance close − 1) × 100, 7-day mean. Long when it crosses above 0. Exit: 2×ATR(14) trail. Long only BTC, ETH Low–moderate. A zero line is an arbitrary level on a series whose mean wanders with the peg; the mechanism is real but the trigger is crude
    M2 Funding-squeeze at 1d — entry #1's frozen spec on the ladder's untested top rung Daily. funding_rate < 0 AND RSI(14) crosses above 30; 2×ATR(14) trail. Verbatim entry #1, only the bar changes BTC, ETH, BNB Moderate. The spec is cross-asset at 4h and BTC-only at 1h — the edge per trade grows as the bar does, so 1d should be the strongest rung. The risk is the opposite one: ~4–8 signals a year may be too few to distinguish from luck
    M3 Premium capitulation — the same "fade the crowded side, enter on the turn" shape as entry #1, on the new channel Daily. 7-day mean premium crosses back above its trailing 1-year 10th percentile — US selling was unusually extreme and is relenting. Exit: 2×ATR(14) trail. Long only BTC, ETH Moderate–high. This is the shape of the library's only durable directional crypto edge, applied to the only untested positioning channel. A trailing percentile also self-adapts: the premium's scale in 2018 and in 2026 are not the same number

    Both premium parameters are the natural round choices and are fixed here: smoothing 7 days ("one week"), percentile window 365 days ("one year"), percentile 10th ("the bottom decile"). The exit is the library's house exit for internals entries — the 2×ATR(14) trail entries #1 and #5 use — adopted unchanged rather than invented for this sweep.

    Neighbors run only if M3's primary shows genuine signal (positive and strip-best-surviving in both windows on ≥ 2 assets, drawdown ignored), and only as the pre-declared 5th and 20th percentiles — a plateau check, never a winner-picker. A monotone or flat neighbor grid supports the result; a knife-edge one kills it regardless of what the primary said.

    Decision rule, written down first. A full-bar passer on both majors ships as entry #7. A single-asset passer ships narrow, with its guardrails first-class. A premium passer ships as a research finding first and becomes adoptable only once the atom and the live feed exist. Anything else is a kill, published here.

    Results — all three killed, and the funding mechanism has a ceiling as well as a floor

    The premium data is clean: 3,302 of 3,302 bars align with Coinbase on both BTC and ETH, the 7-day mean premium sits at +0.014% (BTC) and +0.022% (ETH) and ranges −3.5% to +5.6%. The channel is real and well-measured. It does not clear the bar.

    M1 — premium momentum: right shape, wrong instrument class

    Cell Trades PF Return Strip-best Sum DD (acct) Exposure Verdict
    BTC W1 21 0.62 −31.8% −49.4% 34.7 (34.7) 11% ❌ return, strip-best, DD
    BTC W2 26 1.80 +51.9% +20.2% 29.3 (29.3) 24% ❌ DD
    ETH W1 26 2.42 +140.7% +58.6% 23.6 (23.6) 20% ❌ DD
    ETH W2 30 1.85 +69.9% +31.2% 21.0 (19.0) 26% ❌ DD

    ETH is the near-miss: both windows positive, both strip-best-surviving, profit factors 1.85 and 2.42 — and drawdowns of 23.6 and 21.0 against the ≤20 bar, so it misses by 1.0 and 3.6 points. BTC's first window is outright negative. A zero line on a series whose mean wanders with the USDT peg was the stated weakness of this trigger, and it behaved as the low prior expected.

    M2 — the funding-squeeze at 1d: the ladder has a ceiling

    Cell Trades PF Return Strip-best Sum DD Exposure Verdict
    BTC W1 6 1.55 +9.1% −3.5% 10.7 5.9% ❌ strip-best
    BTC W2 7 0.89 −3.0% −20.4% 11.5 3.4% ❌ return, strip-best
    ETH W1 3 2.57 +14.9% +2.3% 9.5 3.8% ✅
    ETH W2 4 0.00 −19.6% −19.6% 19.6 3.2% ❌ return, strip-best
    BNB W1 7 0.10 −47.9% −50.9% 48.2 6.1% ❌ return, strip-best, DD
    BNB W2 2 — +24.2% +2.1% 0.0 2.5% ✅ (2 trades)

    Dead, and for the opposite reason to 15m. At the daily bar the setup fires two to seven times per four-year window — BTC's entire W2 is seven trades, ETH's W1 is three. Nothing can pass a strip-best test on three trades, and nothing should: a single trade is 33% of the sample. BNB's first window loses 47.9% across seven trades. The drawdowns are fine (0–19.6 outside BNB) because exposure is 2.5–6%; there is simply no strategy there.

    That completes the ladder in both directions. One frozen spec, four rungs:

    Rung Verdict
    15m Dead — costs (sweep #7)
    1h BTC only, at ≤0.05%/side futures fees (entry #5)
    4h Cross-asset, the strongest form (entry #1)
    1d Dead — sample. Two to seven signals per four-year window

    The funding-squeeze is not "better on higher timeframes." It has a sweet spot at 4h, and it is bounded on both sides: by cost below, by sample above. Entry #1's timeframe is now measured from both directions rather than assumed.

    M3 — premium capitulation: the strongest prior in the sweep, and it failed

    Cell Trades PF Return Strip-best Sum DD (acct) Exposure Verdict
    BTC W1 13 0.80 −11.4% −28.0% 22.1 (20.0) 6.8% ❌ return, strip-best, DD
    BTC W2 18 3.32 +86.8% +39.8% 18.5 (9.6) 18.3% ✅
    ETH W1 10 3.91 +121.6% +42.1% 22.3 (19.5) 11.5% ❌ DD
    ETH W2 16 1.49 +31.8% −13.4% 33.4 (20.7) 12.5% ❌ strip-best, DD

    This was pre-registered with the sweep's highest prior — the exact "fade the crowded side, enter on the turn" shape that makes entry #1 work, pointed at the new channel — and it is the sweep's clearest kill. BTC's two windows disagree completely (−11.4% then +86.8%); ETH's do too, in the other direction (+121.6% then +31.8% with strip-best negative). Every one of the four cells that looks good has a partner that doesn't. Neighbors were not run: the pre-registration required genuine signal on ≥ 2 assets and there was none on even one.

    The stated prior was wrong, and writing it down beforehand is what makes that visible.

    Verdicts

    # Hypothesis Verdict
    M1 Cross-exchange premium momentum Killed — ETH misses the drawdown bar by 1.0 and 3.6 points with both windows otherwise clean; BTC W1 is negative
    M2 Funding-squeeze at 1d Killed on sample — 2–7 trades per four-year window. Establishes the mechanism's upper bound; 4h is a measured sweet spot, not an assumption
    M3 Cross-exchange premium capitulation Killed — window-disagreement on both assets, in opposite directions. The sweep's highest stated prior

    Structural conclusion — the channel is real, the drawdown is still the wall

    The cross-exchange premium is a genuine positioning signal: it aligns on every bar, it moves with stress, and pointed at ETH it produced two independent windows of profit-factor 1.85–2.42 that survive strip-best. It still fails, and it fails at the same place everything else in crypto fails — a drawdown in the low-to-mid twenties instead of under twenty.

    Sweep #9 found the same thing on price shape. That is now the consistent finding across eleven hypotheses and two data channels: on crypto, holding directional exposure long enough to earn the edge means holding it through 20–35 points of drawdown, whichever signal put you there. Perp funding at 4h and 1h is the exception because it exits fast and sits out 95% of the time.

    The honest summary for anyone asking this library for another crypto strategy: there are three, they are entries #1, #5 and #6, and they are three because directional crypto exposure and a ≤20% drawdown are close to mutually exclusive. Two further channels were tested to find that out.

    A revisit of M1 or M3 needs the premium as a real DSL atom with a live feed, and a drawdown-aware mechanism stated in advance — not a tightened trail chosen after seeing these tables.


    Sweep 2026-09-18 (#11) — is "internals beat price shape" a fact about crypto, or about markets?

    Pre-registered on 2026-09-18 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Ten sweeps have established a pattern on crypto: strategies that read positioning clear the bar (entries #1, #5, #6), and strategies that read price shape do not, at any timeframe from 15m to 1w. The library has never asked whether that is a fact about crypto or a fact about markets. Equities have a positioning channel too — the volatility term structure, spot fear against three-month fear — and it has never been tested here.

    Why it deserves the slot. Every crypto candidate now dies on drawdown, because a single crypto asset does not offer a ≤20%-drawdown path to a directional edge. Equity ETFs do: three of the library's six entries live there. So this sweep takes the crypto thesis to the instrument class where the drawdown bar is reachable, rather than taking another crypto mechanism to a bar that eleven hypotheses have now failed to clear.

    The data. VIX and VIX3M daily closes from CBOE's public index archive (free, no key). VIX3M begins 18 Sep 2009, which fixes the history available: W1 Jan 2010 → Jan 2018, W2 Jan 2018 → Aug 2026 — deliberately the same windows as entry #3, so the results are directly comparable to a trend system on the same instruments. Stated limitation up front: the 2000–2010 stress decade that entry #3 and #4 report is not available for this signal, so there is no equivalent stress row and this write-up will not pretend otherwise. Each window does contain a major regime break (2011 and 2015–16 in W1; 2018, 2020 and 2022 in W2).

    Instruments: SPY and QQQ as the primary majors, IWM and EFA for breadth. Costs 0.03%/side with a 0.1% stress. Gates unchanged: net positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20, then ≥ 2 instruments.

    Correlation disclosure, stated before the run. V2 and V3 buy panic and sell the recovery, which is the same family as entry #2 and entry #4. If either passes it ships with the same one-sleeve warning those two carry, and the write-up will say plainly that a third dip-buy is not diversification. V1 is a timing system and belongs to entry #3's family instead.

    Hypotheses (specs fixed before the run)

    # Hypothesis Spec Stated prior
    V1 Term-structure regime timing — own the index while the curve is calm Long when VIX/VIX3M crosses below 1.0; exit when it crosses back above. No stop, condition exit — entry #3's shape, driven by internals instead of a moving average Moderate–high. Volatility clusters, and the inversions are the crashes. The risk is whipsaw: the ratio crosses 1.0 far more often than a 200-day average does
    V2 Term-structure capitulation — take the normalisation, don't hold the regime Same entry as V1; exit on a 2×ATR(14) trail — the library's house exit for internals entries (#1, #5) Moderate. A trail should cut the whipsaw cost that threatens V1, at the price of exiting good regimes early
    V3 VIX level capitulation (the control) Long when VIX crosses back below 30; 2×ATR(14) trail. The conventional panic line, same exit as V2 Moderate. Its job is comparative: if V3 ≈ V2 the term structure adds nothing over the level, and the honest write-up is about the level

    Thresholds are the conventional lines and are fixed here: ratio 1.0 (flat curve), VIX level 30 (the panic line). Neighbors, run only for a family with genuine signal on ≥ 2 instruments: ratio 0.95 / 1.05 and VIX level 25 / 35 — a plateau check, never a winner-picker.

    Decision rule, written down first. A full-bar passer on ≥ 2 instruments including at least one primary major ships as entry #7, with the correlation disclosure above if it is V2 or V3. A passer on IWM/EFA only is reported as a curiosity, not shipped — the library does not ship an edge that avoids the two most liquid names it tests. If V3 matches V1/V2, the finding is that the term structure is not the ingredient. Anything else is a kill, published here.

    Results — a strategy passed all five gates, so we built a sixth gate and it died

    This is the most useful sweep in this log, and it did not produce an entry.

    V2 cleared every check the vetting bar has ever asked for: net positive in both windows on three of four instruments, strip-best-surviving in all of them, drawdowns of 8.1–14.5 against a ≤20 bar, robust at 3.3× the fee assumption, and better when filled at the next open. It was one commit away from shipping as entry #7. Then a test that is not on the bar — is this signal better than entering on random days? — put its second window at the 75th percentile of pure chance, and it is not in the library.

    The rest of this section is that story with the numbers, followed by what it cost the rest of the library.

    The setup, as measured

    The term structure is inverted (VIX above VIX3M) on 324 of 4,242 trading days — 7.6% — with a median ratio of 0.885. So the entry signal fires as a genuinely uncommon event returning to normal, which is what made it worth testing.

    V1 — holding the calm regime: killed on drawdown

    Cell Trades PF Return Strip-best Sum DD (acct) Exposure B&H (DD) Verdict
    SPY W1 48 2.45 +75.9% +62.2% 12.7 (11.8) 92.5% +135.5% (19.4) ✅
    SPY W2 55 2.36 +99.3% +50.4% 30.5 (20.3) 90.4% +177.9% (34.1) ❌ DD
    QQQ W1 48 3.20 +126.1% +105.8% 13.0 (10.8) 92.5% +235.6% (16.4) ✅
    QQQ W2 55 2.25 +132.5% +60.4% 46.6 (27.3) 90.4% +334.1% (35.6) ❌ DD
    IWM W1 48 2.22 +87.5% +66.2% 22.4 (13.3) 92.5% +138.3% (29.4) ❌ DD
    IWM W2 55 1.63 +66.5% +36.1% 36.8 (24.9) 90.4% +89.2% (42.3) ❌ DD
    EFA W1 48 1.12 +10.6% −7.5% 26.2 (24.0) 92.5% +23.9% (27.3) ❌ strip-best, DD
    EFA W2 55 1.27 +26.8% −10.6% 36.9 (34.5) 90.4% +49.1% (38.2) ❌ strip-best, DD

    Standing aside only while the curve is inverted leaves you invested 90%+ of the time, which means you keep essentially all of the index's drawdown — 30.5 on SPY and 46.6 on QQQ in the second window. The 7.6% of days the signal avoids are not where the damage is. Killed.

    V2 — the same entry with a trailing exit: passes the bar

    Cell Trades PF Return Strip-best Sum DD (acct) MC p95 Exposure Verdict
    SPY W1 38 2.96 +68.3% +56.6% 12.0 (10.6) 16.9 32.1% ✅
    SPY W2 41 1.71 +26.9% +14.1% 9.4 (7.6) 18.0 20.0% ✅
    QQQ W1 38 3.99 +91.6% +77.6% 8.1 (6.4) 13.6 29.8% ✅
    QQQ W2 39 1.87 +44.0% +22.6% 12.2 (11.8) 24.2 20.6% ✅
    IWM W1 38 3.10 +83.7% +71.3% 10.7 (8.6) 17.4 28.0% ✅
    IWM W2 41 1.44 +23.7% +10.1% 14.5 (14.1) 27.5 19.1% ✅
    EFA W1 39 1.30 +17.2% +6.6% 14.4 (13.7) 28.9 23.8% ✅
    EFA W2 41 1.14 +6.2% −3.6% 10.5 (10.4) 25.3 19.9% ❌ strip-best

    Three instruments including both primary majors, every gate, ~240 trades across the passing cells — a better sample than any crypto entry in this library. At 0.1%/side the same three still pass. The difference between V1 and V2 is only the exit, which already tells you where the value is: not in knowing when to be invested, but in getting out on a trail.

    Neighbors (run because the primary showed genuine signal): threshold 1.05 passes SPY/QQQ/IWM with profit factors of 3.84–9.71 on 13–21 trades; threshold 0.95 fails on drawdown nearly everywhere (21.9–29.0). That gradient is monotone and mechanical rather than knife-edged — at 0.95 the trigger fires on ordinary calm-market noise, the trade count triples to 57–75 per window, and the drawdowns follow. Selectivity again.

    V3 — the control earns its keep

    Cell Trades PF Return Strip-best Verdict
    SPY W1 9 0.16 −15.3% −18.2% ❌
    QQQ W1 8 0.19 −13.0% −16.1% ❌
    IWM W1 8 0.17 −14.9% −18.0% ❌
    EFA W1 9 0.21 −17.4% −19.7% ❌
    SPY / QQQ / IWM / EFA W2 21–22 2.56–2.79 +36.6 … +52.8% + ✅ all four

    Buying when VIX crosses back below 30 — the line every financial television segment quotes — is negative on all four instruments in 2010–2018 at profit factors of 0.16–0.21, then positive on all four in 2018–2026. A textbook window flip, and the reason the control was pre-registered: the term structure is not a dressed-up version of the VIX level. Comparing a level against a fixed number fails; comparing spot fear against three-month fear does not. That comparison is the only part of this sweep worth keeping.

    The sixth test — and the reason there is no entry #7

    Before shipping V2 the obvious question was asked: is this a signal, or is it a good exit applied to a market that goes up? The test is cheap. Keep the window, the instrument, the 2×ATR exit and the fees; throw the signal away and enter on N random days, where N is the number of trades the real strategy took; repeat 400 times; see where the real return lands.

    Cell Real return Null median Null p95 Real percentile Reading
    SPY W1 +68.3% +9.5% +33.0% 100th Beats the null
    SPY W2 +26.9% +14.4% +50.4% 75.3rd Indistinguishable
    QQQ W1 +91.6% +18.2% +46.9% 100th Beats the null
    QQQ W2 +44.0% +24.0% +65.9% 79.5th Indistinguishable
    IWM W1 +83.7% +11.7% +47.1% 100th Beats the null
    IWM W2 +23.7% +9.5% +48.5% 72.3rd Indistinguishable
    EFA W1 +17.2% −6.7% +18.7% 94th Marginal
    EFA W2 +6.2% +4.9% +31.5% 54.3rd Indistinguishable

    In the first window the signal is unambiguously real — 400 random draws never once beat it on any of the three instruments. In the second window the same signal earns less than the 95th percentile of random timing on all four. Its +26.9% on SPY sits inside a null distribution whose own 95th percentile is +50.4%.

    A strategy that cannot beat a coin flip in its most recent window is not a strategy, whatever five other checks say. V2 is killed.

    Two things this is not. It is not the dip-buy in disguise: of V2's ~79 entries per instrument, only 1.3–5.2% are also an entry-#2 RSI(2) signal day and only 15–25% fall within three days of one, so these are mostly distinct days. And it is not a look-ahead artefact: the edge survives a full one-day signal lag and next-open fills independently (the combination of both leaves QQQ alone, which is disclosed above and was the floor test).

    The finding to keep: the volatility term structure genuinely predicted equity returns in 2010–2018 and stopped doing so in 2018–2026. Every V2 cell in the modern window is inside the noise. That is a result about the market, published here rather than sold as an entry.

    Verdicts

    # Hypothesis Verdict
    V1 Term-structure regime timing Killed — 90%+ exposure keeps 30.5–46.6 points of drawdown; the 7.6% of days it sits out are not where the damage is
    V2 Term-structure capitulation Killed by the null test, after passing all five bar gates, fee stress and both fill checks. First window 100th percentile, second window 72nd–80th
    V3 VIX level < 30 (control) Killed — negative on all four instruments in W1 (PF 0.16–0.21), positive on all four in W2. The control worked: the term structure is not the level

    The bar gained a sixth check, and the existing entries were re-audited against it

    The five original gates ask whether a strategy made money robustly. None of them asks whether its signal did anything. V2 proved a strategy can satisfy all five and still be chance, so the null test is now a standing gate — and the honest thing to do with a new standard is apply it backwards. Every shipped entry was re-run through it on the window its own page displays, using the committed configs (scripts/research/null-test-audit.ts, 400 draws per cell):

    Entry Window Real trades (exposure) Null trades (exposure) Real return Null median Null p95 Percentile Verdict
    #1 BTC funding 4h 2022–24 10 (1.9%) 10 (2.2%) +15.3% −0.2% +21.5% 90th ⚠️ above, not decisive
    #1 2024–26 12 (4.1%) 12 (2.6%) +13.6% −4.0% +11.3% 96.3rd ✅ beats the null
    #5 BTC funding 1h 2022–26 66 (2.3%) 65 (1.9%) +12.9% −4.8% +12.5% 95.5th ✅ beats the null
    #2 RSI(2) dip-buy 2018–26 76 (12.0%) 71 (7.1%) +36.4% +10.3% +30.6% 98.3rd ✅ beats the null
    #3 SMA-200 timing 2010–18 21 (80.6%) 9 (58.5%) +64.4% +46.2% +71.0% 89th ⚠️ above, not decisive
    #3 2018–26 29 (77.0%) 12 (60.3%) +76.5% +59.9% +93.9% 77.3rd ❌ indistinguishable
    #4 Double-7s 2010–18 55 (31.5%) 46 (17.2%) +56.4% +26.8% +47.7% 98.5th ✅ beats the null
    #4 2018–26 50 (28.5%) 42 (15.7%) +45.7% +32.5% +65.3% 76.3rd ❌ indistinguishable

    What holds up. The two funding entries and the RSI(2) dip-buy pass. The crypto rows are the most striking in the table: random 4h and 1h entries with the same trailing exit have a median return of −0.2% to −4.8%, and the funding signal turns that into +12.9% to +15.3%. Entry #1's first window is 90th rather than 95th, which is a caveat on a ten-trade sample, not a failure. Entry #2 sits at the 98.3rd percentile.

    What does not, and the honest reading of each.

    • Entry #4's second window (76.3rd). Its first window is 98.5th, so the mechanism was real and the modern window cannot be distinguished from random timing at the same exposure. That is now disclosed on the entry.
    • Entry #3 in both windows (89th, 77.3rd). This one needs a fair hearing rather than a headline: a return-based null is the wrong test for entry #3, whose published claim was never excess return. Its own write-up already says holding beats it on raw return and that the pitch is the drawdown column — a third of buy-and-hold's. What this table adds is that its return is not distinguishable from being long most of the time with a trailing exit. Both statements are now on the entry.

    One methodological caveat, stated rather than buried: the null usually realises fewer trades and less exposure than the real strategy, because a random signal that fires while a position is open is ignored. Less exposure means a lower null return, which biases every percentile in this table upward — in the strategy's favour. Entry #3's 58.5% null exposure against its own 80.6% is the extreme case. So these are floors on the percentile, not ceilings, and the two ❌ rows would be worse under an exposure-matched null, not better.

    Nothing has been delisted. The entries keep their evidence, their windows and their guardrails, and they now carry this result too — which is the only version of "we publish the failures" that means anything once a failure lands on our own shelf.


    Sweep 2026-10-08 (#12) — open interest: the order-flow channel the low-timeframe page said was missing

    Pre-registered on 2026-10-08 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Is there a 1h crypto strategy that clears all six gates when its positioning signal comes from open interest and crowd positioning instead of funding?

    Why this is a revisit the log allows, not a re-mine. Sweep #7 closed sub-daily crypto with a condition attached: going lower "is a data-acquisition problem (order flow, historical open interest, liquidation feeds — none freely available), not a backtesting problem", and the low-timeframe finding lists order-flow data first among the things that would genuinely reopen the question. Part of that sentence is no longer true. Binance's public data archive (data.binance.vision) publishes 5-minute USDT-M futures metrics — open interest, the global long/short account ratio, two top-trader ratios and the taker buy/sell ratio — from 1 Sep 2020 for BTC and 1 Dec 2021 for ETH and BNB: complete (2,228 / 1,772 / 1,772 daily files, no day missing), free, no key. No earlier sweep had this channel. Liquidations are still unavailable (the archive carries no liquidation history), and order-book depth exists only from Jan 2023 — too short for two windows — so both stay on the "would reopen it" list.

    What this sweep deliberately does NOT do. No new price-shape hypotheses (dead at every rung, sweeps #1–#9). No new trigger or exit: every hypothesis uses the house spec of the library's internals entries — RSI(14) crosses above 30, 2×ATR(14) trailing stop — and differs from the others only in its positioning gate, so the comparison isolates the new channel. No second condition stacked on any gate.

    Protocol.

    • Engine: the app's own (runBuilderBacktest); harness committed at scripts/research/sweep12-open-interest.ts (public Binance data, cached, reproducible with no keys).
    • Prices: Binance USDT-M perpetual 1h klines. Earlier crypto sweeps priced spot candles under perpetual costs, as the entry pages' data notes disclose; this sweep trades the instrument it prices, and re-runs entry #5 on the same candles as a reference.
    • Costs: 0.05%/side futures taker plus real funding at every 8h settlement held through; stress at 0.1%/side.
    • Windows: ETH and BNB metrics begin Dec 2021, so the windows are shorter than the four-year windows of earlier crypto sweeps — stated here, before the run. W1 Jan 2022 → May 2024 (LUNA and 3AC, FTX, the 2023 recovery, the spot-ETF launch) and W2 May 2024 → Oct 2026. BTC's archive is 15 months longer, so W0 Oct 2020 → Jan 2022 (the 2021 bull market) runs on BTC as an informational third window. It never gates.
    • Gates per asset, unchanged: net positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20. Cross-asset: ≥ 2 of BTC/ETH/BNB. The sixth gate: at or above the 95th percentile of a 400-draw random-entry null in both windows on every passing asset. Unlike sweep #11's audit of the shipped entries, this null charges real funding on both sides — the engine gained a separate billing channel (aux.fundingBilled) so a random trigger can ride the signal channel while the real rates are billed.

    The data, defined before the run.

    • Open interest = sum_open_interest, in contracts of the base asset — positions, not dollars, so a price move cannot masquerade as positioning.
    • Each archive record is stamped at the start of its 5-minute period and known at its end (checked against the live API: the archive's 11:35 row is the live endpoint's 11:40 reading). A bar closing at T reads the latest record known by T; a reading more than an hour stale counts as missing.
    • 24h OI change = open interest at the bar close ÷ open interest 24 hours earlier − 1.
    • Percentiles are trailing 28 days, current bar included, defined once 90% of the window's readings exist. 28 days is the longest window an adopted plan could compute live — Binance's live open-interest endpoint serves one month of history — and it is fixed for that reason, not chosen from data. Deciles are the house convention (sweep #10).
    • Long/short ratio = the global long/short account ratio (count_long_short_ratio): Binance futures accounts net long ÷ accounts net short.

    Data checks, done before the run (coverage only — no strategy was evaluated): 54,048 contiguous perpetual 1h bars per asset, Aug 2020 → Sep 2026; every funding settlement on the 8h UTC grid the engine bills; open interest present on every bar of both windows apart from a handful of exchange-side gaps (the longest 10.5 hours, 16 Feb 2024), where the gate stays closed rather than guessed. One real hole: the long/short account ratio is blank in the archive from 30 Dec 2021 to 19 Jan 2022 on all three assets, so O3's 28-day percentile is undefined until 13 Feb 2022 and O3's first window effectively starts six weeks late. Nothing is backfilled. BTC's 2020–21 files carry 75,255 duplicated rows, dropped on load.

    Hypotheses (specs fixed before the run)

    # Hypothesis Gate — then RSI(14) crosses above 30, exit on a 2×ATR(14) trail Stated prior
    O1 Deleveraging exhaustion — after a day of positions closing, the turn has no forced sellers left 24h OI change ≤ its 28-day 10th percentile Moderate. The liquidation-cascade overshoot is the most widely cited crypto microstructure effect. It differs from sweep #6's killed volume flush in two ways stated in advance: it waits for the turn instead of buying the flush bar, and it requires positions to have closed — volume cannot tell opening from closing
    O2 Short build-up squeeze — positions opened into an oversold decline are mostly shorts, and they are the fuel when price turns 24h OI change ≥ its 28-day 90th percentile Moderate. The quantity-of-leverage twin of entry #5's price-of-leverage signal (funding < 0). Its risk is the overlap: if it only works where funding is already negative, it adds nothing
    O3 Crowd short — an unusually short-heavy crowd at an oversold turn Global long/short account ratio ≤ its 28-day 10th percentile Low–moderate. The headcount twin of funding. Retail accounts usually buy dips, so an unusually short crowd at an oversold turn may be rare — the stated risk is sample size, the failure that killed M2 in sweep #10

    Informational rows — never shipped:

    • C0 — control: the trigger alone, no gate. What the RSI turn and the trail do by themselves in these windows.
    • R5 — reference: entry #5's committed config verbatim (funding_rate < 0) on the same windows and perpetual candles — the incumbent a new 1h entry has to be worth more than.

    Phases, each conditional on the one before.

    1. Primaries: O1–O3, C0, R5.
    2. Null: every O-cell, reported in full; R5 for reference.
    3. Robustness — only for a full passer (all six gates on ≥ 2 assets): fee stress at 0.1%/side, reported (a stress failure ships as a fee-tier guardrail, entry #5's precedent), and a one-bar lag on the positioning reading. A passer must stay positive and strip-best-positive in both windows on its passing assets under the lag, or it is killed as latency-fragile.
    4. Neighbors — only for a family with genuine signal (positive and strip-best-positive in both windows on ≥ 2 assets, drawdown ignored): the 5th and 20th percentiles (95th and 80th for O2). A plateau check, never a winner-picker; a knife-edge grid kills the family whatever its primary said.
    5. The 15m rung — only for a full passer: the same definitions on 15m bars. Reported; it ships as a separate rung only if it clears all six gates itself.

    Decision rule, written down first.

    • A hypothesis that clears all six gates on ≥ 2 majors and survives the lag check ships as entry #7 — once an open-interest atom and its live feed exist in the app and an atom-based backtest reproduces this harness trade for trade. Until then it is a published result, not an adoptable entry.
    • If O1 and O2 both pass, both are published; the entry ships the one with the higher minimum null percentile across its passing cells, and its write-up says the other tail passed too.
    • A BTC-only passer is reported and does not ship: the library already carries a BTC-only 1h entry (#5), and a second would be a duplicate sleeve.
    • Anything else is a kill, published here — and the low-timeframe page's "historical open interest" clause is updated either way.

    Considered and not run — each rejected before any data was examined:

    • Equity late-day momentum (Gao, Han, Li & Zhou 2018; Baltussen, Da, Lammers & Martens 2021): documented through 2020, but the one direct 2023–24 measurement found (a self-published test on S&P 500 sessions) shows no slope, and the academic work on same-day options finds dealers typically long gamma, which predicts reversal into the close rather than momentum. A ~250 trade-a-year strategy at 2 bp/side needs a gross edge the recent evidence no longer shows.
    • Order-book depth (archive from Jan 2023): two windows of under two years each. Revisit when the history allows it.
    • The premium index (real-time funding): the same mechanism as entries #1 and #5 with a fresher input — a tweak of an incumbent, not a new question.
    • The taker buy/sell ratio as a second condition on O1: the liquidation fingerprint it would add is what O1 already measures through open interest, and stacking it is the knob-adding this bar forbids.

    Results — all three killed, and the incumbent's latest window doesn't clear the bar

    No hypothesis passes, and none reached the robustness, neighbor or 15m phases: the pre-registration runs those only for a full passer or a family with genuine signal on two assets, and there was neither. Two of the three die the way earlier low-timeframe ideas died — the windows disagree — and the third barely trades. The run also put a number on something entry #5's page had only described: its most recent stretch.

    The null charged real funding on both sides for the first time. Its medians, −2.7% to −10.4% per cell, confirm what sweep #11 found fees-only: random 1h entries with this exit lose money, so a gate has to do real work to clear it.

    O1 — deleveraging exhaustion: the windows disagree, and the first one loses to random entry

    Cell Trades PF Return Strip-best Sum DD (acct) Null pct Verdict
    BTC W1 40 0.49 −21.6% −26.6% 23.8 (23.8) 3.8th ❌ return, strip-best, DD
    BTC W2 33 1.68 +14.3% +6.0% 11.2 (9.1) 98.3rd ✅
    ETH W1 36 0.41 −26.0% −32.0% 27.0 (26.7) 2nd ❌ return, strip-best, DD
    ETH W2 37 1.24 +10.7% +0.6% 19.6 (15.8) 86th gates 1–5 ✅, null ❌
    BNB W1 29 1.19 +5.6% −3.1% 7.7 (6.9) 80th ❌ strip-best
    BNB W2 38 0.71 −10.4% −19.7% 24.1 (21.2) 24.8th ❌ return, strip-best, DD
    BTC W0 (info) 25 0.20 −45.3% −49.6% 47.8 (46.8) — 2021 bull market

    In 2022–24, buying the first turn after a bottom-decile day of deleveraging (by the trailing four weeks' standard) lost 21.6% on BTC and 26.0% on ETH — and lost it worse than random timing: the real results sit at the 3.8th and 2nd percentiles of 400 random-entry draws. In 2024–26 the same rule made +14.3% and +10.7%, and on BTC it clears the null (98.3rd). BNB runs the other way round, and the 2021 bull market (W0, BTC only) loses 45.3% over 25 trades. Three regimes: it loses in two and pays in one.

    One reading, offered as a reading and not a finding: in a falling market the first flush is the first leg of a longer decline — the continuation sweep #6's volume flush also caught — and in a rising one it is a reset. Either way, a gate whose sign depends on the regime is telling you about the regime, not about the flush.

    O2 — short build-up: no signal in either window

    Cell Trades PF Return Strip-best Sum DD (acct) Null pct Verdict
    BTC W1 41 0.89 −2.7% −9.5% 13.3 (12.2) 58.5th ❌ return, strip-best
    BTC W2 43 0.44 −19.0% −24.4% 22.5 (22.5) 4.8th ❌ return, strip-best, DD
    ETH W1 44 0.77 −12.1% −29.8% 21.8 (21.0) 30th ❌ return, strip-best, DD
    ETH W2 30 1.05 +1.5% −11.0% 11.9 (10.9) 68.3rd ❌ strip-best
    BNB W1 47 0.99 −0.3% −5.4% 11.6 (11.0) 64.8th ❌ return, strip-best
    BNB W2 23 0.73 −4.9% −8.4% 11.8 (11.5) 37.3rd ❌ return, strip-best
    BTC W0 (info) 19 0.06 −28.3% −29.1% 29.1 (28.9) —

    Negative in five of six cells, flat in the sixth, and nothing near the null's tail (4.8th–68.3rd). Positions opened into an oversold decline were not squeeze fuel at 1h in either window. The quantity of leverage does not do what its price — funding — does.

    O3 — crowd short: the stated risk, exactly

    Eleven trades across six cells: BTC none in either window, ETH 4 then none, BNB 2 then 5. The account ratio's bottom decile almost never coincides with an oversold turn — the prior said why: retail accounts buy dips, so the crowd is rarely unusually short at the moment this trigger fires. That is sweep #10's M2 failure again — there is no strategy here to judge. BNB's second window (5 trades, +10.6%) lands at the 99th percentile of its null, which on five trades means nothing.

    The control and the incumbent

    Cell Trades PF Return Strip-best Sum DD (acct) Null pct
    C0 BTC W1 / W2 252 / 266 0.79 / 0.89 −40.2% / −17.9% −50.2% / −26.5% 51.0 / 37.6 —
    C0 ETH W1 / W2 265 / 255 0.67 / 0.87 −88.7% / −31.1% −106.1% / −43.6% 93.0 / 48.8 —
    C0 BNB W1 / W2 247 / 250 0.97 / 0.73 −6.1% / −54.9% −20.9% / −64.4% 34.2 / 61.4 —
    R5 BTC W1 49 1.57 +18.9% +12.0% 7.9 (7.2) 97.5th
    R5 BTC W2 46 1.04 +0.9% −4.5% 7.8 (7.8) 74.8th
    R5 ETH W1 / W2 78 / 88 0.78 / 1.21 −22.4% / +16.2% −32.5% / +3.7% 30.4 / 16.2 20.3rd / 87.3rd
    R5 BNB W1 / W2 130 / 37 1.25 / 1.06 +23.9% / +1.4% +16.9% / −3.3% 15.3 / 5.5 96.5th / 69th

    The control — the RSI turn and the trail with no gate — loses in all six cells, with 34–93 points of drawdown. That is what a positioning gate has to rescue; O1 and O2 trade less of it without rescuing it.

    The reference row is the one to read twice. Entry #5's committed config, unchanged, on perpetual candles: its first window clears every gate, the null included (97.5th). Its second — May 2024 to Oct 2026 — makes +0.9% on 46 trades, fails strip-best (−4.5%) and sits at the 74.8th percentile of random entry. Entry #5's page already said "the most recent ~24 months inside W2 were roughly flat"; this measures that stretch against the full bar, and it does not clear it. These are not the windows or the candles entry #5 was validated on, so this does not undo that validation — but it is the most recent evidence there is, and the entry now carries it. Nothing has been delisted; whether its status changes is a separate decision, the same one sweep #11 left open for entries #3 and #4.

    Verdicts

    # Hypothesis Verdict
    O1 Deleveraging exhaustion Killed — the windows disagree: −21.6% / −26.0% on BTC / ETH in 2022–24 (2nd–4th percentile of random entry), +14.3% / +10.7% in 2024–26; BNB the other way round
    O2 Short build-up squeeze Killed — negative in five of six cells; null 4.8th–68.3rd percentile
    O3 Crowd short Killed on sample — eleven trades across six cells

    Structural conclusion — the first "would reopen it" item is tested, and reopens nothing

    Historical open interest was first on the low-timeframe page's list of what would genuinely reopen sub-daily crypto. It turned out to be free, clean and five years deep, and through the library's house trigger it carries no 1h edge: the one gate with any signal has a regime's sign, not an edge's. That is what sweep #4 said of every 1h edge that does not read funding — bound to the era it was born in — now shown on a positioning channel, so the line "internals beat price shape" needs a qualifier at 1h: funding does; open interest and headcount, read this way, do not.

    The boundary of the result, stated plainly: three gates on one trigger and one exit, at one timeframe. Open interest could still matter through a different trigger, a different exit or a higher timeframe. This sweep answered the narrow question it registered and does not license "open interest is useless." What remains on the list is liquidation history (not in the archive) and order-book depth (archived from Jan 2023 — two honest windows around 2028).

    And the one sub-daily strategy the library carries is flat over the same window — though not evenly: it lost through mid-2025 and has made +8.5% over the last twelve months (33 trades, 93.8th percentile of random entry), which says its edge comes and goes with the regime rather than that it is gone. The half-year timeline is on its page.


    Sweep 2026-10-08 (#13) — the Tokyo fix: a structural flow, tested at five minutes

    Pre-registered on 2026-10-08 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Does the USD/JPY "gotobi" effect — Japanese corporate dollar settlement at the 09:55 Tokyo fixing on five-and-ten days — clear all six gates as a five-minute strategy?

    Why this is a different kind of hypothesis. Every sub-daily idea in twelve sweeps read the market's own state: price shape, volume, session structure, funding, open interest. Sweep #12 has just shown that even a positioning signal, read at 1h, takes the sign of whatever regime it lands in. This one reads a calendar of real cash flows instead. Japanese companies settle invoices on gotobi — the 5th, 10th, 15th, 20th, 25th and 30th of the month. Importers buy the dollars they owe at the TTM rate their bank fixes at 09:55 Tokyo time, and the banks buy those dollars in the interbank market ahead of the fix. Ito & Yamada (Journal of International Economics, 2017) document that the client flow at the Tokyo fixing is one-sided and predictable; Bessho, Sugimoto & Suzuki (arXiv 2301.13204, 2023) trade the gotobi version of it, reporting a profit factor of 1.46 after spreads for a long from 03:00 to 09:55 on gotobi days in 2018–2020, against 0.51 on matched ordinary days. The flow exists because of a business custom, not a market regime — that is the claim under test. The gotobi paper pools its three years and reports no year-by-year breakdown, so whether the effect survived its own popularity is an open question: this sweep's first window lies entirely before that sample, and most of its second lies after it. It is also the library's first forex test, in a market the app already backtests and plans.

    What this sweep deliberately does NOT do. No parameter is chosen here. The days are the custom's, the 09:55 fix is the banks', and the 03:00 entry and 12:00 exit are the paper's, frozen. The paper's day definition is kept as written: the 30th rather than the month's last business day (so February has no month-end gotobi), rolled back to the previous business day over weekends and holidays, Tuesday to Friday only — a 03:00 Tokyo entry on a Monday falls before the FX week opens. The paper's in-sample refinements — a moving-average filter on the entry, a "the morning was profitable" filter on the reversal — are not used.

    Protocol.

    • Engine: the app's own (runBuilderBacktest); harness committed at scripts/research/sweep13-tokyo-fix.ts. Data from Dukascopy's free historical feed through the dukascopy-node package the app already uses, and the Cabinet Office's official holiday list; cached; no keys.
    • Data: 5-minute bid candles, Dec 2009 → Sep 2026, for USDJPY (primary — the flow is denominated in dollars) and EURJPY and AUDJPY (breadth: a yen-selling flow should reach the crosses too, more weakly).
    • Calendar: Japan's national holidays (substitute holidays included) plus the bank holidays of 31 Dec and 2–3 Jan.
    • Costs: 0.006%/side — about half a pip per side at the bottom of the windows' USD/JPY range and one pip at the top, a retail-spread assumption on a bid-only series — stressed at 0.012%/side. The crosses' retail spreads run roughly double USD/JPY's, so a cross counts toward breadth only if it also passes at the stress cost. Rollover is not modelled: G1 holds through the daily 17:00 New York roll, which for a long USD/JPY was roughly zero before 2016 and a credit through most of W2, so leaving it out is conservative for G1; G2 holds through no roll.
    • Windows: W1 Jan 2010 → Jan 2018 (entirely before the paper's sample) and W2 Jan 2018 → Oct 2026, the latter also reported split at the paper's sample — 2018–20, and 2021 onward — informationally.
    • Gates per pair, unchanged: net positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20. Sixth gate: at or above the 95th percentile, in both windows, of a 400-draw null that keeps the clock times, the exit and the costs and replaces the gotobi days with the same number of random eligible days (Tuesday–Friday business days, gotobi or not). For a calendar strategy that is the null that asks the right question: did the day matter?

    Hypotheses (specs fixed before the run)

    # Hypothesis Spec Stated prior
    G1 Into the fix — the banks' dollar buying lifts USD/JPY into 09:55 Long on the 5-minute bar closing at 03:00 Tokyo; exit on the bar closing at 09:55; gotobi days Moderate. The mechanism is structural and the 2018–20 result is strong. The risk is decay: a publicised calendar trade gets front-run until it is gone, and nothing published says whether this one lasted
    G2 Out of the fix — the fix is set above the market, and the rate gives it back Short on the bar closing at 09:55; exit on the bar closing at 12:00; gotobi days Low–moderate. Ito & Yamada find the banks' fixed rate sits above traded prices, but the paper's reversal result leans on an in-sample filter that is dropped here

    Informational, never shipped — C1, the control: G1's clock window on every eligible day. How much of G1 is just the time of day.

    Phases.

    1. Primaries: G1, G2, C1 — W1, W2, and W2's two halves.
    2. Null: every G-cell.
    3. Robustness — only for a full passer: fee stress at 0.012%/side, and both fills five minutes late (03:05 in, 10:00 out for G1) — what someone acting on an alert rather than a resting order gets. The app delivers this as an alert, so a passer must stay positive and strip-best-positive in both windows on USDJPY with late fills, or it is killed as execution-fragile.
    4. Neighbors — only if G1 shows genuine signal on USDJPY: entries at 01:00 and 05:00 Tokyo. A plateau check; a knife-edge kills the family.

    Decision rule, written down first.

    • A hypothesis that clears all six gates on USDJPY and survives the late fills ships as entry #7 — on USDJPY plus every cross that also passes at the stress cost, or on USDJPY alone under the README's narrow-clearer rule, because the mechanism names the pair. It ships once a pure gotobi calendar atom exists in the strategy language (computed from the bar's time and the holiday list, so live equals backtest by construction) and an atom-based backtest reproduces this harness trade for trade.
    • If G1 and G2 both pass, the entry ships G1 — the leg the mechanism predicts directly — and documents G2 beside it.
    • A cross that passes without USDJPY is reported as a curiosity: the mechanism predicts the opposite ordering.
    • Anything else is a kill, published here.

    Amendment before the run (2026-10-09) — the data source

    Dukascopy's free feed began refusing the download after 106 of the roughly 600 pair-months — first with HTTP 429, then with an empty HTTP 202 on every request — and was still refusing it more than a day later. No hypothesis had been run on any of the data. The sweep changes its data source and nothing else:

    • From January 2012: FXCM's public M1 candle archive — bid side, UTC, aggregated to five minutes by the harness. The archive starts in 2012, so the months before it stay Dukascopy's: fetched through December 2011 for USDJPY and AUDJPY before the block, but only through March 2010 for EURJPY. EURJPY's first window therefore runs Jan 2012 → Jan 2018, six years instead of eight. USDJPY, the pair the decision rule turns on, keeps both windows as registered.

    • The check. Every Dukascopy month fetched from 2012 on, bar for bar against FXCM's, weekdays only (Dukascopy also prints weekend bars; FXCM does not):

      Pair Months Bars matched Close difference, median · p90 · p99 Signed (FXCM − Dukascopy) At the strategy's clock bars, median · p90
      USDJPY 37 (Jan 2012 → Jan 2015) 137,794 of 139,752 0.1 · 0.4 · 0.9 pip +0.1 pip 0.2 · 0.6 pip
      AUDJPY 15 (Jan 2012 → Mar 2013) 55,827 of 56,484 0.4 · 0.8 · 1.5 pip +0.4 pip 0.4 · 1.0 pip

      The same prices, with no time offset: USDJPY's feeds differ by a tenth of a pip, and AUDJPY's sit about 0.4 pip apart, a level shift that a close-to-close trade inside one feed never sees. The switch was decided on this agreement alone, before any hypothesis ran on either feed.

    • FXCM's archive has holes — fourteen weeks from late April to late July 2026, a few weeks in 2024–25, and no quotes at 03:00 Tokyo on some holidays (Christmas Eve's early close, 4 July 2023). 27 of the 1,028 gotobi days from 2010 have no entry bar, the same count on all three pairs: 2 in W1, 25 in W2 (16 of them in May–August 2026). Those days drop out of the strategy, and the null now drops them from its pool of random days as well, so both sides lose the same calendar.

    • Rejected: HistData's free archive, the other long free source. In the 2014 data checked, its timestamps move with US daylight saving, though its FAQ says they do not, and through most of that year its prices sat 0.7–0.8 pip from Dukascopy's even with the clocks aligned.

    • Unchanged: the hypotheses, the clock times, the costs, the gates, the null's draws and the decision rule. The harness changes — the loader, EURJPY's window start and the null's pool — are committed with this note (FXCM_FROM, PAIR_DATA_FROM and pairWindow in scripts/research/sweep13-tokyo-fix.ts; --phase vendorcheck prints the table above).

    Results — G1 clears all six gates on all three pairs and ships; G2 dies at the null

    The first sub-daily hypothesis in thirteen sweeps to clear the whole bar. G1 passes gates 1–5 on USDJPY, EURJPY and AUDJPY in both windows, sits at the 98th–100th percentile of its null in all six cells, survives fills five minutes late on every pair, and its neighbors pass. Under the pre-registered rule it ships on USDJPY + EURJPY; AUDJPY passes everything except the stress cost, so it does not count. G2 passes gates 1–5 on USDJPY alone and dies at the null.

    G1 — into the fix: long 03:00 → 09:55 Tokyo on gotobi days

    Cell Trades Win % PF Return Net pips / trade Strip-best Sum DD (acct) Null pct
    USDJPY W1 (2010–17) 490 65.1 2.74 +41.7% 8.1 +38.8% 1.1 (0.8) 100th ✅
    USDJPY W2 (2018 → Sep 2026) 511 61.3 1.36 +11.1% 2.5 +10.1% 3.6 (3.2) 100th ✅
    USDJPY 2018–20 (info) 183 65.0 1.81 +7.2% 4.3 +6.1% 1.4 —
    USDJPY 2021 → Sep 2026 (info) 328 59.1 1.18 +4.0% 1.5 +3.3% 3.6 —
    EURJPY W1 (2012–17) 367 62.1 1.97 +19.7% 6.6 +18.7% 1.2 (1.0) 100th ✅
    EURJPY W2 511 61.6 1.61 +16.3% 4.4 +14.8% 1.7 (1.5) 100th ✅
    EURJPY 2018–20 / 2021→ (info) 183 / 328 69.4 / 57.3 2.03 / 1.43 +8.4% / +7.9% 5.7 / 3.7 +7.5% / +6.4% 1.0 / 1.7 —
    AUDJPY W1 490 55.3 1.50 +25.0% 4.3 +21.3% 3.3 (3.2) 100th ✅
    AUDJPY W2 511 54.0 1.15 +7.3% 1.3 +5.9% 3.9 (3.6) 98th ✅
    AUDJPY 2018–20 / 2021→ (info) 183 / 328 53.0 / 54.6 1.14 / 1.15 +2.7% / +4.6% 1.2 / 1.4 +1.6% / +3.2% 2.4 / 3.9 —

    Returns are the sum of per-trade returns, unlevered, at 0.006%/side. The null medians make the case on their own: random eligible days through the same clock window return +14.2% on USDJPY in W1 and −1.0% in W2 (95th percentiles +21.7% and +5.0%) — gotobi days return +41.7% and +11.1%. Trade counts are gotobi days minus the 2 + 25 the data has no entry bar for (the amendment above); 2 trades in W1 and 4 in W2 were held past 09:55 because the exit bar is missing. A recomputation straight from the bars, with no engine and those days left out, gives USDJPY 488 trades / +41.5% / PF 2.74 in W1 and 507 / +10.3% / PF 1.33 in W2.

    The control says the day is what matters. C1 — the same window on every eligible day:

    Cell Trades PF Return Net pips / trade Strip-best Sum DD
    USDJPY W1 / W2 1,593 / 1,650 1.40 / 0.97 +46.3% / −4.4% 2.6 / −0.5 +43.4% / −5.5% 6.2 / 16.8
    EURJPY W1 / W2 1,195 / 1,650 1.31 / 1.12 +25.7% / +12.7% 2.8 / 1.0 +24.4% / +11.2% 4.8 / 6.2
    AUDJPY W1 / W2 1,593 / 1,650 1.05 / 0.91 +9.9% / −15.6% 0.6 / −0.8 +6.2% / −17.0% 14.1 / 21.1

    In 2010–17 the Tokyo morning itself paid — the yen weakened into the fix on ordinary days too — but gotobi days carried three times the move (8.1 net pips against 2.6). From 2018 the ordinary-day drift is gone on USDJPY (−4.4%) and the gotobi days alone still pay (+11.1%).

    Robustness (pre-registered for a full passer):

    Cell At 0.012%/side: return · PF · strip-best Both fills 5 min late: return · PF · strip-best
    USDJPY W1 +35.8% · 2.38 · +33.0% ✅ +33.1% · 2.25 · +30.3% ✅
    USDJPY W2 +5.0% · 1.15 · +4.0% ✅ +2.7% · 1.08 · +1.4% ✅
    EURJPY W1 +15.3% · 1.70 · +14.4% ✅ +14.3% · 1.62 · +13.4% ✅
    EURJPY W2 +10.2% · 1.35 · +8.7% ✅ +10.6% · 1.36 · +9.0% ✅
    AUDJPY W1 +19.1% · 1.36 · +15.4% ✅ +15.8% · 1.30 · +12.2% ✅
    AUDJPY W2 +1.2% · 1.02 · −0.2% ❌ +2.5% · 1.05 · +1.1% ✅

    USDJPY stays positive and strip-best-positive with both fills late, so G1 is not killed as execution-fragile — but on USDJPY in W2 the late fills leave a quarter of a pip a trade (0.25, against 2.5 on time). This trade wants an order working at the fix, or a fill within the minute — not an alert acted on at leisure. AUDJPY fails strip-best at the stress cost in W2, so by the registered rule it does not count toward breadth.

    Neighbors — a plateau, not a knife-edge:

    Entry (Tokyo) USDJPY W1 / W2 EURJPY W1 / W2 AUDJPY W1 / W2
    01:00 +46.4% / +17.1% (PF 2.36 / 1.52) +31.3% / +24.0% (2.22 / 1.75) +30.8% / +15.0% (1.52 / 1.28)
    03:00 (registered) +41.7% / +11.1% (2.74 / 1.36) +19.7% / +16.3% (1.97 / 1.61) +25.0% / +7.3% (1.50 / 1.15)
    05:00 +30.1% / +3.5% (2.40 / 1.13) +10.7% / +10.0% (1.56 / 1.44) +16.0% / +0.8% (1.39 / 1.02)

    All eighteen cells pass gates 1–5. The earlier entry does better; the neighbor check exists to catch a knife-edge, not to pick a winner, so the entry stays at the paper's 03:00.

    Year by year — G1 at the registered spec, sum of trade returns (%) by calendar year of entry:

    2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026*
    USDJPY +5.5 +8.8 +3.9 +9.3 +3.2 +2.5 +5.4 +3.2 +3.5 +1.6 +2.1 +2.3 +3.0 −1.1 −0.7 −0.4 +0.9
    EURJPY — — +4.0 +6.6 +1.3 +1.4 +2.9 +3.5 +2.8 +2.7 +2.9 +2.0 +2.7 −0.2 −0.3 +2.5 +1.2
    AUDJPY +1.3 +9.6 +2.8 +2.6 −2.3 +6.8 +1.5 +2.7 +2.8 +1.1 −1.2 +1.5 +2.1 −0.8 −1.8 +1.4 +2.2

    *2026 runs to September, with the May–August data hole. The last twelve months (Oct 2025 → Sep 2026, 46 trades each): USDJPY +1.8% (PF 1.85), EURJPY +2.2% (PF 3.18), AUDJPY +3.5% (PF 2.84).

    USDJPY made money in every one of the thirteen years to 2022, then lost a little in each of 2023, 2024 and 2025 — the three years after the gotobi paper appeared (January 2023). That is the decay the prior named. It is not a collapse: the losses are 0.4–1.1% a year, EURJPY lost only in 2023–24, and all three pairs have been positive over the last twelve months. But it is the most important fact in this section, and the entry carries it.

    G2 — out of the fix: passes gates 1–5 on USDJPY, then loses to random days

    Cell Trades PF Return Strip-best Sum DD Null pct Verdict
    USDJPY W1 488 1.48 +11.8% +7.9% 2.3 79th gates 1–5 ✅, null ❌
    USDJPY W2 507 1.14 +3.3% +2.7% 2.4 98.5th ✅
    EURJPY W1 / W2 365 / 507 1.16 / 0.99 +3.5% / −0.3% −2.7% / −1.0% 4.1 / 4.7 83rd / 94.3rd ❌ strip-best; W2 return
    AUDJPY W1 / W2 488 / 507 1.21 / 0.96 +10.3% / −1.6% +3.3% / −4.8% 5.6 / 5.3 77.3rd / 89.5th ❌ W2 return, strip-best

    Shorting from the fix to noon made money on USDJPY in both windows, but in 2010–17 it made nearly as much on ordinary days: the null's median there is +8.5% against the real +11.8%. The give-back after the fix is a feature of the Tokyo morning, not of gotobi days.

    Verdicts

    # Hypothesis Verdict
    G1 Into the fix Passes — entry #7, on USDJPY + EURJPY. All six gates on all three pairs; 100th percentile of its null on USDJPY in both windows; survives late fills; neighbors pass. AUDJPY fails strip-best at the stress cost and is left out. Ships once the gotobi calendar atom exists and an atom-based backtest reproduces this harness trade for trade
    G2 Out of the fix Killed — USDJPY W1 at the 79th percentile of random days; fails gates 1–5 on both crosses

    Structural conclusion — a calendar of cash flows clears the bar that market states could not

    Twelve sweeps of sub-daily hypotheses read the market's own state — price shape, volume, sessions, funding, open interest — and the best of them, entry #5, clears the bar in one window and not the next. The first to clear it in both reads none of that. It reads who must buy dollars, and when: a business custom, known in advance from the calendar. That is the sense in which "internals beat price shape" generalises — not to more indicators, but to flows with a cause outside the chart.

    The edge is real and it is small. Net of the registered cost (0.006% a side, half a pip to a pip) it is about 2.5 pips a trade on USDJPY over 2018–26, 1.5 since 2021, and a quarter of a pip if both fills come five minutes late. It lost a little on USDJPY in each of the three years after it was published. Two things would end it: slow execution, and the decay resuming. The entry page has to say both.

    Shipped (2026-10-09)

    G1 ships as entry #7 on USDJPY and EURJPY, as a paper-trade candidate. The registered ship condition is met: the strategy language gained a gotobi_day atom (shared/jp-calendar.ts, the harness's calendar rules with the Cabinet Office holiday list embedded through 2027), and a backtest of the entry's plain config reproduces the harness trade for trade — identical entries, exits and returns on all three pairs in both windows, and the two calendars agree on all 1,034 gotobi trade days (scripts/research/sweep13-parity.ts). G2's kill is in the coach's kill log, where the new atom makes it recognisable.


    Sweep 2026-10-11 (#14) — RSI on crypto at 1h and 4h: the combinations no sweep has run

    Pre-registered on 2026-10-11 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Is there a crypto strategy built on RSI, at 1h or 4h, that clears all six gates — beyond the funding squeeze, which already is one?

    What the log already knows. RSI is not new here. Entries #1 (4h) and #5 (1h) are RSI strategies: RSI(14) crossing back above 30 while perp funding is negative. The same turn without the funding gate loses in all six 1h cells (sweep #12's control). Connors' RSI(2) dip-buy on crypto 1h was gross-positive but regime-fragile — its first window paid at maker fills, its second flipped (sweeps #1 and #4). An RSI(14) pullback above the 200-day average on crypto 1d window-flipped (sweep #3). The funding squeeze itself is dead at 15m (sweep #7, costs) and at 1d (sweep #10, sample).

    What has never been run, and why each is a legitimate revisit.

    • A gate built from aggressor flow. Every Binance perpetual kline, back to the contract's launch, records how much of its volume was bought by takers — the side that crossed the spread. That is order flow, the first item on the low-timeframe page's list of what would reopen the question, and no sweep has read it: sweep #12 read open interest (positions) and account ratios (headcount), sweep #6 read raw volume. The mechanism: a day of one-sided aggressive selling that RSI then sees turn is sellers exhausting themselves against passive buyers — the exhaustion the funding gate catches from the positioning side, read from the trades instead.
    • The classic RSI setups at 4h. Neither Connors' RSI(2) dip-buy nor the oversold turn inside an uptrend has been run on the 4h bar. The rung is a cost argument stated in advance: a 4h bar's typical move is about twice a 1h bar's against the same 0.1% round trip, so a gross edge that the 1h cost line ate could clear it here. The counter-prior is sweep #4's: the 1h reversion was bound to the era it was born in, and a longer bar does not change an era.
    • Not tested: 15m (sweep #7 measured it cost-dead even for the funding squeeze), shorts (dead in every sweep that tried them), and any second condition stacked onto entry #1 or #5.

    Protocol.

    • Engine: the app's own (runBuilderBacktest); harness committed at scripts/research/sweep14-rsi-crypto.ts (public Binance data, cached, no keys).
    • Prices: Binance USDT-M perpetual klines for BTC, ETH and BNB, at 1h and 4h — as in sweep #12, the instrument traded is the instrument priced.
    • Costs: 0.05%/side futures taker plus real funding at every 8h settlement held through; stress at 0.1%/side.
    • Windows: W1 Apr 2020 → Apr 2023 (the 2021 bull market, LUNA, FTX) and W2 Apr 2023 → Oct 2026 (the recovery, the spot-ETF era). BNB's perpetual launched in February 2020, which sets the start. The last twelve months (Oct 2025 → Sep 2026) are read off W2's trades, informationally.
    • Gates per asset, unchanged: net positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20. Cross-asset: ≥ 2 of BTC/ETH/BNB. Sixth gate: at or above the 95th percentile of a 400-draw random-entry null in both windows on every passing asset, with real funding charged on both sides (sweep #12's procedure).

    The data, defined before the run.

    • Taker-buy share = Σ taker-buy base volume ÷ Σ volume over the trailing 24 hours ending at the bar close (24 bars at 1h, 6 at 4h). 0.5 means buyers and sellers crossed the spread equally; below it, sellers were the aggressors.
    • Percentiles are trailing 28 days, current bar included, defined once 90% of the window's readings exist, in deciles — sweep #12's conventions, kept so the two order-flow sweeps can be read side by side.
    • Data checks, done before the run (coverage only — no strategy was evaluated): contiguous perpetual bars from each launch to 30 Sep 2026 (61,903 / 59,993 / 58,192 hourly bars for BTC / ETH / BNB, no gaps at either timeframe); every funding settlement on the 8h UTC grid the engine bills; the flow gate defined on 100% of both windows' bars on every asset. The 24h taker-buy share averages 0.488–0.497.

    Hypotheses (specs fixed before the run)

    # Hypothesis Spec Stated prior
    K1 Taker-selling exhaustion, 1h — a day of aggressive selling that RSI sees turn 24h taker-buy share ≤ its 28-day 10th percentile AND RSI(14) crosses above 30; 2×ATR(14) trailing stop Low–moderate. A new channel on the house trigger and exit. Against it: sweep #6 found crypto's 1h volume flushes to be continuation, not exhaustion, and sweep #12's deleveraging gate took the sign of its regime. If K works only where funding is already negative it adds nothing, so the overlap is reported
    K4 The same at 4h identical on 4h bars; the 24h and 28-day spans do not change Low–moderate, the likelier rung: 4h is where the funding squeeze is strongest (entry #1), and the slower bar halves the cost drag
    D4 Connors' RSI(2) dip-buy, 4h RSI(2) < 10 AND close > SMA(200); exit on a close above SMA(5); no stop — entry #2's committed config verbatim Low. The 1h version was gross-positive and regime-fragile; the cost argument above is the only new thing
    U4 The oversold turn inside an uptrend, 4h — the most common retail RSI setup close > SMA(200) AND RSI(14) crosses above 30; 2×ATR(14) trailing stop Low. Sweep #3's daily version window-flipped, and the turn alone loses at 1h

    Informational rows — never shipped: C1 and C4, the RSI(14) turn and the trail with no gate at 1h and 4h — the baseline every gate has to beat; R1 and R5, entries #1 (4h) and #5 (1h) with their committed configs on these windows and perpetual candles — the incumbents a new RSI entry has to be worth more than. R1 runs at its committed 0.1%/side, everything else at 0.05%.

    Phases.

    1. Primaries: K1, K4, D4, U4, C1, C4, R1, R5 — both windows, three assets. For each, the last twelve months informationally; for K, the share of its trades entered while funding was negative.
    2. Null: every K, D4 and U4 cell, reported in full.
    3. Robustness — only for a full passer (all six gates on ≥ 2 assets): 0.1%/side fee stress, reported (a stress failure ships as a fee guardrail, entry #5's precedent), and for K the flow reading one bar late. A K passer must stay positive and strip-best-positive in both windows on its passing assets with the lag, or it is killed as latency-fragile.
    4. Neighbors — only for a family with genuine signal (positive and strip-best-positive in both windows on ≥ 2 assets, drawdown ignored): K at the 5th and 20th percentiles, D4 at RSI(2) < 5 and < 15, U4 crossing 25 and 35. A plateau check, never a winner-picker; a knife-edge kills the family whatever its primary said.

    Decision rule, written down first.

    • A full passer that survives its robustness and neighbor checks ships as entry #8. D4 and U4 are plain strategy-language configs and ship as they are. K needs a taker-flow atom, a live feed of the taker-buy share, and an atom-based backtest that reproduces this harness trade for trade before it ships.
    • If more than one passes, the one with the higher W2 null percentile ships and the others are documented beside it.
    • Anything else is a kill, published here.

    Results — all four killed, and entry #1's first run through 2022 loses on BTC

    No hypothesis clears gates 1–5 on two assets, so neither the robustness nor the neighbor phase ran. The run's most consequential row is not a hypothesis at all: the reference run of entry #1, the first ever across 2020–22, loses on BTC.

    K1 / K4 — taker-selling exhaustion: no signal at 1h, one asset at 4h

    Cell Trades PF Return Strip-best Sum DD Null pct Verdict
    K1 BTC W1 / W2 119 / 156 0.66 / 0.82 −34.0% / −16.6% −41.0% / −21.7% 43.6 / 25.3 12.8th / 46.3rd ❌
    K1 ETH W1 / W2 132 / 152 0.64 / 0.68 −55.0% / −40.5% −72.4% / −48.2% 60.7 / 48.6 5.5th / 10th ❌
    K1 BNB W1 / W2 103 / 112 1.27 / 0.97 +25.0% / −2.2% +10.1% / −11.7% 18.3 / 24.9 78.8th / 64th ❌ W2
    K4 BTC W1 / W2 15 / 31 0.81 / 0.93 −5.5% / −2.2% −21.2% / −8.4% 20.7 / 11.5 37.3rd / 45th ❌
    K4 ETH W1 / W2 12 / 23 1.70 / 0.21 +15.7% / −33.7% −14.8% / −39.5% 7.9 / 33.7 76th / 1.5th ❌
    K4 BNB W1 / W2 18 / 24 2.11 / 5.02 +26.2% / +50.7% +8.0% / +33.1% 8.6 / 4.3 80.3rd / 100th gates 1–5 ✅, null ❌ W1

    At 1h a day of aggressive selling followed by RSI's turn lost on BTC and ETH in both windows, and on ETH by more than random entry would have (5.5th and 10th percentiles). At 4h it passes gates 1–5 on BNB alone — +26.2% and +50.7% on 18 and 24 trades — and beats random entry there in 2023–26 but not in 2020–23 (80.3rd), so it is not even a single-asset pass. It is not the funding signal in another coat — 22% of K1's trades and 24% of K4's were entered while funding was negative — but it is not an edge either. The order-flow item on the low-timeframe page's list, read from the trades rather than the positions, reopens nothing.

    D4 — Connors' RSI(2) dip-buy at 4h: the longer bar didn't save it

    Cell Trades PF Return Strip-best Sum DD Null pct Verdict
    BTC W1 / W2 130 / 176 0.80 / 0.93 −28.9% / −6.9% −35.9% / −15.3% 58.6 / 24.2 15.5th / 54.8th ❌
    ETH W1 / W2 160 / 174 1.12 / 0.90 +23.1% / −14.4% +13.8% / −26.5% 33.8 / 37.3 77.8th / 46.5th ❌
    BNB W1 / W2 150 / 164 1.43 / 0.90 +57.7% / −11.4% +45.4% / −20.4% 33.2 / 45.4 91st / 49.3rd ❌

    Positive in 2020–23 on ETH and BNB, with 33-point drawdowns; negative on all three in 2023–26. The same shape sweep #4 found at 1h — the reversion belongs to the 2020–22 era — on a bar four times longer. Win rates of 59–71% beside profit factors under 1 in four of six cells are the signature of a no-stop dip-buy on an asset that sometimes does not bounce.

    U4 — the oversold turn inside an uptrend: too rare to judge

    8 to 15 trades a cell. It passes gates 1–5 in two of six (ETH and BNB in 2020–23), loses on BTC in 2023–26 and on ETH, and nowhere clears the null (30.5th–94.3rd). Above a 200-bar average, RSI(14) on a 4h crypto chart rarely gets below 30.

    The controls and the incumbents

    Cell Trades PF Return Strip-best Sum DD
    C1 (RSI turn alone, 1h) BTC / ETH / BNB, W1 298 / 319 / 301 0.70 / 0.82 / 1.07 −93.2% / −72.9% / +24.8% all ≤ 0 100 / 94.9 / 51.4
    C1 BTC / ETH / BNB, W2 375 / 366 / 348 0.82 / 0.80 / 0.72 −41.8% / −64.1% / −73.3% all ≤ 0 46.5 / 67.4 / 77.7
    C4 (RSI turn alone, 4h) BTC / ETH / BNB, W1 80 / 74 / 70 0.83 / 0.96 / 1.33 −28.9% / −7.6% / +47.6% −51.5% / −38.1% / +25.9% 88.8 / 46.8 / 33.1
    C4 BTC / ETH / BNB, W2 84 / 91 / 75 1.12 / 0.82 / 1.57 +11.3% / −28.7% / +45.1% +0.0% / −57.1% / +27.5% 13.5 / 39.8 / 13.8
    R1 (entry #1, 4h) BTC W1 / W2 27 / 14 0.69 / 2.55 −17.5% / +14.4% −41.9% / +8.5% 45.1 / 5.5
    R1 ETH W1 / W2 26 / 26 1.30 / 0.85 +21.1% / −7.1% −9.3% / −18.0% 34.7 / 24.1
    R1 BNB W1 / W2 36 / 19 2.07 / 1.54 +57.7% / +9.3% +37.9% / +4.2% 20.1 / 7.3
    R5 (entry #5, 1h) BTC W1 / W2 58 / 52 1.37 / 1.02 +17.6% / +0.7% +10.5% / −4.8% 15.2 / 11.6

    The turn alone at 1h loses in five of six cells, over a longer span than sweep #12's — the control result stands. At 4h it is mixed rather than dead, and on BNB the turn alone makes about as much as K4 and R1 do there (+47.6% and +45.1%): BNB's 4h results owe more to BNB than to either gate.

    Entry #1's reference row needs reading twice. Its committed config — funding_rate < 0 AND RSI(14)'s turn, 2×ATR trail, at its own 0.1%/side — on perpetual candles: BTC lost 17.5% in Apr 2020 → Apr 2023, with a 45-point drawdown, and made +14.4% at PF 2.55 since. The loss is 2022's: −30.6% on 15 trades in the first half and −11.3% on 8 in the second, through LUNA and FTX, when funding went negative over and over in a market that kept falling. Entry #1's validation windows start in mid-2022 on spot candles, so this is the first run of it across the 2020–22 cycle, and on BTC it fails the bar there. BNB, its second instrument, passes both windows on return and strip-best and misses the drawdown bar by a tenth of a point in 2020–23. Nothing is delisted; the entry now carries the result, and whether its status changes is the same decision sweep #12 left open for entry #5.

    Verdicts

    # Hypothesis Verdict
    K1 Taker-selling exhaustion, 1h Killed — negative on BTC and ETH in both windows, 5.5th–46.3rd percentile of random entry; BNB flips
    K4 Taker-selling exhaustion, 4h Killed — passes gates 1–5 on BNB only, and its null only in 2023–26 (80.3rd in 2020–23)
    D4 RSI(2) dip-buy, 4h Killed — negative on all three assets in 2023–26; 33–59-point drawdowns in 2020–23
    U4 Oversold turn in an uptrend, 4h Killed — 8–15 trades a cell, no asset passes, nothing clears the null

    Structural conclusion — on crypto, RSI is timing, not the edge

    In every sweep that has tested it, RSI on crypto has cleared the bar only with negative funding behind it. Alone it loses at 1h and is a coin flip at 4h; behind a day of aggressive selling it loses at 1h, and at 4h passes on one asset without beating random entry in both windows; inside an uptrend it barely fires; as a short-period dip-buy it is a 2020–22 artefact at 1h and 4h alike. Where RSI has worked, the edge came from the positioning gate and RSI only timed the entry.

    And this sweep found the limit of the gate itself: through the 2022 bear market, entry #1's oversold turn with crowded shorts behind it lost on BTC, with a 45-point drawdown against the 5–12% its page reports. Crowded shorts are a squeeze signal in a market that has stopped falling and a falling knife in one that has not — which would be the regime-dependence sweep #12 found in entry #5's 1h form, now seen in the 4h original. (One reading, not a finding.)


    Sweep 2026-10-11 (#15) — RSI on crypto: the last free channels

    Pre-registered on 2026-10-11 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. With RSI's turn as the timing and a positioning or fear reading as the gate — the shape of the only crypto entries that have ever cleared the bar — does any of the free channels no sweep has read produce a 1h or 4h strategy that clears all six gates?

    Why this sweep, and why it is the last of its kind. Sweep #14 ended on one conclusion: on crypto, RSI is timing and the edge comes from the gate behind it. Every gate the log has tried is now accounted for — funding (works: entries #1 and #5, regime-dependent), open interest and account ratios (sweep #12, killed), aggressor flow (sweep #14, killed). Three free channels remain, and this sweep reads all three, once:

    • The perp's discount to spot. Binance publishes the premium index — the perpetual's price against its spot index — hour by hour since launch. Funding is an eight-hour average of this premium, clamped near zero, so the premium is the same crowding read before the averaging. If it passes it competes with entry #5 rather than adding a mechanism, and the write-up will say so; the overlap with negative funding is reported.
    • Options panic. Deribit's DVOL — 30-day implied volatility of BTC and ETH options — hourly since March 2021. The equities version of the idea (sweep #11's term-structure capitulation) passed five gates and died at the null; this is the crypto options market's read of fear.
    • Whale shorts. Bitfinex's margin short positions in BTC and ETH, hourly since February 2021 — positioning by a different population from Binance's account ratios.

    Not tested: liquidation history (still not free), order-book depth (archived from 2023 only), and anything stacked onto entries #1 or #5. If all three die, the free-data list for this question is exhausted, and the log says so.

    Protocol.

    • Engine: the app's own (runBuilderBacktest); harness committed at scripts/research/sweep15-rsi-crypto-channels.ts (public Binance, Deribit and Bitfinex data, cached, no keys).
    • Prices: Binance USDT-M perpetual klines (sweep #14's cache). P1 on BTC, ETH and BNB; V4 and X4 on BTC and ETH, the two assets with DVOL and Bitfinex positions.
    • Costs: 0.05%/side futures taker plus real funding at every 8h settlement held through; stress at 0.1%/side.
    • Windows: W1 May 2021 → Feb 2024 (the 2021 top, the 2022 bear market, the 2023 recovery) and W2 Feb 2024 → Oct 2026 (the spot-ETF era) — DVOL begins in March 2021 and needs four weeks for its first percentile. The last twelve months are read off W2, informationally.
    • Gates per asset, unchanged: positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20. Cross-asset: ≥ 2 assets. Sixth gate: ≥ 95th percentile of a 400-draw random-entry null in both windows, real funding billed on both sides.

    The data, defined before the run.

    • Each hourly reading is treated as known at the end of its hour (the premium-index and DVOL candles' closes; Bitfinex's snapshots, conservatively, an hour after their stamp). A bar reads the latest reading known at its close; a reading more than an hour stale counts as missing and keeps the gate shut.
    • Percentiles: trailing 28 days, current bar included, defined at 90% coverage, deciles — the conventions of sweeps #12 and #14.
    • Data checks, done before the run (coverage only — no strategy was evaluated): premium index hourly from 1 Feb 2021 on all three assets with no gap; DVOL hourly from 24 Mar 2021 for BTC and ETH with no gap; Bitfinex shorts hourly from 22 Feb 2021 with five gaps, the longest eight hours; every gate defined on 100% of both windows' bars.

    Hypotheses (specs fixed before the run) — RSI(14) crosses above 30, 2×ATR(14) trail, in every one

    # Hypothesis Gate Stated prior
    P1 Perp discount, 1h — shorts are leaning on the perpetual right now Premium index ≤ its 28-day 10th percentile Moderate, because it is the mechanism that already works. The risk is redundancy: if it fires where funding is already negative, it is entry #5 with noise
    V4 Options panic, 4h — buy the turn when options price fear DVOL ≥ its 28-day 90th percentile Low–moderate. Fear spikes and oversold turns coincide in every crash; whether the options read adds anything to RSI's own is the question — the equities version died at the null
    X4 Whale shorts, 4h — Bitfinex's margin traders crowded short Bitfinex margin shorts ≥ their 28-day 90th percentile Low. Sweep #12's crowd-short gate died on sample (eleven trades); these positions move slowly and the intersection may be as rare

    Informational rows — never shipped: C1 and C4 (the turn alone, 1h and 4h); R5 and R1 (entries #5 and #1, committed configs). For each hypothesis, the share of its trades entered while funding was negative.

    Phases. 1. Primaries. 2. Null — every P1, V4 and X4 cell. 3. Robustness, only for a full passer (six gates on ≥ 2 assets): 0.1%/side fee stress, and the channel reading one bar late; a passer must stay positive and strip-best-positive in both windows on its passing assets with the lag, or it is killed as latency-fragile. 4. Neighbors, only for genuine signal on ≥ 2 assets: the 5th and 20th percentiles for P1, the 95th and 80th for V4 and X4 — a plateau check; a knife-edge kills the family.

    Decision rule, written down first. A full passer that survives robustness and neighbors ships as entry #8 once its channel exists as a strategy-language atom with a live feed and an atom-based backtest reproduces this harness trade for trade. If P1 passes and most of its trades come with negative funding, it ships as a variant documented beside entry #5, not as an entry of its own. Anything else is a kill, published here.

    Results — all three killed; the free channels are spent

    No hypothesis clears gates 1–5 on any asset in both windows, so neither the robustness nor the neighbor phase ran.

    Cell Trades PF Return Strip-best Sum DD Null pct Verdict
    P1 BTC W1 / W2 70 / 59 0.67 / 0.78 −28.3% / −8.1% −37.9% / −13.7% 34.3 / 15.7 9.5th / 41.3rd ❌
    P1 ETH W1 / W2 84 / 61 0.56 / 0.69 −50.8% / −20.8% −60.9% / −29.6% 63.7 / 24.9 1.8th / 14th ❌
    P1 BNB W1 / W2 68 / 77 1.60 / 0.74 +49.1% / −16.9% +3.0% / −25.3% 23.1 / 22.4 98.5th / 20.5th ❌
    V4 BTC W1 / W2 23 / 13 1.22 / 3.41 +12.7% / +21.6% −11.8% / +9.7% 30.6 / 6.8 81.5th / 98th ❌ W1
    V4 ETH W1 / W2 19 / 16 1.14 / 1.37 +9.5% / +14.6% −13.4% / −13.8% 27.7 / 13.8 74.8th / 85.3rd ❌
    X4 BTC W1 / W2 36 / 24 1.13 / 2.42 +9.2% / +31.6% −13.4% / +20.4% 31.7 / 10.9 73.5th / 99.5th ❌ W1
    X4 ETH W1 / W2 32 / 29 0.98 / 0.47 −1.1% / −30.2% −16.8% / −37.0% 53.7 / 32.8 64th / 7.2nd ❌
    • P1 — the perp's discount — is worse than the funding signal it is built from. It loses on BTC and ETH in both windows, on ETH by more than random entry would have (1.8th and 14th percentiles). Most of its trades are not funding trades — 21% on BTC, 34% on ETH and 41% on BNB were entered with funding negative — and on BTC and BNB the extra entries are where the losses are: BTC's 102 trades without negative funding lost 35.8% while its 27 funding trades were flat, and BNB's funding trades made +37.2% against −5.0% for the rest. On ETH both kinds lost. The eight-hour averaging that turns the premium into funding looks like it is doing real work, filtering out discounts that do not last.
    • V4 — options panic — is the near miss. Positive in all four cells, and at the 98th percentile of random entry on BTC in 2024–26, but in three of the four one trade carries the result (strip-best negative), and 2021–24 draws down 28–31 points.
    • X4 — whale shorts — splits by asset. BTC in 2024–26 is strong (+31.6%, PF 2.42, 99.5th percentile); BTC in 2021–24 fails strip-best with a 32-point drawdown, and ETH loses in both windows.

    The pattern across the sweep is a single one. Every gated oversold turn on BTC that does well in 2024–26 — V4, X4, and entry #1's own reference row (+13.8%, PF 2.73) — fails in the window that contains 2022. The controls agree: the turn alone loses in five of six 1h cells (BNB's 2021–24 is +9.6% with a 51-point drawdown) and in three of four at 4h.

    Verdicts

    # Hypothesis Verdict
    P1 Perp discount, 1h Killed — negative on BTC and ETH in both windows; BNB flips
    V4 Options panic, 4h Killed — positive everywhere but carried by single trades; 28–31-point drawdowns in 2021–24
    X4 Whale shorts, 4h Killed — BTC passes only 2024–26; ETH negative in both windows

    Structural conclusion — the free channels are spent, and 2022 is the wall

    Sweeps #12, #14 and #15 have now put six free positioning and fear channels behind RSI's oversold turn on crypto — open interest, account ratios, aggressor flow, the perp's discount, options-implied volatility and Bitfinex's margin positions — and the only gate that has ever cleared the bar is the one the library started with: negative funding. We know of no other free channel with the history two windows need. What remains is paid data (liquidation history, deep order books) or a different question.

    The sharper finding is where they all fail. In window after window, long oversold-turn strategies on BTC hold up from 2023 on and break in 2022, whichever gate sits in front of the trigger: crowded shorts, panicking options, short-heavy whales. One reading: in a bear market an oversold turn is usually the pause before the next leg down, and no positioning read we can get for free tells the two apart. A strategy that could would have to know the regime — which is a different hypothesis, and not one to fit to the year that just broke these.


    Sweep 2026-10-12 (#16) — RSI back to 50 inside a higher-timeframe uptrend

    Pre-registered on 2026-10-12 and committed before the run (this section's git history is the timestamp; results are appended in a later commit).

    Question. Does the most common multi-timeframe RSI setup clear all six gates on crypto at 1h or 4h? The setup: while the higher timeframe is in an uptrend, buy when the lower timeframe's RSI(14) pulls back to its 50 midline.

    Why this is not a dead idea re-mined. Every RSI setup in this log buys a deep dip or an oversold turn on a single timeframe: RSI(2) under 10 above a 200-bar average (sweeps #1, #4 and #14), RSI(14) under 40 above the 200-day (sweep #3), RSI(14) crossing back above 30 above the 200-bar average at 4h (sweep #14's U4, which barely fired), and the funding-gated turn from 30 (entries #1 and #5). Those are reversal trades — they bet that a sell-off is over. This one is a continuation trade: RSI back at 50 is an ordinary pause in a trend, not a washout, and the trend is read on a higher timeframe than the entry. It bets that the trend resumes, and buys it at a discount. Two things make it worth one run:

    • Crypto's trend is the one price-shape effect this log keeps finding — and keeps killing on drawdown. Sweep #1's 4h Donchian breakout (3×ATR trail) was positive in all six cells and died only on 26–76-point drawdowns; sweep #9 found weekly momentum still there, with drawdowns that disqualify it. Both buy strength. A pullback entry buys the same trend lower — whether that trims the drawdown or only the winners is the question.
    • Sweep #15 ended on a pattern: every BTC oversold turn that works since 2023 breaks in 2022, and a strategy that survived would have to know the regime. A higher-timeframe uptrend is a regime read. The one used here is the stock pairing of the 20- and 50-period EMAs, fixed before any run — not fitted to the year that broke the others.

    The setup, defined before the run.

    • Uptrend: on the higher timeframe, EMA(20) above EMA(50), read from the last closed higher-timeframe bar — the engine's own multi-timeframe mapping, which never reads a forming bar. The higher timeframe is 4h for 1h entries and the UTC day for 4h entries.
    • The trigger, two readings:
      • The touch — the setup as it is usually stated: RSI(14) on the entry bar crosses below 50. Buy at that bar's close.
      • The turn back up — the usual refinement, waiting for the pullback to end: RSI(14) crosses back above 50.
    • Exit: the house 2×ATR(14) trailing stop on the entry timeframe, two ATRs under the highest price since entry — the exit of every RSI(14) hypothesis since sweep #12, so the results read beside theirs. No target, no time stop.
    • All of it is plain strategy language (a condition's timeframe field is already in the builder), so a passer ships as it is and its backtest is this harness.

    Protocol.

    • Engine: the app's own (runBuilderBacktest); harness committed at scripts/research/sweep16-rsi-midline-pullback.ts (public Binance data, cached, no keys).
    • Prices: Binance USDT-M perpetual klines for BTC, ETH and BNB at 1h and 4h — sweep #14's data.
    • Costs: 0.05%/side futures taker plus real funding at every 8h settlement held through; stress at 0.1%/side.
    • Windows: sweep #14's, so the two sweeps read side by side — W1 Apr 2020 → Apr 2023 (the 2021 bull market, LUNA, FTX) and W2 Apr 2023 → Oct 2026. The last twelve months are read off W2, informationally.
    • Gates per asset, unchanged: net positive in both windows, strip-best positive in both, sum-point max drawdown ≤ 20. Cross-asset: ≥ 2 of BTC/ETH/BNB. Sixth gate: at or above the 95th percentile of a 400-draw random-entry null in both windows on every passing asset, with real funding charged on both sides (sweep #12's procedure).
    • Data checks, done before the run (coverage only — no strategy was evaluated): the same contiguous perpetual bars as sweep #14; the uptrend read defined on 100% of both windows' bars on every asset (BNB's daily EMA(50) first exists on 30 Mar 2020, two days before W1); the uptrend holds on 49–57% of the 1h bars and 51–63% of the 4h bars. Median ATR(14) is 0.6–1.2% of price at 1h and 1.3–2.5% at 4h, so the house trail sits about 1.2–2.4% and 2.6–5.1% under the high — against a 0.1% round trip.

    Hypotheses (specs fixed before the run) — 2×ATR(14) trail in every one

    # Hypothesis Spec Stated prior
    M1 The touch, 1h 4h EMA(20) > 4h EMA(50) AND RSI(14) crosses below 50 Low. It will fire often, and a trail 1–2% wide against a 0.1% round trip is the churn that killed sweep #1's 1h breakout
    M4 The touch, 4h daily EMA(20) > daily EMA(50) AND RSI(14) on 4h crosses below 50 Low–moderate, the likelier rung: the trail is about twice as wide against the same cost, and 4h is where sweep #1 found the trend. Against it: the same sweep's drawdowns
    A1 The turn back up, 1h 4h uptrend AND RSI(14) crosses back above 50 Low, as M1 — and a confirmation entry pays for its confirmation by buying higher
    A4 The turn back up, 4h daily uptrend AND RSI(14) on 4h crosses back above 50 Low–moderate, as M4

    Informational rows — never shipped:

    • C1 and C4: the touch with no trend filter, at 1h and 4h — what the uptrend adds.
    • The uptrend-conditional null: the same 400-draw null with its random entries drawn only from bars inside the same higher-timeframe uptrend — what RSI adds. A hypothesis that beats random entry but not a random bar inside its own uptrend is a trend filter with RSI as decoration, and the write-up will say so.

    Phases.

    1. Primaries: M1, M4, A1, A4, C1, C4 — both windows, three assets; the last twelve months informationally.
    2. Null: every M and A cell — the gate, and beside it the uptrend-conditional null.
    3. Robustness — only for a full passer (all six gates on ≥ 2 assets): 0.1%/side fee stress, reported (a stress failure ships as a fee guardrail, entry #5's precedent); and fills at the next bar's open instead of the signal bar's close. A passer must stay positive and strip-best-positive in both windows on its passing assets with next-open fills, or it is killed as latency-fragile.
    4. Neighbors — only for a family with genuine signal (positive and strip-best-positive in both windows on ≥ 2 assets, drawdown ignored): the level at 45 and at 55; the uptrend read as the higher-timeframe close above its EMA(50); a 3×ATR trail. A full passer must keep at least three of the four positive and strip-best-positive in both windows on each passing asset, or it is killed as a knife-edge.
    5. The 15m ladder — 15m entries with a 1h uptrend (M15, A15), run only for a trigger whose 1h rung shows genuine signal on ≥ 2 assets: sweep #1's rule for going below 1h. Sweep #7 measured 15m as cost-dead even for the funding squeeze, and a trigger that fails at 1h would carry a multiple of its cost drag there. A rung that runs goes through phases 2–4 as well.

    Decision rule, written down first.

    • A full passer that survives robustness and its neighbors ships as entry #8. It is a plain strategy-language config, so no new atom and no parity work stand in the way.
    • If more than one passes, the one with the higher W2 null percentile ships and the others are documented beside it.
    • Anything else is a kill, published here and in the kill log.

    Results — all four killed: the uptrend kept the 4h versions out of 2022, and the entries inside it were a coin flip

    No hypothesis is positive and strip-best-positive in both windows on even one asset, so the robustness, neighbor and 15m phases did not run.

    Cell Trades PF Return Strip-best Sum DD Null pct Verdict
    M1 BTC W1 / W2 449 / 552 1.02 / 1.04 +5.4% / +9.2% −10.0% / +2.4% 68.2 / 20.8 79.5th / 98th ❌
    M1 ETH W1 / W2 468 / 501 0.97 / 0.89 −15.4% / −39.0% −28.4% / −71.0% 66.1 / 46.3 57.3rd / 50.5th ❌
    M1 BNB W1 / W2 484 / 574 1.18 / 0.97 +79.3% / −10.5% +56.1% / −26.2% 36.3 / 35.2 89.5th / 77.8th ❌
    M4 BTC W1 / W2 101 / 146 0.98 / 1.19 −2.5% / +25.7% −20.1% / +14.4% 47.5 / 22.6 37.8th / 86.3rd ❌
    M4 ETH W1 / W2 123 / 134 1.40 / 0.94 +83.0% / −9.4% +40.2% / −25.8% 26.5 / 45.7 78.5th / 52.3rd ❌
    M4 BNB W1 / W2 123 / 137 0.90 / 1.03 −27.0% / +4.7% −54.1% / −18.3% 95.7 / 40.9 19.5th / 72.8th ❌
    A1 BTC W1 / W2 499 / 616 1.03 / 0.91 +9.9% / −25.5% −5.4% / −34.4% 40.1 / 35.8 81.5th / 74.5th ❌
    A1 ETH W1 / W2 516 / 571 1.02 / 0.90 +9.0% / −39.8% −3.1% / −71.3% 89.7 / 85.3 75.5th / 55th ❌
    A1 BNB W1 / W2 546 / 627 0.99 / 0.87 −3.0% / −49.4% −24.6% / −67.1% 59.6 / 58.6 43.3rd / 35.8th ❌
    A4 BTC W1 / W2 115 / 162 1.78 / 0.90 +111.5% / −15.4% +87.8% / −26.5% 36.2 / 31.4 99.3rd / 32.5th ❌
    A4 ETH W1 / W2 145 / 145 1.30 / 0.86 +71.5% / −26.4% +33.5% / −41.4% 45.5 / 47.9 72nd / 37th ❌
    A4 BNB W1 / W2 133 / 157 0.89 / 1.04 −26.7% / +6.5% −51.5% / −6.2% 57.9 / 43.2 16.8th / 75.8th ❌
    • At 1h it churns. The touch and the turn trade 449 to 627 times a window at profit factors of 0.87 to 1.18. Before fees and funding every 1h cell is positive; the 0.1% round trip alone costs 45 to 63 points a window. Only BNB's touch makes real money in 2020–23 (+79.3%), and it loses in 2023–26. The touch on BTC in 2023–26 is one of the two cells that beat random entry (98th percentile — the null's random entries, paying the same round trip about 470 times, lose a median 40.3%), but BTC's 2020–23 window fails strip-best with a 68-point drawdown.
    • At 4h it is a 2020–21 strategy. The three best cells all sit in 2020–23 — the turn back up +111.5% on BTC and +71.5% on ETH, the touch +83.0% on ETH — and the money was made in the bull market: split by calendar year after the run (informational), the turn made +85.7% on BTC from April to December 2020, and the touch +90.7% on ETH in 2021. In 2023–26 three of the four BTC and ETH cells lost. The exception, the touch on BTC (+25.7%), draws down 22.6 points and sits at the 86th percentile of random entry. BNB loses in 2020–23 on both triggers.
    • The uptrend did its job as a regime read, and that was not enough. At 4h it kept both triggers out of most of 2022 — 6 to 24 trades that year on each asset, against 41 to 61 in
      1. What it did not do is make the entries inside the uptrends any good. Against random bars drawn from the same uptrends, RSI's timing landed at a median 54th percentile across the 24 cells, below the median in nine and above the 95th in one (the turn on BTC in 2020–23, 98.3rd). The midline adds nothing a coin flip inside the trend would not.
    • Drawdowns. Every one of the 24 cells draws down more than 20 points (20.8 to 95.7). Sweep #1's breakout drew down 26–76; entering the trend on a pullback instead of a new high did not bring it under the bar.
    • The last twelve months (Oct 2025 → Sep 2026): all twelve cells lost, from −1.6% to −36.9%.
    • The controls. The touch with no trend filter loses in four of six 1h cells and draws down 39–119 points. The uptrend roughly halves the exposure and the drawdowns at 1h, and the touch still loses in three of six cells. At 4h the unfiltered touch returned more than the filtered one in four of six cells, and clears the per-window gates in one (BTC 2023–26: +37.0%, an 18.8-point drawdown) while losing 28.1% on BTC in 2020–23 — a control, never shipped.

    Verdicts

    # Hypothesis Verdict
    M1 The touch, 1h Killed — 449–574 trades a window; negative on ETH in both windows, BNB flips, BTC fails strip-best in 2020–23 with a 68-point drawdown
    M4 The touch, 4h Killed — flips between the windows on all three assets; 22.6–95.7-point drawdowns
    A1 The turn back up, 1h Killed — negative on all three assets in 2023–26, strip-best negative in every cell
    A4 The turn back up, 4h Killed — +111.5% on BTC and +71.5% on ETH in 2020–23, negative on both in 2023–26; BNB negative in 2020–23

    Structural conclusion — reversal or continuation, RSI on crypto is a regime bet

    Sweeps #12, #14 and #15 used RSI as a reversal signal — the oversold turn — behind positioning gates, and found that every version that works on BTC since 2023 breaks in 2022. This sweep used it the other way, as a pullback inside a trend read a timeframe up, and found the mirror image at 4h: the trend filter kept it out of most of 2022, and it made its money in 2020–21 and not since. At 1h the regime never came into it: every cell is positive before costs, and the fees take it.

    Taken together, the log can now say this about RSI on crypto at 1h and 4h. As a reversal or a continuation, behind a positioning gate or a trend filter, the only version that has cleared the bar is the one the library started with — the oversold turn with negative funding behind it (entries #1 and #5) — and it comes and goes with the regime too. Inside an uptrend, RSI's own timing did no better than a random bar from the same uptrend.

    Listed in the new regime section (2026-10-14)

    The library gained a second, looser tier on 2026-10-14: a regime section for strategies that worked in one market regime and not the other. A strategy is listed there when, in one of its two windows, it is net positive after fees and funding, strip-best positive, and above the 95th percentile of the random-entry null. The other window and the drawdown are shown, not gated. The bar was set after this sweep's results were known, so the two listings below are an application of it, not a pre-registered test of it.

    Of this sweep's 24 window tests, two clear it — both on BTC, both from the tables above. At a 95th-percentile bar, one or two of 24 would clear by luck alone:

    Listed as Cell Window it clears Return Strip-best Random-entry percentile The other window
    Regime #1 A4 BTC Apr 2020 → Apr 2023 +111.5% +87.8% 99.3rd −15.4%
    Regime #2 M1 BTC Apr 2023 → Oct 2026 +9.2% +2.4% 98th +5.4%, strip-best −10.0%

    Checks run after the listing, as disclosure (scripts/research/regime-entries-sweep16.ts; the full tables are on each entry's page):

    • Fee stress at 0.1%/side. A4 BTC still made +100.0% in 2020–23. M1 BTC lost 46.0% in 2023–26 and 39.5% in 2020–23.
    • Fills at the next bar's open. No real change for either; the 4h cells are identical to the decimal.
    • The four pre-registered neighbors, with their own null in the window that clears. For A4 BTC, the daily close above EMA(50) as the trend read keeps it (+99.6%, 98.3rd percentile), and so does a 3×ATR trail (+85.6%, 95th); RSI 45 falls to +6.2% at the 47.5th, and RSI 55 makes +56.1% at the 88th. For M1 BTC, none of the four clears it in 2023–26: RSI 45 and 55 lose 43–47% there (−43.3% and −47.3%), the close-above trend read loses 8.5%, and the 3×ATR trail makes +37.1% at the 93rd percentile.
    • When the money came. A4 BTC made all of its money in three quarters — October 2020 to March 2021 (+104.1%) and January to March 2023 (+30.7%) — and its last equity high was December 2024. M1 BTC's 2023–26 result is one quarter, April to June 2025 (+10.0%); its last equity high was March 2021.

    The regime section shows these as what worked when. Neither changes the verdicts above.


    Re-audit 2026-10-14 — the random-entry null, run on sweeps #1–#10 (pre-registered)

    Why. The regime section lists a strategy when, in one of its two windows, it is net positive after fees and funding, positive without its best trade, above the 95th percentile of the random-entry null, and has at least 20 trades there. Sweeps #1–#10 ran before the null test existed (it joined the bar after sweep #11), so none of their cells has ever been held to it. This runs it. The list of cells and the procedure below are committed before any of these nulls is run.

    Which cells — fixed now, from numbers already recorded. Every killed hypothesis's pre-registered primary spec, at each of its pre-registered timeframes, in every asset × window cell that is net positive, strip-best positive and has 20 or more trades. The numbers come from the committed replication (scripts/research/results/replication-2026-10/) for sweeps #1–#7 and from this log's tables for #9 and #10. Neighbors, fees-off diagnostics and stress reruns are checks on a hypothesis, not hypotheses, and are not tested. That gives thirty cells:

    Sweep Hypothesis TF Cell Trades Return Strip-best
    #1 H1 Donchian-55, 2×ATR trail 4h BTC W1 122 +39.6% +20.2%
    #1 H1 4h BTC W2 111 +12.1% +3.6%
    #1 H1 4h ETH W1 124 +61.9% +27.3%
    #1 H1 4h BNB W1 126 +133.5% +62.5%
    #1 H2 squeeze-breakout 1h BTC W1 58 +51.8% +39.1%
    #1 H2 1h ETH W2 65 +8.5% +3.6%
    #1 H3 RSI(2) dip-buy at 0.1%/side 1h BNB W1 784 +72.8% +64.4%
    #2 S2 session-VWAP reversion 1h BNB W1 376 +11.1% +3.1%
    #4 P2 passive limit dip 1h BTC W1 381 +59.0% +49.0%
    #4 P2 1h ETH W1 483 +112.1% +105.8%
    #4 P2 1h BNB W1 489 +179.5% +170.5%
    #4 P2 1h BNB W2 307 +32.4% +27.0%
    #4 P3 Donchian-55, 3×ATR, daily SMA-200 filter 4h BTC W1 59 +36.1% +2.2%
    #4 P3 4h BTC W2 58 +38.0% +21.9%
    #4 P3 4h ETH W1 63 +56.3% +12.5%
    #4 P3 4h ETH W2 48 +37.0% +1.1%
    #4 P3 4h BNB W1 61 +199.9% +132.6%
    #4 P3 4h BNB W2 58 +56.4% +25.0%
    #5 Q1 SMA-200 timing on metals 1d GLD W2 33 +131.2% +11.7%
    #5 Q1 1d SLV W2 38 +125.8% +17.2%
    #5 Q1 1d IAU W2 30 +135.0% +14.7%
    #7 Funding-squeeze at 15m 15m BNB W1 268 +46.0% +29.9%
    #9 T2 one-week momentum 1w BTC W1 53 +216.2% +156.4%
    #9 T2 1w BTC W2 54 +82.8% +41.7%
    #9 T2 1w ETH W1 48 +309.2% +216.3%
    #9 T2 1w ETH W2 53 +112.2% +53.2%
    #9 T2 1w BNB W1 51 +653.9% +279.8%
    #10 M1 cross-exchange premium momentum 1d BTC W2 26 +51.9% +20.2%
    #10 M1 1d ETH W1 26 +140.7% +58.6%
    #10 M1 1d ETH W2 30 +69.9% +31.2%

    Crypto windows are Aug 2018 → Aug 2022 and Aug 2022 → Aug 2026; #5's W2 is Jan 2018 → Aug 2026. IAU was registered in sweep #5 as GLD's parity probe, so it is not an independent instrument.

    Not tested, and why:

    • Fewer than 20 trades in every cell that is otherwise positive: #1 H2 BNB W1 (13); #3 T2 BTC W2 (16) and ETH W2 (13); #9 T1 (12–18); #9 T3 (14–19); #10 M2 (2–7); #10 M3 (10–18).
    • #1 H4 is entry #5's own spec at the old 0.1%/side fee. Sweep #4's P1 superseded it, and P1 is entry #5.
    • #8 is a market-neutral carry. The null does not apply, for the same reason it does not apply to entry #6.
    • No cell is both positive and strip-best positive: #1 H1 at 1h and H1s; #2 S1, S1s and S3; #5 Q3; #6 V1.
    • #4 P2 is tested as the August run executed it, with its limit orders valid for two bars: that is the run its published numbers and its verdict come from, as the replication section records.

    Procedure. Each sweep's own data, windows, fees, funding and fills, through the committed replication scripts and the sweep #9 and #10 scripts, unchanged. The null keeps the exit, the stop, the fees, the order type and the funding billing, and replaces the entry with N random bars inside the window, where N is the real trade count. 400 draws, fixed seed. Wherever the sweep billed funding, the real funding series is billed in both the real run and every null run. The percentile is the share of null returns below the real one. This is the procedure of sweeps #12–#16, moved into scripts/research/lib/replication-harness.ts as nullTest, and run by scripts/research/null-reaudit-sweeps-1-10.ts. Before any null is drawn, each cell's real run must reproduce the trades, return and strip-best above.

    What decides it. A cell at or above the 95th percentile qualifies its strategy for the regime section. Every cell is reported, cleared or not. By chance alone, about one or two of thirty would reach the 95th percentile.

    Amendment before the run (2026-10-14) — two nulls that match what the strategy could do

    Written after the thirty cells were built and reproduced, and before any 400-draw null was drawn. To check that the code runs, each cell had a 10-draw smoke null; those percentiles were not read. The smoke runs showed two cases where the null above cannot do what the real strategy did:

    1. Where the null under-trades, a trade-matched null as well. P2 enters with a limit order that fills about half the time, at random bars as at its own signals, so N random signals give it roughly half the real trades. Q1 sits in the market two-thirds of the time, so most random signals land while a position is already open and are ignored. For every cell whose pre-registered null realises a median of fewer than 70% of the real trades, a second null draws more random signals, scaled so that its median trade count lands within 10% of the real count. The scale is set from 40-draw pilots that read only trade counts.
    2. For S2, a null drawn from session hours. S2's entry can fire only inside the US session, because its session VWAP does not exist outside it; the null above enters at any hour. A second null draws its random bars only from bars where the strategy's own entry inputs exist.

    In both cases the cell clears only if it reaches the 95th percentile under both nulls, so this can remove a cell from the regime section but never add one. H3 is unchanged, but its result will carry a note: its exit (a close above the 5-bar average) is usually already true at a random bar, so most random entries leave on the next bar and pay the round trip, which flatters the real strategy.

    Results — eight cells clear, and four strategies go to the regime section

    All thirty cells reproduced their pre-registered trades, return and strip-best exactly before any null was drawn. Each was built from its own sweep's committed script (scripts/research/null-reaudit/cells-*.ts) and run by scripts/research/null-reaudit-sweeps-1-10.ts, 400 draws per null.

    Cell Trades Return Exposure Null median / p95 Pre-registered null (its trades) Trade-matched null Session-hours null Clears?
    #1 H1 4h BTC W1 122 +39.6% 13% +5.2% / +87.1% 74.8th (107 tr) — — no — indistinguishable
    #1 H1 4h BTC W2 111 +12.1% 11.5% −6.7% / +39.2% 77.3rd (99 tr) — — no — indistinguishable
    #1 H1 4h ETH W1 124 +61.9% 12.6% +21.8% / +117.6% 78th (108 tr) — — no — indistinguishable
    #1 H1 4h BNB W1 126 +133.5% 11.6% +35.8% / +168.9% 89th (109 tr) — — no — above, not decisive
    #1 H2 1h BTC W1 58 +51.8% 1.6% −11.9% / +19.9% 99.8th (57 tr) — — clears
    #1 H2 1h ETH W2 65 +8.5% 1.3% −11.8% / +17.0% 91st (64 tr) — — no — above, not decisive
    #1 H3 1h BNB W1 784 +72.8% 8.5% −110.3% / −43.0% 100th (741 tr) — — clears
    #2 S2 1h BNB W1 376 +11.1% 2.1% −53.6% / +26.2% 89th (352 tr) — 100th no — above, not decisive
    #4 P2 1h BTC W1 381 +59.0% 3.9% +3.8% / +38.8% 99.5th (181 tr) 95.5th (370 tr) — clears
    #4 P2 1h ETH W1 483 +112.1% 4.7% +1.6% / +52.7% 100th (275 tr) 99.8th (471 tr) — clears
    #4 P2 1h BNB W1 489 +179.5% 4.6% +8.3% / +68.4% 100th (288 tr) 100th (478 tr) — clears
    #4 P2 1h BNB W2 307 +32.4% 3.4% +0.6% / +18.9% 99.8th (114 tr) 95.8th (295 tr) — clears
    #4 P3 4h BTC W1 59 +36.1% 13.3% +21.3% / +94.4% 63.5th (52 tr) — — no — indistinguishable
    #4 P3 4h BTC W2 58 +38.0% 12.4% +12.7% / +63.8% 79.5th (52 tr) — — no — indistinguishable
    #4 P3 4h ETH W1 63 +56.3% 13.7% +52.0% / +167.5% 53.8th (55 tr) — — no — indistinguishable
    #4 P3 4h ETH W2 48 +37.0% 10.9% +7.8% / +60.0% 81.8th (44 tr) — — no — above, not decisive
    #4 P3 4h BNB W1 61 +199.9% 12.3% +45.7% / +182.8% 97.5th (53 tr) — — clears
    #4 P3 4h BNB W2 58 +56.4% 12.1% +11.1% / +65.4% 91st (51 tr) — — no — above, not decisive
    #5 Q1 1d GLD W2 33 +131.2% 70.4% +121.5% / +144.3% 75th (12 tr) can’t match — no — indistinguishable
    #5 Q1 1d SLV W2 38 +125.8% 62.9% +131.7% / +192.4% 45th (16 tr) can’t match — no — indistinguishable
    #5 Q1 1d IAU W2 30 +135.0% 70.1% +119.8% / +141.8% 83.3rd (11 tr) can’t match — no — above, not decisive
    #7 F15 15m BNB W1 268 +46.0% 2.3% −28.1% / +10.9% 99.5th (263 tr) — — clears
    #9 T2 1w BTC W1 53 +216.2% 53.9% +141.8% / +255.8% 85.8th (32 tr) can’t match — no — above, not decisive
    #9 T2 1w BTC W2 54 +82.8% 50.7% +46.7% / +126.3% 80th (33 tr) can’t match — no — above, not decisive
    #9 T2 1w ETH W1 48 +309.2% 52.9% +164.6% / +322.6% 94.3rd (30 tr) can’t match — no — above, not decisive
    #9 T2 1w ETH W2 53 +112.2% 49.3% +39.5% / +152.4% 85.5th (34 tr) can’t match — no — above, not decisive
    #9 T2 1w BNB W1 51 +653.9% 55.8% +338.5% / +700.5% 92nd (31 tr) can’t match — no — above, not decisive
    #10 M1 1d BTC W2 26 +51.9% 24% +26.0% / +90.5% 75th (22 tr) — — no — indistinguishable
    #10 M1 1d ETH W1 26 +140.7% 20% +80.7% / +200.4% 81.3rd (22 tr) — — no — above, not decisive
    #10 M1 1d ETH W2 30 +69.9% 25.5% +40.0% / +126.5% 72.5th (25 tr) — — no — indistinguishable
    • Eight of thirty clear every null they were given. By chance, one or two would. Four of the eight are one strategy, P2, which cleared on all three majors in 2018–22 and on BNB again in 2022–26.
    • The trend followers don't. H1's 4h breakout (74.8th–89th), P3 everywhere except BNB's first window (53.8th–91st), the one-week momentum T2 (80th–94.3rd), SMA-200 timing on metals (45th–83.3rd) and premium momentum M1 (72.5th–81.3rd) all made money, and random entries with the same exits made most of it. T2's BNB first window made +653.9%; the random median was +338.5%.
    • S2 doesn't clear. It sits at the 89th percentile of the pre-registered null. Drawn only from session hours, the null puts it at the 100th, but the amendment requires both. Its one positive cell also depends on when the session exit fires: flattened after the close, the convention the replication recovered for sweep #2's ORB, it is −6.4% (strip-best −14.4%).
    • H3 clears at the 100th, against a null that fees distort. Its exit (a close above the 5-bar average) is usually already true at a random bar, so the null's trades mostly leave on the next bar and pay the round trip: null median −110.3%. H3's signal is P2's — sweep #4 re-ran it with resting limit entries — so H3 is recorded inside P2's entry rather than listed on its own.
    • The trade-matched null worked for P2 and could not work for Q1 or T2. P2's limit 0.5% below the close fills about half the time, so the pre-registered null realised 114–288 trades against P2's 307–489. Scaled to 802–848 random signals it realised 295–478, and P2 still cleared every cell (95.5th–100th). Q1's null, given more signals, re-enters almost as soon as it exits and sits in the market 92–94% of the time against Q1's 63–70%. T2's weekly signals become so dense that they merge into a single entry. Neither clears the pre-registered null, so neither verdict depends on the second one, and its numbers are not used.

    Listed in the regime section (2026-10-14): P2, the passive RSI(2) dip-buy, as a record only, because the app's alerts do not carry its resting limit order and the same signal bought at market is H3; H2, the squeeze-breakout on BTC 1h; P3, the filtered Donchian breakout on BNB 4h; and the 15m funding squeeze on BNB. None of this changes a verdict above: each still fails the full bar where the sweep said it did.

    P2 adoptable (2026-10-15): plan alerts now carry a limit order — its price and when to cancel it — and the entry finder follows each order to a fill or a lapse before it follows a trade (shared/limit-entry.ts; limitOrderLife and limitHoldsPositionAt in server/plan-signal-logic.ts). Run bar by bar over BNB 1h, the alerts take exactly the engine's trades in both windows: 489 and 307, on the same bars at the same prices, zero mismatches (scripts/research/limit-alerts-replay.ts). To get them they place 887 and 1,059 orders: 55% and 29% fill, the rest run out of bars (324, 505) or are replaced by a newer signal (74, 247). Listed on BNB only, its regime entry is now adoptable from its page. The verdict above is unchanged.

    Sweeps #11–#15 in the regime section (2026-10-14)

    These sweeps ran the null when they ran, so their cells needed no new test. Six killed strategies have a window that clears the regime bar, all six on numbers already printed in their sweep's section above:

    Sweep Strategy Cell that clears Trades Return Random-entry percentile
    #11 V2 term-structure capitulation SPY, QQQ and IWM, Jan 2010 → Jan 2018 38 each +68.3%, +91.6%, +83.7% 100th each
    #12 O1 deleveraging exhaustion BTC, May 2024 → Oct 2026 33 +14.3% 98.3rd
    #13 G2 out of the fix USDJPY, Jan 2018 → Oct 2026 507 +3.3% 98.5th
    #14 K4 taker-selling exhaustion BNB, Apr 2023 → Oct 2026 24 +50.7% 100th
    #15 P1 perp discount BNB, May 2021 → Feb 2024 68 +49.1% 98.5th
    #15 X4 whale shorts BTC, Feb 2024 → Oct 2026 24 +31.6% 99.5th

    One more clears on percentile but not on sample: #15's V4 options panic, BTC 2024–26, at the 98th percentile on 13 trades, under the 20-trade minimum. Five of the six read data the strategy language has no atom for — VIX and VIX3M, open interest, taker-buy volume, the premium index, Bitfinex margin shorts — so they are listed as records only. G2 can be written with the gotobi_day atom and is adoptable. Two cells from hypotheses that shipped would also clear (G1 on AUDJPY, and entry #5's config on BNB in sweep #12's first window); they belong to entries #7 and #5 and are not listed separately.