DSL Configuration: Tiers, Time-Based Exits, and Asset Tuning
Updated Jun 9, 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 DSL architecture and phase handoff.
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 DSL troubleshooting).
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 (DSL architecture and phase handoff), 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.
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.
