a2-bb-keltner-squeeze-release
a2 / a2-bb-keltner-squeeze-release @ a2-v1 · code b29299a
campaign strategyREJECTED
Lightning Screen: Aggregate expectancy -0.0042R over 954 resolved trades is negative/flat (PF=0.994), with 3/4 qualifying years (n>=15) agree with the aggregate sign.
Lifecycle
completed
Outcome
fail
Phase
Phase A
Research gate
LIGHTNING
Engine
strategy lab
Market
MNQ
Timeframe
MNQ 1-minute OHLC
Side
BOTH
Tracking
Family, lineage and what this record needs nextMechanism family
Volatility expansion / contraction
a1-bb-keltner-squeeze-release
Mechanism parent
a1-bb-keltner-squeeze-release
Phase detail
Scientific validation lane (Phase A).
Next required test
None — this record is complete.
Integrity & certification
Signals as recorded; NOT_PASSED means not passed or not applicableEngine certified
unknown
Execution certified
unknown
Integrity audit
unknown
Shadow verifier
unknown
Technical invalidation
None recorded.
Artifacts
Everything committed for this recordCampaign record (A2)
research-output/strategy-lab/campaigns/a2/campaign_state.json
Stage ladder
Each cell carries the campaign runner's own classification label — hover for the verdict and its reasonIntake
passed
Pre-reg
passed
Lightning
failed
Robust
—
Exec/stat
—
Validation
—
H-eligible
—
Holdout
—
Audit
—
Closed
failed
INTAKE
Registered into campaign A2 at code version b29299a.
PREREGISTRATION
Pre-test passed: distinct, causal, executable, required data available.
LIGHTNING
REJECTED_CLEARLY_NEGATIVEAggregate expectancy -0.0042R over 954 resolved trades is negative/flat (PF=0.994), with 3/4 qualifying years (n>=15) agree with the aggregate sign.
CLOSED
REJECTEDLightning Screen: Aggregate expectancy -0.0042R over 954 resolved trades is negative/flat (PF=0.994), with 3/4 qualifying years (n>=15) agree with the aggregate sign.
Evidence recorded
Quoted from the campaign record — never recomputed hereScreen n (FIXED_2R)
954
Expectancy
-0.004R
Profit factor
0.99
Win rate
33.6%
Total R
-4
Max DD
41R
Longest L streak
13
Trades / year
266.3
| Split | Window | n | Expectancy | PF | Max DD |
|---|---|---|---|---|---|
| Discovery | — | — | — | — | — |
| Validation | — | — | — | — | — |
| Holdout | — | — | — | — | — |
Read from research-output/strategy-lab/campaigns/a2/campaign_state.json
Holdout position
One-shot, sealed, never retriedEligible
—
Authorised
Not authorised.
Specification frozen
—
Sealed data consumed
No.
Validation data consumed
No.
Lineage
Declared at intake, carrying any prior negative resultRelation to prior work
reserve research revisit
Note
Frozen as A11 in the A1 seed batch; rejected at Preregistration with DATA_REQUIRED_NOT_TESTABLE because the production Candle stream carried no real per-bar volume. Re-submitted verbatim for Campaign A2 (zero rule/threshold changes) now that loadVolumeResearchBars() + the volume-preserving timeAggregate.ts fix make its relative-volume gate genuinely computable. Same frozen mechanism, not a new independent hypothesis.
Frozen specification
Snapshotted at intake — not re-read from a live moduleMechanism hypothesis
A low-volatility compression regime followed by simultaneous volatility expansion and abnormal relative volume can produce short-horizon directional continuation.
Long rule
On a closed 5-minute bar i: if Bollinger Bands(20, 2sigma) are fully inside Keltner Channel(20, 1.5xATR) for at least 6 consecutive closed 5-minute bars (a squeeze), AND bar i is the FIRST bar where the Bollinger upper band expands back above the Keltner upper band (release), AND relative volume (bar i's volume / trailing 20-bar average) >= 1.5, AND bar i closes above its open: enter LONG at the next 1-minute bar's open.
Short rule
Same squeeze + release + relative-volume condition, with the Bollinger lower band expanding back below the Keltner lower band and bar i closing below its open: enter SHORT.
Entry trigger
A minimum-duration Bollinger-inside-Keltner squeeze followed by the FIRST closed 5-minute bar where the bands expand back outside, gated by a contemporaneous relative-volume threshold.
Earliest executable entry
Next 1-minute bar's open after the triggering (release) 5-minute bar closes.
Initial stop
The release bar's OWN opposite extreme: low of the release bar for a long entry, high of the release bar for a short entry.
Exit
FIXED_2R only (this seed strategy's declared A1 scope), via the shared TradeTracker; 5-day max-hold expiry as a backstop.
Causality
Band values and relative volume at bar i are computed only from bars up to and including bar i itself (standard lagging descriptive statistics, knowable the instant bar i closes -- no future bar is ever read). Entry is deferred to the next 1-minute bar's open after the release bar closes. No same-bar entry.
Expected frequency
LOW
Required data
MNQ 1-minute OHLC, MNQ 1-minute volume (available via loadVolumeResearchBars(), 2022-06-03 onward)
Campaign data window
MNQ 2022-06-03..2026-09-15
Parameters
bandLength5m = 20 (integer) — Lookback (5-minute bars) for both Bollinger Bands and the Keltner Channel.bbStdevMult = 2 (number) — Bollinger Band width as a multiple of the rolling standard deviation.kcAtrMult = 1.5 (number) — Keltner Channel width as a multiple of ATR.minSqueezeDurationBars5m = 6 (integer) — Minimum consecutive 5-minute bars the squeeze condition must hold before a release can trigger.relativeVolumeLookback = 20 (integer) — Bars used for the trailing average-volume baseline.relativeVolumeThreshold = 1.5 (number) — Minimum relative volume required at the release bar.
Read from research-output/strategy-lab/campaigns/a2/campaign_state.json
History
Every dated event this record appears in, newest first2026-09-16
a2-bb-keltner-squeeze-release@a2-v1 registeredREJECTED · LIGHTNING_SCREEN
[a2] Lightning Screen: Aggregate expectancy -0.0042R over 954 resolved trades is negative/flat (PF=0.994), with 3/4 qualifying years (n>=15) agree with the aggregate sign.
research-output/strategy-lab/experiment_registry.json