Strategies
LINK Bybit vn.py BollChannel — Registered 960-Bar Initialization
Outcome: Abandoned
LinkBybitBollChannel960
Outcome Summary
Across four iterations, LinkBybitBollChannel960 implemented frozen BollChannel rules with a 960-bar initialization replay. The supplied backtest lost 56.57% across 2,564 closed trades, with a Sharpe of -1.745. The abandonment review cites different metrics but likewise records negative expectancy and rejects optimization. This rejects the specified LINK/Bybit implementation, not the source strategy generally.
Hypothesis
The failure establishes a conflicting initialization requirement, not a failed trading premise. Replace literal load_bar(10) and the 1500-bar registration with one executable 960-bar replay contract. Preserve the instrument, venue, parameters and trading mechanism because no performance evidence supports changing them. The requested repair takes precedence over autonomous diversification; portfolio concentration statistics were not supplied.
Measured negative expectancy across 2,033 closed positions makes optimization unjustified: average net trade return -0.3455% versus the 0.15% venue review floor, profit factor 0.764 and portfolio return -50.98%. This rejects the specified frozen LINK/Bybit operationalization, not the source strategy generally. No withheld-period result was assessed.
Implementation
Faithful vn.py BollChannel translation on native LINKUSDT Bybit 15-minute bars: CCI sign selects a Bollinger breakout stop, and open positions exit through renewed ATR trailing stops. Platform replays 960 completed observed bars before each evaluation window without orders or scored returns; 100-bar ArrayManager readiness remains. Crossed local stops execute at the next tradable price, represented by the decision close on this continuous venue.
Implements the revised initialization contract exclusively through the registered version-2 evaluation plan: warmup_bars=960 and reset_with_warmup, with no calendar-day preload or 1500-bar requirement. Preserves source defaults, population-standard-deviation Bollinger bands, typical-price CCI, rolling-100-bar TA-Lib-style Wilder ATR, flat-bar extreme resets, CCI sign entry selection and cancel/renew stop sequence. Fixed size one becomes one 10%-equity allocation. Per-position extremes and stop levels are scalar attributes for restart persistence. Futures venue is retained because the source trades both long and short. No performance conclusion is inferred from the prior initialization conflict.
Backtest Review
- Sharpe
- -1.74
- Total return
- -56.57%
- Max drawdown
- 59.30%
- Trades
- 2564
- Win rate
- 33.5%
- Profit factor
- 0.77
The initialization repair permits evaluation: 2,033 closed positions, comprising 977 longs and 1,056 shorts.
Net return is -50.98%, closed-trade PnL is -$51,077.90, profit factor is 0.764 and Sharpe is -1.831.
Average net trade return is -0.3455%, below the 0.15% Bybit review floor. Every reported calendar year loses money.
The contract fixes every parameter; no specific implementation defect supports corrective iteration.
The sampled buy-and-hold curve returns +40.85% with approximately 89.46% drawdown, versus the strategy's -50.98% return and 53.28% drawdown.
Analysis
The Research Lead REVISED this hypothesis because the previous premise did not work. Implement the REVISED hypothesis (see the hypothesis description) from scratch — do not reuse the prior strategy. Revision rationale: The failure establishes a conflicting initialization requirement, not a failed trading premise. Replace literal load_bar(10) and the 1500-bar registration with one executable 960-bar replay contract. Preserve the instrument, venue, parameters and trading mechanism because no performance evidence supports changing them. The requested repair takes precedence over autonomous diversification; portfolio concentration statistics were not supplied.
Iteration History
Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes leverage at 1.0
Wire the 10-day initialization requirement into the framework's historical preloading path, suppress orders during initialization, and retain the separate 100-bar readiness gate. Reconcile the registered 1500-bar evaluation warmup with the hypothesis rather than leaving initialization_days inert.
The hypothesis explicitly requires requesting 10 days of historical initialization while preserving 100-bar ArrayManager readiness. initialization_days is only assigned and never consumed; inherited on_start only subscribes to bars. Instead, evaluation.warmup_bars=1500 makes the framework reserve 15.625 days of fifteen-minute bars without trading. This does not implement the specified historical initialization and changes when trading begins. The pinned source explicitly calls load_bar(10): https://github.com/vnpy/vnpy_ctastrategy/blob/6ef76981624bf55b2ea978f8587f74d633aafc72/vnpy_ctastrategy/strategies/boll_channel_strategy.py.
capability_revision: faithful load_bar(10) initialization requires framework historical preloading for 10 calendar days (960 bars on the complete 15-minute grid). The registered evaluation warmup is 1500; reconcile the research contract and calendar-day preload path before executing this strategy. Strategy code cannot override the registered research plan.
Outcome Summary
Repairing initialization enabled evaluation, but the frozen implementation showed negative expectancy without an identified implementation defect to justify corrective iteration.
Backtest review abandoned it for negative expectancy, citing average net trade return of -0.3455% against the 0.15% review floor. Optimization and later reviews were not reached; no withheld-period result was assessed.
It tested frozen vn.py BollChannel rules on LINK/Bybit 15-minute bars using CCI-directed Bollinger breakout entries, ATR stops and a registered 960-bar warmup.
The supplied backtest reports -56.57% return, -1.745 Sharpe, 2,564 closed trades and 59.30% maximum drawdown. The abandonment review cites a different result set: -50.98% return, -1.831 Sharpe and 2,033 closed positions.
Analysis
BollChannelStrategy
Backtest and paper results are hypothetical. Trading involves risk of loss.