DSL Configuration: Tiers, Time-Based Exits, and Asset Tuning
Updated May 22, 2026 · 1 min read
Configure DSL trailing stop tiers, time-based exits, and per-asset timing, and edit exit parameters on active positions.
This article covers what to put in the exit: block of your strategy YAML. For the architecture and Phase 1/Phase 2 split, see article 23.
Tier defaults
DSL tiers define when the trailing stop-loss floor moves up. The floor only moves up, never down. If the price reverses and hits the floor, the position closes at a profit.
| Tier | Trigger ROE | Locks % of high-water | Floor |
|---|---|---|---|
| 1 | 5% | 25% | 1.25% |
| 2 | 10% | 45% | 4.5% |
| 3 | 15% | 65% | 9.75% |
| 4 | 20% | 80% | 16% |
| 5 | 30% | 90% | 27% |
Tier breakpoints are trigger_pct + lock_hw_pct pairs in the strategy YAML under phase2.
Time-based exits (Phase 1). Three exits, all tunable per asset:
- Hard timeout
- closes the position after a maximum hold time regardless of performance.
- Dead weight cut
- closes positions that are not moving (sitting near entry with no momentum).
- Weak peak cut
- closes positions that reached a small peak but stalled.
Configured at the preset root. Field names matter: use phase1MaxMinutes not hardTimeoutMinutes, deadWeightCutMin not deadWeightCutMinutes (see article 25).
Asset-speed tuning
Timing should match how fast the asset moves. Too-short timers on slow movers like BTC kill positions before trends develop.
| Asset class | Hard timeout | Dead weight | Weak peak |
|---|---|---|---|
| BTC | 360 min | 90 min (or off) | 120 min |
| ETH / SOL | 240 min | 60 min | 90 min |
| HYPE / alts | 180 min | 30-45 min | 60 min |
| Micro-alts | 120 min | 20-30 min | 45 min |
Phase 1 loss-protection fields (separate from tiers): max_loss_pct, retrace_threshold, consecutive_breaches_required.
Mid-flight tier editing
With the backend Ratchet Stop service (article 23), yes - use editDslPosition (or ratchet_stop_edit) to modify tier config on an active position. The backend recomputes the floor and updates the exchange stop-loss immediately. With the local plugin runtime only (no backend), tiers are baked at position open time and cannot be changed mid-flight.
Runtime source
Browse the DSL configuration in the runtime.
Related articles
DSL Troubleshooting and State Validation
Check active status, core state fields, and field naming to fix broken DSL, and confirm a zero-trade agent is actually running.
DSL / Ratchet Stop: Architecture and Phase Handoff
How the DSL/Ratchet Stop engine runs loss protection then profit trailing, and hands off to the backend so positions stay protected offline.
