Skip to content
All strategies

Strategies

Turtle Trading Decision System (FMZ #443132 by ChaoZhang, Pine by 李和邪): faithful daily port on LTCUSDT.BINANCE perp, long-short, 20/10 Donchian, 2-ATR stop, 0.5-ATR pyramiding up to 4 units

Outcome: Abandoned

LtcTurtleTradingDecisionSystemLS

Outcome Summary

This strategy was a line-for-line port of the FMZ #443132 Turtle Trading Decision System onto LTCUSDT perpetual daily bars. It kept the source's default parameters and its 0.05%/side fee assumption. Over 3 iterations (the last one only fixed Layer-1.5 config consistency) it never got through verification: the Layer 3 sandbox smoke test went over the 300s limit on a 2400-day window. It was abandoned with no backtest metrics, and the backtest-review, optimization, analyst and risk stages were never reached.

Hypothesis

Line-for-line translation of the FMZ/Pine Turtle Trading Decision System onto our platform. It is a tradeable strategy, not a utility. Venue/instrument: LTCUSDT.BINANCE (Binance USD-M perpetual), 1-DAY bars. The author backtested on 1d bars of Futures_Binance BTC_USDT. Why LTC rather than the author's BTC: BTC already dominates the corpus (44% lifetime, 62% recent), and an ETC Turtle is already in the pipeline. So the same rules run on a liquid, little-used USD-M perp with daily history from 2020-01-10 (~6.7……Show moreShow less

Line-for-line translation of the FMZ/Pine Turtle Trading Decision System onto our platform. It is a tradeable strategy, not a utility. Venue/instrument: LTCUSDT.BINANCE (Binance USD-M perpetual), 1-DAY bars. The author backtested on 1d bars of Futures_Binance BTC_USDT. Why LTC rather than the author's BTC: BTC already dominates the corpus (44% lifetime, 62% recent), and an ETC Turtle is already in the pipeline. So the same rules run on a liquid, little-used USD-M perp with daily history from 2020-01-10 (~6.7 years). The Binance USD-M taker fee (0.05%/side) equals the script's own commission_value=0.05%, so the source's fee assumption is kept exactly. Default parameters exactly as written: Enter Mode='Mode 1'; Mode 1 entry_length=20, exit_length=10; Mode 2 entry_length=55, exit_length=20 (inactive by default); atr_period=14 (ta.atr = Wilder RMA of true range); risk_per_trade=0.02; initial_stop_atr_multiple=2; pyramid_atr_multiple=0.5; max_units=4 (Pine pyramiding=4). The date filter valid_date() always returns true, so the from/to inputs are unused. The highlighter input and all plot/fill code only draw on the chart and are NOT translated. HONESTY NOTE: lesson L167 records that faithful ports of FMZ scripts have died 5 of 5. This one is proposed because the user explicitly asked for a faithful statement. Unlike those ports, this script was written for a 0.05%/side commission on daily bars, the same fee level and decision interval we can reproduce exactly.

The user asked for a faithful statement of the FMZ Turtle script, so every rule and default is kept. The instrument moves off BTC (over 15% share) and off ETC (EtcTurtleDonchianBreakoutLS is already in the pipeline) to LTCUSDT.BINANCE, which has daily data in the catalog from 2020-01-10. It stays on USD-M rather than HL or COIN-M per L168/L172: the signal is price-only, it needs long history, and inverse collateral should be avoided. Long-short adds to the under-represented long_short bucket (15%). Optimization is limited to the source's own structural parameters, with the defaults as baseline.

verification_loop: sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (2400 days of LTCUSDT.BINANCE-1-DAY-LAST-EXTERNAL). 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).

Implementation

Faithful daily port of the FMZ/Pine Turtle Trading Decision System on the LTCUSDT.BINANCE perp. It trades long and short on 20-day Donchian breakouts; in Mode 1 it skips the next breakout after a winning trade. It exits on a 10-day channel break and sets a 2-ATR initial stop. It adds one ATR-risk unit each time price moves 0.5 ATR further, up to 4 units, and resets the stop to the last add price -/+ 2 ATR. Unit = equity*2%/(2*ATR), and total notional is capped at 0.95*equity*leverage.

Iteration 3 fixes only the Layer-1.5 consistency failure. Every fixed key of the research optimization_plan is now declared in parameters with the exact plan value and type: leverage 3.0, max_units 4, atr_period 14, enter_mode, risk_per_trade 0.02, the Mode 2 lengths, pyramid_atr_multiple 0.5 and the baseline_* values. config.leverage = 3.0, and the margin cap reads leverage from parameters.leverage. The tunables entry_length, exit_length and initial_stop_atr_multiple sit at the source defaults (20/10/2.0) inside their plan domains. The code does not clamp them, so no _param_bounds are declared. The parameters were checked against src.optimization.domains.validate_domains. Trading logic is unchanged from the version that passed Layers 1-2. Platform adaptations: Pine's stop= on the entry order is handled as the close-based crossunder/crossover stop the script already evaluates, and orders fill as market orders at the bar close.

Verification Results

sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (2400 days of LTCUSDT.BINANCE-1-DAY-LAST-EXTERNAL). 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).

Iteration History

Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes leverage at 3.0

Outcome Summary

Keep per-bar work O(1) or O(log n) by using incremental indicator state or precomputed arrays, so the strategy passes the sandbox time limit before later iterations go into config-consistency fixes.

It was abandoned at verification after 3 iterations. The Layer 3 sandbox backtest went over the 300s wall-clock limit on a ~20,000-bar window (2400 days of LTCUSDT 1-day bars), and the run ended in a verification_loop / sandbox_timeout. The backtest-review, analyst and risk stages never ran.

A faithful daily port of the FMZ/Pine Turtle Trading Decision System on the LTCUSDT.BINANCE USD-M perpetual: long-short 20/10 Donchian breakouts with a 2-ATR initial stop, 0.5-ATR pyramiding up to 4 units, and 2% risk per trade.

No performance figures exist. The strategy never produced a backtest (the backtest report is empty and there is no optimization report), so it has no return, Sharpe or trade count.

Analysis

海龟交易决策系统|Turtle Trading Decision System

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