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
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.