Skip to content
All strategies

Strategies

VolSpike ATR-Band Breakout, Frozen-Rule Venue and Universe Transfer to OKX: follow a 4H bar whose volume exceeds the SUM of the prior 7 bars (RSI 20-80, wick filter), symmetric 2.5-ATR intrabar stop / target, long-short, on 16 pre-2021 OKX USDT swaps none of which were in the Bybit panel (OKX 4H, flat ~97% of the time per name)

Outcome: Backtesting

VolSpikeAtrBandOkxPanel

VolSpike ATR-Band Breakout, Frozen-Rule Venue and Universe Transfer to OKX: follow a 4H bar whose volume exceeds the SUM of the prior 7 bars (RSI 20-80, wick filter), symmetric 2.5-ATR intrabar stop / target,…

Hypothesis

Original Research Lead hypothesis. It is a fresh, frozen-rule transfer test (L228) of the promoted Bybit strategy 'VolSpike ATR-Band Breakout (FMZ 488520, ianzeng123) on a 6-Name Bybit Alt-Perp Panel' (run b22697a9: 166 trades, avg trade 1.20%, Sharpe 0.70, paper_stage). The rule set comes from ianzeng123's FMZ Pine strategy 'VolSpike ATR RSI Strategy with ATR Bands' (Source URL: https://www.fmz.com/strategy/488520). The rules are kept exactly as the Bybit run wrote them. Only the venue and the names change, and……Show moreShow less

