agentleFS
Nunchi-tradeNunchi-trade/agent-cli/skills/guard/SKILL.md

guard-trailing-stop

Skill521 starsChanged 7 months agoMITView on GitHub

Guard — two-phase ROE-based trailing stop system for Hyperliquid perps. Phase 1 lets the trade breathe with wide retrace and patient breach counting. Phase 2 locks profit through configurable tier ratcheting with per-tier retrace overrides. Supports LONG and SHORT, hard/soft breach decay, stagnation take-profit, and preset configs. Use when protecting an open position, setting trailing stops, or automating profit-locked exits.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All triggers use ROE (Return on Equity): PnL / margin * 100.

    line 40
  2. Distinctive:

    ALWAYS attach Guard to every open position — unprotected positions are unacceptable

    line 140
  3. Distinctive:

    NEVER override a CLOSE signal — if Guard says close, close immediately

    line 141
  4. Distinctive:

    ALWAYS use the correct direction (long/short) — wrong direction inverts all logic

    line 142
  5. Distinctive:

    ALWAYS verify entry price and leverage are correct before starting

    line 145
  6. Distinctive:

    Running without leverage parameter: Default leverage (10x) may not match your actual leverage — incorrect ROE calculation — wrong tier …

    line 170

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Guard Trailing Stop

Two-phase ROE-based trailing stop that protects profits on Hyperliquid perp positions.

How It Works

Phase 1: "Let It Breathe"

  • Wide retrace (3% default) from high-water mark
  • Patient: requires 3 consecutive breach checks before close
  • Absolute price floor caps max loss
  • Goal: don't get shaken out before the trade develops

Phase 2: "Lock the Bag"

  • Tight retrace (1.5% default, per-tier overrides)
  • Quick exit: 1-2 breaches to close
  • ROE-based tier ratcheting — profit floors never go backward
  • Per-tier retrace tightens as profit grows

ROE-Based Tiers

All triggers use ROE (Return on Equity): PnL / margin * 100. At 10x leverage, 1% price move = 10% ROE.

Usage

Standalone — Guard an existing position

hl guard start ETH-PERP \
  --entry 2500.0 \
  --size 1.0 \
  --direction long \
  --leverage 10 \
  --preset tight \
  --tick 5

Composable — Attach to any strategy

# config.yaml
strategy: avellaneda_mm
instrument: ETH-PERP
tick_interval: 10.0
guard:
  enabled: true
  preset: tight
  leverage: 10.0
hl run avellaneda_mm --config config.yaml

Presets

PresetTiersStagnation TPUse Case
moderate6 (10/20/30/50/75/100% ROE)NoStandard trades
tight4 (10/20/40/75% ROE)Yes (8% ROE, 1hr)Aggressive protection

Module API

from modules.trailing_stop import TrailingStopEngine, GuardAction
from modules.guard_config import GuardConfig, PRESETS
from modules.guard_state import GuardState

config = PRESETS["tight"]
config.leverage = 10.0
config.direction = "long"

engine = TrailingStopEngine(config)
state = GuardState.new("ETH-PERP", entry_price=2500.0, position_size=1.0, direction="long")

result = engine.evaluate(price=2520.0, state=state)
# result.action: GuardAction.HOLD | .CLOSE | .TIER_CHANGED
# result.state: updated state (persist this)
# result.roe_pct, result.effective_floor, result.reason

Configuration Reference

ParameterDefaultDescription
directionlongPosition direction: long or short
leverage10.0Position leverage (used in ROE calc)
phase1_retrace0.03Phase 1 retrace from high-water (3%)
phase1_max_breaches3Consecutive breaches before Phase 1 close
phase1_absolute_floor0.0Hard price floor (0 = disabled)
phase2_retrace0.015Default Phase 2 retrace (1.5%)
phase2_max_breaches2Default breaches in Phase 2
breach_decay_modehardhard (reset to 0) or soft (decay by 1)
stagnation_enabledfalseEnable stagnation take-profit
stagnation_min_roe8.0Min ROE% for stagnation trigger
stagnation_timeout_ms3600000HW stale time before stagnation close (1hr)

Tier Format

tiers:
  - trigger_pct: 10.0    # Activate at 10% ROE
    lock_pct: 5.0         # Lock 5% ROE as floor
  - trigger_pct: 20.0
    lock_pct: 14.0
    retrace: 0.012        # Per-tier retrace override (1.2%)
    max_breaches: 1       # Per-tier breach count override

Direction Reference

ConceptLONGSHORT
ProfitPrice upPrice down
ROE(price-entry)/entry * lev * 100(entry-price)/entry * lev * 100
High waterHighest priceLowest price
Tier floorentry * (1 + lock/100/lev)entry * (1 - lock/100/lev)
Trailing floorhw * (1 - retrace)hw * (1 + retrace)
Effective floormax(tier, trailing)min(tier, trailing)
Breachprice <= floorprice >= floor

Agent Mandate

You are the Guard trailing stop guardian. Your job is to protect profits and limit losses on open positions. You never make entry decisions — you only manage exits via a two-phase trailing stop system.

RULES:

  • ALWAYS attach Guard to every open position — unprotected positions are unacceptable
  • NEVER override a CLOSE signal — if Guard says close, close immediately
  • ALWAYS use the correct direction (long/short) — wrong direction inverts all logic
  • Let Phase 1 breathe — do not panic on early retrace within 3% threshold
  • In Phase 2, trust the tier system — floors only ratchet up, never down
  • ALWAYS verify entry price and leverage are correct before starting

Decision Rules

ConditionAction
Guard returns CLOSEClose position immediately — no hesitation
Guard returns TIER_CHANGEDLog the new tier — no action needed, floors auto-ratchet
Guard returns HOLDDo nothing — position is healthy
ROE > 10% and still Phase 1Normal — Phase 2 triggers at first tier (usually 10% ROE)
Breach count incrementing but no closePhase 1 patience — 3 consecutive breaches needed
Stagnation timer triggeredClose — profit is stale, capital better deployed elsewhere
PresetWhen to Use
moderateStandard trades, medium hold time, balanced protection
tightAggressive protection, short holds, includes stagnation TP
CustomOnly when you understand all tier parameters — test with mock first

Anti-Patterns

  • Using tight preset on trending assets: Tight stops exit too early on strong trends. Use moderate for trend-following strategies.
  • Wrong direction parameter: Setting direction=long on a short position means Guard will hold losses and exit winners. Always double-check.
  • Overriding CLOSE signals: "It'll come back" — it won't. Guard computed the exit. Trust it.
  • Starting Guard after the move: Guard needs accurate entry price. Starting Guard at current price when entry was 2% ago means the trailing is wrong.
  • Running without leverage parameter: Default leverage (10x) may not match your actual leverage — incorrect ROE calculation — wrong tier triggers.

Error Recovery

ErrorCauseFix
No position foundPosition already closed or wrong instrumentCheck hl status for actual positions
Guard state staleProcess crashed mid-tickRestart Guard — state file preserves last known state
Negative ROE but no closeStill in Phase 1 toleranceNormal if within 3% retrace. Hard stop at -5% ROE is separate
Tier jumped from 1 to 4Fast price move between ticksNormal — tiers are checked sequentially but can skip

Composition

Guard is a sub-component of APEX (runs every tick per active slot). Can also be used standalone to guard any position. When used with APEX, Guard states are managed automatically. When used standalone, you must provide entry price, size, direction, and leverage.

Cron Template

# Guard is typically long-running (attached to a position), not cron-scheduled.
# Start manually when opening a position:
hl guard start ETH-PERP --entry 2500 --direction long --leverage 10 --preset moderate --tick 5

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.