Strategies
BTC Trade-Tick Order-Flow Imbalance Continuation (Intraday, Long-Short, Binance USD-M Futures, Sustained Taker-Aggression Signal, Fee-Clearing Targets, Capital-Capped)
Outcome: Abandoned
BtcOrderFlowImbalanceContinuationLS
BTC Trade-Tick Order-Flow Imbalance Continuation (Intraday, Long-Short, Binance USD-M Futures, Sustained Taker-Aggression Signal, Fee-Clearing Targets, Capital-Capped)
Hypothesis
verification_loop: Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, Bars processed: 40279 Diagnostics: should_enter() returned a side 0 times over 40277 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Implementation
BTCUSDT USD-M perpetual, long-short intraday continuation on trade-tick order-flow imbalance. OFI = (taker-buy volume - taker-sell volume) / total aggressive volume over a trailing 60-second window, computed exclusively from aggTrades TRADE TICKS in on_trade_tick() using per-second buckets with O(1) incremental aggregates. Decisions are taken once per 1-minute bar: OFI >= +0.45 with >= 300 aggressive ticks in the window enters LONG, OFI <= -0.45 enters SHORT. Exits on a 0.6% take-profit (~0.5% net of ~0.10% round-trip taker), a 0.35% stop, or a 20-bar time stop. Sizing is 20% of realized equity, hard-capped at 100% notional, leverage 1.0. If no trade ticks arrive, OFI stays 0 and the strategy stands aside - there is no supplementary-stream or OHLCV fallback.
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, Bars processed: 40279 Diagnostics: should_enter() returned a side 0 times over 40277 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Iteration History
Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit. This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, Bars processed: 41450 Diagnostics: should_enter() returned a side 0 times over 41448 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest and paper results are hypothetical. Trading involves risk of loss.