Strategies
Red/Black Three Soldiers Stop-and-Reverse on 15m with 10% Take-Profit, 8% Stop and Ladder Profit Lock: go long on three rising small-upper-wick bull candles, short on three falling small-lower-wick bear candles (port of the FMZ 'naked K' rule, moved from Binance BTC to ETHUSDT.OKX 15-MINUTE, long/short, single leg)
Outcome: Abandoned
EthOkxRedBlackThreeSoldiersReversal15m
Outcome Summary
The Research Lead moved a forum three-soldiers/three-crows stop-and-reverse strategy, which claimed a 77% win rate on BTC, to ETHUSDT.OKX 15m bars, with numeric wick limits and a stepped profit lock. The pattern fired about as often as predicted (~185 positions a year). Even so, the full-history backtest lost 99.5% over 1,493 trades with a Sharpe of -0.87, and the average loss was larger than the average win. Backtest Review abandoned it after one iteration because the per-trade edge was negative even before fees, in both directions and in every year. Optimization, analyst and risk stages were never reached.
Hypothesis
negative_expectancy: The tested version loses money on a reliable sample of 1,245 closed positions. Average trade return is -0.29% against the OKX fee floor of +0.15%, profit factor is 0.76, total return is -99.2% and every year from 2019 to 2025 is negative. The loss holds before fees (about -0.19% gross per trade) and in both the long and short arms. Optimization cannot lift an edge that is negative before costs, and the only tunables are the two wick limits. QA's advisory concern about a thin margin is borne out, and the result is worse than thin: it is negative. The fixed 10% take-profit, 8% stop and ladder rule do not produce a favourable payoff ratio (average loss $603 vs average win $557). This rejects the Research Lead's operationalization: ETHUSDT.OKX 15m, 25%/15% wick limits and a 2.5% ladder. It does not reject the source author's BTC claim as such, although the author's own 2020-2022 window also loses here. No conclusion is drawn about the withheld holdout.
Implementation
Stop-and-reverse port of the FMZ red/black three-soldiers naked-K rule on ETHUSDT.OKX 15m. Bull pattern = three consecutive bullish bars, each close above the previous close, each upper wick <= upper_wick_max (25%) of its range and the third <= third_wick_max (15%); bear pattern = mirror with lower wicks. Bull pattern closes any short and opens a long, bear closes any long and opens a short (the reversal entry is submitted from on_position_closed once the close fills, never as a simultaneous close+open pair). Each position gets an intrabar reduce-only 8% stop, a reduce-only 10% take-profit limit, and a ladder profit lock: when the bar high (long) / low (short) first reaches k x 2.5% favourable (k>=2), the stop is moved to entry +/- (k-1) x 2.5% (crossed-policy market if price already passed it). Size = 100% of equity x leverage(1x) / price, margin-capped by _submit_entry. Decisions at the third bar's close fill at that close (use_equivalent for next-bar-open on a 24/7 venue).
Implements the hypothesis as written: source pattern definitions with the Research Lead's numeric wick limits (each bar <= upper_wick_max, third bar <= min(third_wick_max, upper_wick_max)), stop-and-reverse, fixed 8% SL / 10% TP as intrabar platform stops (intrabar_stop supported), ladder lock in 2.5% steps anchored to the entry fill price, 1x equity sizing (risk route (b): signal/stop exits with position <= equity). Next-bar-open fill uses the registry equivalent (market order at the signal bar's close). Signal is continuous: inside (-1,1) it is the mean signed body/range of the last three bars; when a pattern holds it is +/-(1 + 3-bar % move), and should_enter/should_exit threshold at +/-1. All per-position state (entry price, direction, ladder level, stop level, pending reverse side) and the last four bars' OHLC are scalar attributes for restart persistence. _param_bounds not declared because no parameter is clamped. Tunables per the optimization plan: upper_wick_max, third_wick_max; leverage, stop_loss_pct, take_profit_pct, ladder_step_pct, position_fraction fixed.
Verification Results
Acceptable as is. A fully intrabar ladder would need tick data or a pre-placed next-level trigger. No change is required.
The ladder lock is evaluated after each bar closes, using that bar's high (long) or low (short). The new stop is then placed with crossed_policy='market'. Suppose a bar's high reaches +5% but it closes below +2.5%. The lock stop is already crossed when placed, so the position exits at that bar's close instead of at +2.5% intrabar. This uses no future data and is conservative (it is never better than the true intrabar lock), but it understates the ladder's protection on reversal bars. The 8% stop and 10% TP do rest intrabar from the entry fill.
None needed.
min_bars_required() is overridden to 10. This is deliberate, because the pattern needs only 4 bars, and it matches the contract's warmup_bars=10. Note that calculate_signal is not called on the first 9 primary bars, so the rolling 4-bar window fills only from bar 10 onward. This is harmless.
The reversal entry is submitted from on_position_closed, using _last_bar_obj and c3 as the decision bar. In the backtest the exit fills during the same event, so the reversal fills at the same close. In paper, the close fill arrives later and the reversal is sized from the decision bar's close. This is fine. Restart persistence of reverse_side is advisory only.
This runs about 180 flips a year at 100% of equity on 15m bars. The margin is thin: the hypothesis's own fee arithmetic gives an edge of only about 2.5x the ~0.10% taker round trip. The author's 77% win rate and 12x return (BTC, 2020-2022) are unverified. Exits that close at the 15m close after a ladder trigger was crossed intrabar give up some of the locked profit. On the full backtest, check average trade return net of fees and how outcomes split between pattern-reversal, stop, TP and ladder exits.
Backtest Review
- Sharpe
- -0.87
- Total return
- -99.51%
- Max drawdown
- 99.60%
- Trades
- 1493
- Win rate
- 45.5%
- Profit factor
- 0.76
The pattern fires about as often as the hypothesis predicted: 1,245 closed positions over the development period (~185 a year against the ~180 predicted), with 651 longs and 594 shorts. The stop-and-reverse code works and the sample is reliable.
Input audit is clean: no missing or duplicate bars, and funding is credited.
Average trade return is -0.29% of notional, against the OKX fee floor of +0.15%. Adding back the ~0.10% taker round trip still leaves the gross per-trade edge at about -0.19%, so the edge is negative before fees, not just consumed by them.
Profit factor is 0.76, expectancy is -$79.7 per trade, and the result is -99.2% with a 99.5% drawdown. Sharpe is -0.96, and the Sharpe confidence interval (-1.77 to -0.06) sits entirely below zero.
Both arms lose: the long win rate is 46.2% and the short win rate is 43.9%, while the average loss ($603) is larger than the average win ($557). The 10% take-profit and ladder lock do not create the win/loss asymmetry the hypothesis relied on.
Every calendar year from 2019 to 2025 is negative, including the author's own 2020-2022 window (2020 -73%, 2021 -78%, 2022 -8%). This contradicts the source's claimed 77% win rate and 12x return on that period, although on ETH rather than BTC.
Outcome Summary
A candlestick rule whose edge is negative before fees, here on both sides and in every year, cannot be saved by tuning wick limits or by fixed take-profit, stop and ladder exits. The win/loss asymmetry such exits are meant to create should be checked early, before anyone relies on it.
Backtest Review voted abandon for negative expectancy. On the development sample of 1,245 positions the average trade was -0.29%, about -0.19% gross before fees, against a +0.15% OKX fee floor. Both the long and short sides lost, and every year from 2019 to 2025 was negative, including the author's own 2020-2022 window. Optimization and later stages were never run.
A port of the FMZ 'red/black three soldiers' naked-K rule to ETHUSDT.OKX 15m: go long after three rising bull candles with small upper wicks and short after three falling bear candles with small lower wicks (stop-and-reverse), using a 10% take-profit, an 8% stop and a 2.5% ladder profit lock at 1x equity.
The full-history backtest (2019-12 to 2026-10) lost 99.5% over 1,493 closed positions. Sharpe was -0.87 (CI -1.64 to -0.05), average trade return -0.26% of notional, profit factor 0.76, win rate 45.5% and max drawdown 99.6%. The signal-research diagnostic found no information (IC -0.011, t=-0.39).
Analysis
策略:红黑三兵K线形态(裸K)策略回测详解
Backtest and paper results are hypothetical. Trading involves risk of loss.