sailfish-strategy
๐ SAILFISH v1.0.0 โ Relative-Strength Rotator (Crypto Majors)
Always hold the strongest major. Sailfish ranks BTC/ETH/SOL/HYPE by ~2.7-day relative strength every tick and longs the leader. When the held position eventually exits via the DSL trail, the next tick re-evaluates โ and that's the rotation.
Why this strategy exists
Chameleon trades mean-reversion between paired majors (when ratios stretch, they revert). Sailfish trades the momentum half of relative strength โ when one major is decisively outperforming the others, leadership tends to extend. The fleet had no momentum-rotation agent; Sailfish fills it.
CRITICAL RULES
RULE 1: Relative strength is the rank, not the threshold
Each tick the producer computes % change over rsLookbackBars ร 4h per asset, sorts descending. The top of the list is the candidate โ but candidacy alone isn't enough (see Rule 2).
RULE 2: Two gates protect against whipsaw
- Leader RS gate: the leader's own RS must be
>= minLeaderRsPct(default 1.0%). A flat or negative leader (everyone's down) is no leader at all. - Margin gate: leader must beat the runner-up by
>= leaderMarginPct(default 1.5pp). A 0.2pp lead is whipsaw bait โ Sailfish stays out.
RULE 3: "Rotation" via DSL exit + re-entry
The runtime is single-position. The producer never closes. So when leadership changes while we hold the old leader, Sailfish does nothing immediately โ the existing position's DSL trail (max_loss, retrace, weak_peak_cut at 8h/3%) eventually exits the stalled holdover, and the next tick re-evaluates. If the new leader still clears the gates, Sailfish enters it. This is intentional: rotating mid-position would mean trading taker-on-taker on every leadership change, paying spreads + fees for whipsaw. DSL-mediated rotation only fires when the old leader is genuinely done.