Strategies
BTC COIN-M Inverse-Perp Donchian Breakout Trend System, Long-Short (BINANCE_CM BTCUSD_PERP, Daily Bars, 55-Day Channel + 200-Day Regime Filter + ATR Trailing Stop, Pure OHLCV, BTC-Denominated Returns, 3-Parameter)
Outcome: Abandoned
BtcCoinMDailyDonchianRegimeTrendLS
Clean, faithful daily Turtle implementation with correct inverse-contract sizing; low drawdown (8%) and low fee drag (commission 3.75% of gross)
Hypothesis
Implementation
Long-short Turtle-style Donchian breakout trend system on the BTC COIN-M inverse perpetual (BTCUSD_PERP.BINANCE_CM), DAILY bars, pure OHLCV. A 55-DAY Donchian channel computed over the prior bars (current bar excluded) provides the breakout trigger; a 200-DAY close SMA is a directional regime gate so longs are taken only above it and shorts only below it; the exit is a chandelier ATR trailing stop at atr_mult x ATR(20) from the best close since entry, with no fixed target so winners can run. The book is discrete and single-position (entered once, held, exited once) with no per-bar rebalancing. Sizing is inverse-correct: an integer count of fixed-$100-face COIN-M contracts derived from a 2%-of-equity risk budget over the initial ATR stop distance, capped at 75% of equity in gross notional, giving a BTC-denominated return stream.
Verification Results
None — deque maxlen already bounds them.
Static analyzer flagged unbounded growth on self._closes/_highs/_lows .append(). False positive: all three are deque(maxlen=...), so they self-trim.
Backtest Review
- Sharpe
- 0.27
- Total return
- 7.66%
- Max drawdown
- 8.00%
- Trades
- 36
- Win rate
- 47.2%
- Profit factor
- 1.26
Clean, faithful daily Turtle implementation with correct inverse-contract sizing; low drawdown (8%) and low fee drag (commission 3.75% of gross)
Genuinely low degrees of freedom (3 params) and the short leg gives some bear participation
Below-floor per-trade edge: avg_trade_return_pct 0.030% — well under the ~0.10% COIN-M round trip (L22 disqualifier)
Essentially flat: CAGR 0.88%, total_return 7.66% over 5.8 years; the regime+trail gating leaves almost no edge
Thin sample: only 36 trades over 5.8 years — below the ~100 floor, and the last-20% holdout cannot reach the hard >=10-trade gate (the developer's sibling notes this is unreachable by construction on the daily clock)
No significance: Sharpe 0.27 (CI [-0.52, 1.07] straddles zero), alpha +0.0031 (nil), information_ratio -0.86; headline leans on one day (2024-12-29 +7.1%, kurtosis 18.5)
Recent regime negative (2025 -1.6%, 2026 -0.96%); stressed-vol tercile negative (Sharpe -0.44). COIN-M directional-OHLCV trend family with no survivors
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSD_PERP.BINANCE_CM-4-HOUR-LAST-EXTERNAL, Bars processed: 12635 Diagnostics: calculate_signal() was never evaluated (0 evaluated bars) -> min_bars_required() = 605 but only 12635 primary bars were available in the smoke window -> the warm-up can never complete here; lower the lookback/warm-up requirement or use a shorter bar type. Do NOT loosen entry thresholds — the entry logic never ran. Ensure your strategy produces trades with the given data and parameters.
Backtest and paper results are hypothetical. Trading involves risk of loss.