Original Research Lead hypothesis. It is a fresh, frozen-rule transfer test (L228) of the promoted Bybit strategy 'VolSpike ATR-Band Breakout (FMZ 488520, ianzeng123) on a 6-Name Bybit Alt-Perp Panel' (run b22697a9: 166 trades, avg trade 1.20%, Sharpe 0.70, paper_stage). The rule set comes from ianzeng123's FMZ Pine strategy 'VolSpike ATR RSI Strategy with ATR Bands' (Source URL: https://www.fmz.com/strategy/488520). The rules are kept exactly as the Bybit run wrote them. Only the venue and the names change, and every name is new. RULES, evaluated per instrument on each closed 4H bar: (1) VolSpike: the bar's volume is greater than the SUM of the previous 7 bars' volumes. (2) RSI(14, Wilder) filter: 20 < RSI < 80. (3) Wick filter. LONG requires close > open and upper-wick/body = (high-close)/|close-open| <= 2.0. SHORT requires close < open and lower-wick/body = (close-low)/|close-open| <= 2.0. A zero body is replaced by 0.0001, as in the source. (4) ATR bands from ATR(14, Wilder): upper = close + 2.5*ATR, lower = close - 2.5*ATR. A long takes its stop at the lower band and its take-profit at close + 1.0*(upper-close). A short takes its stop at the upper band and its take-profit at close - 1.0*(close-lower). Pine semantics are preserved. A same-direction signal while in a position re-arms the stop and target from the new bar's close and ATR, and adds no size. An opposite signal closes the position and reverses it. UNIVERSE, fixed by rule before any return was examined: OKX USDT swaps of legacy (pre-2021-listed) liquid alts that have OKX 4H history in the catalog starting before 2021-08, excluding every name in the Bybit panel (HBAR, XLM, ALGO, ETC, ATOM, AAVE) and BTC/ETH/SOL for corpus concentration. That gives DOT, UNI, LTC, BCH, NEAR, FIL, TRX, LINK, ADA, XRP, AVAX, SUSHI, CRV, COMP, SAND and AXS. DOGE, MANA and XTZ were in the candidate list but have only weeks of OKX 4H bars in the catalog, so they were dropped by the history rule, not by their results. Point-in-time: a leg trades only while is_listed() and at least 30 days after listed_since(). OKX keeps no delisted swaps, so residual survivorship bias remains and is stated, not fixed. Each name runs the identical rule independently, with one netted position per instrument. This is an event panel, not a ranked or neutral book. EXECUTION SUBSTITUTIONS (registry): Pine strategy.entry fills at the next bar's open. On this 24/7 venue that is written as a market order at the signal bar's close (next_bar_open_fill: use_equivalent). The stop and target trigger inside the bar via a bracket or a reduce-only stop-market plus limit (intrabar_stop: supported). When one bar touches both, the engine's adaptive OHLC ordering decides (same_bar_policy is not selectable). This is noted, not emulated. RESEARCH LEAD PRE-STUDY: an independent re-implementation on catalog bars, net of 0.10% RT, used only to check feasibility, not to accept the idea. Calibration: on the original Bybit 6-name panel the re-implementation gives 171 trades and +1.29% per trade, against the run's 166 trades and +1.20%, so it reproduces the promoted result. On this OKX panel (2020-2026) it gives about 366 trades on 250 distinct entry dates (at most 13 on one date), mean +1.0% net, median +4.3%, win rate 58%, t about 2.3. The edge is concentrated in 2023-2026 (+1.9%, +2.5%, +1.3%, +0.4% per trade). 2020-2022 were negative or flat on few trades (24, 28 and 33 trades; -0.7%, -1.8%, 0.0%). Per L230 the arms were measured separately. The SHORT arm averaged +1.9% on 167 trades and was positive every year from 2022, but lost in the 2020-21 bull. The LONG arm averaged +0.3% on 200 trades. Both arms are kept because the source trades both. The bull-year weakness of the short arm is the main pre-registered risk. A Hyperliquid 4H transfer was also measured: 20 names, Jan 2024 onward, 630 trades, only +0.35%, t 1.3. It was rejected as the destination because its history is short and its result weak; this is reported here, not hidden. Venue rationale: OKX is 3.6% of the corpus (target >=5%) and long_short is 24% of the corpus. No VolSpike rule has been tested outside Bybit. Risk control route (a): a 2.5-ATR(14) 4H stop is about 5-7% of price, so 10% notional x about 6% is about 0.6% of equity at the stop, inside the 2% cap. At most 16 legs can be open at 10% each (160% gross, about 1.6x on OKX margin, under the profile's 5x). Each leg contributes about 10% x roughly 90% annualized volatility, which is about 9%, far under the 120% per-position cap.

The corpus is saturated: candle patterns, NR7, OI-flush, funding carry, momentum confluence, calendar and lead-lag ideas have all been tried many times. So this proposal takes a promoted rule that has never left its venue and gives it a fresh, frozen-rule breadth test on a disjoint universe, as L228 recommends. The test is on OKX (3.6%, under the >=5% target) and is long-short (24% of the corpus). The pre-study checked event counts and both arms separately before proposing (L230, L237, L238). Three ideas I measured and discarded: turtle-soup and key-reversal variants on a 20-name Bybit panel (negative), weekend-shock reversal (negative) and market-wide breadth washouts (t < 1.8, negative in 2022).

Implementation

FMZ 488520 (ianzeng123) VolSpike ATR RSI strategy with ATR bands, the frozen rule set of the promoted Bybit panel, run independently on 16 OKX USDT swaps (LTC primary + DOT, UNI, BCH, NEAR, FIL, TRX, LINK, ADA, XRP, AVAX, SUSHI, CRV, COMP, SAND, AXS) on closed 4H bars. Signal: volume > sum of the previous vol_spike_bars volumes, 20 < RSI(14, Wilder) < 80, bullish bar with upper-wick/body <= 2 -> long, bearish bar with lower-wick/body <= 2 -> short (zero body -> 0.0001). Stop/target at close -/+ atr_band_mult*ATR(14, Wilder) (target = tp_to_band_ratio x band distance), resting as reduce-only STOP_MARKET + LIMIT orders that trigger intrabar. Same-direction signal re-arms stop/target from the new bar, no add; opposite signal reverses with one order sized |position| + new exposure after the exits are cancelled. 10% of equity notional per leg, one netted position per instrument. Execution substitution: Pine strategy.entry at next bar open -> market order at the signal bar's close (24/7 venue). Same-bar stop/target touches resolve by the engine's adaptive OHLC ordering (not selectable).

Frozen-rule venue/universe transfer: the code is the promoted Bybit panel implementation (VolSpikeAtrBandBybitPanel v2) with only the parameter names renamed to the optimization plan's keys (atr_len, rsi_len, rsi_low, rsi_high, tp_to_band_ratio, max_wick_body_ratio, position_pct_equity fixed; atr_band_mult and vol_spike_bars tunable, no clamps so no _param_bounds), the universe swapped to the 16 OKX swaps, and the hypothesis's point-in-time gate added: a leg acts on a signal only while is_listed() and >=……Show moreShow less

Frozen-rule venue/universe transfer: the code is the promoted Bybit panel implementation (VolSpikeAtrBandBybitPanel v2) with only the parameter names renamed to the optimization plan's keys (atr_len, rsi_len, rsi_low, rsi_high, tp_to_band_ratio, max_wick_body_ratio, position_pct_equity fixed; atr_band_mult and vol_spike_bars tunable, no clamps so no _param_bounds), the universe swapped to the 16 OKX swaps, and the hypothesis's point-in-time gate added: a leg acts on a signal only while is_listed() and >= min_listing_days after listed_since() (point_in_time_universe=True; LTCUSDT.OKX, OKX 4H from 2019-12, is the long-lived primary; a leg with no calendar entry, as in paper/live, counts as eligible). All 16 OKX 4H bar dirs exist with history from 2019-12 to 2021-07. Risk route (a): 10% notional x ~6% 2.5-ATR stop is ~0.6% of equity at the stop. Leverage stays 1.0 as in the Bybit run (sizing reads config.leverage). With ~97% flat time per name, concurrency is usually low; in the rare case of more than ~9 legs open at once, the margin check caps the newest entries. Residual survivorship bias: OKX keeps no delisted swaps.

Verification Results

Optional: in _try_reversal, if the capped size cannot cover |position|, send a plain close instead (and enter on a later signal). Or raise leverage so 16 x 10% fits.

Sizing is 10% of equity x leverage 1.0 per leg, across 16 legs. If more than about 9 legs are open at once, margin_capped_size in _submit_entry_instrument shrinks new orders. A capped REVERSAL order (|position| + new exposure) may then be shrunk below the existing position. That leaves a residual old-direction position, which _place_protection then protects with stop/target levels computed for the new direction. A stop placed on the wrong side would be crossed or rejected. The developer says high concurrency is rare (~97% flat time per name), so this should not distort the measurement.

None needed for measurement. The new exits could be placed in on_order_canceled, as the reversal path already does.

A same-direction re-arm cancels the old reduce-only stop/target and places the new ones straight away, without waiting for the cancel confirmation. For a moment the old and new exits can both be working. In the backtest/paper simulated venue the cancel applies at once, so there is no effect on measurement.

Check whether the optimizer budget (TPE over 2 tunables) fits about 20 min per full backtest.

The sandbox needed 1250 s for 14,340 bars and was flagged runtime_review_required. Per-bar work is incremental: the RMA state uses a stamp cursor, and the order-cache scan per leg is small. Most of the cost is probably the 16-leg engine itself. This is a resource concern, not a correctness one.

The pre-study's edge is concentrated in 2023-2026, and 2020-2022 were negative or flat on few trades. The short arm (+1.9%) carries the result while the long arm is +0.3%, and the short arm lost in the 2020-21 bull. The analyst should look at per-arm and per-year results and at concentration across names on the full backtest. Each 4H stop sits about 5-7% away, so the fees (~0.10% round trip) are small next to the move. The question is regime dependence, not fees.

Backtest and paper results are hypothetical. Trading involves risk of loss.