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:
- Honesty. "Why so few entries?" Because this is what the vetting bar does to ideas.
- 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 + perp funding
charged on every held bar. 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). Gates per asset: net positive in
BOTH windows, survives strip-best-trade in both, max DD ≤ 20%, then cross-asset (≥ 2 majors).
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. 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.
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.
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.
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, 870 trades
per window. But it averages **+0.04% per trade gross**, against 0.2% round-trip
retail taker costs: the edge is real and roughly 5× smaller than the cost line.
Break-even is ~0.02%/side — maker-rebate/HFT territory, not what this library honestly
models. 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 |
| 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
~55%/window net while paying 150% of costs — it was gross-POSITIVE (+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 |
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).
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.
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). 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.
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.
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.
