Install
$ agentstack add skill-agiprolabs-claude-trading-skills-exit-strategies ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Exit Strategies
Entries are easy, exits are everything. A mediocre entry with a disciplined exit will outperform a perfect entry with no exit plan. This skill covers systematic, rule-based exit methods for crypto and Solana token trading.
Why Exits Matter
- Entries determine if you participate. Exits determine how much you keep.
- Most traders spend 90% of effort on entries and 10% on exits — invert this.
- Without defined exits you rely on emotion, which guarantees inconsistency.
- Every trade should have three exits defined before entry: stop loss, take profit,
and trailing stop.
Exit Categories
1. Stop Loss — Risk Management Exits
Predefined price level where you close the position to cap downside.
| Method | Description | Best For | |--------|-------------|----------| | Fixed percentage | Exit at entry − X% | Simple setups, beginners | | ATR-based | Entry − ATR(14) × multiplier | Volatility-adaptive | | Support level | Below nearest swing low | Technically defined risk | | Maximum loss | Absolute SOL/USD cap | Account protection |
ATR-based stop (recommended default):
import pandas_ta as ta
atr = df.ta.atr(length=14)
stop_loss = entry_price - (atr.iloc[-1] * 2.0) # 2x ATR below entry
Multiplier guide:
- 1.5× — Tight. High win rate needed. Good for scalps.
- 2.0× — Standard. Balances noise filtering with risk.
- 3.0× — Wide. For swing trades in volatile conditions.
See references/stop_loss_methods.md for complete methodology.
2. Take Profit — Target Exits
Predefined levels where you lock in gains.
Fixed risk/reward targets:
risk = entry_price - stop_loss_price
tp_2r = entry_price + (risk * 2) # 2:1 R:R
tp_3r = entry_price + (risk * 3) # 3:1 R:R
tp_5r = entry_price + (risk * 5) # 5:1 R:R
Scaled exit framework (recommended for meme/PumpFun tokens):
| Tranche | Size | Target | Action After | |---------|------|--------|--------------| | 1 | 25% | 2× risk | Move stop to breakeven | | 2 | 25% | 3–5× risk | Trail remainder | | 3 | 25% | 5–10× risk | Tighten trail | | 4 | 25% | Trailing stop | Moonbag — let it ride |
Market cap milestone exits:
For PumpFun and meme tokens where R:R ratios are less meaningful:
milestones = [
{"mcap": 50_000, "sell_pct": 0.25, "label": "Cover cost"},
{"mcap": 100_000, "sell_pct": 0.25, "label": "Lock profit"},
{"mcap": 500_000, "sell_pct": 0.25, "label": "Major profit"},
# Hold 25% as moonbag with trailing stop
]
See references/take_profit_strategies.md for full methodology including Fibonacci extension targets and volume-based exits.
3. Trailing Stop — Trend-Following Exits
Dynamic stops that follow price upward but never move down.
Percentage trailing:
def percentage_trailing_stop(
current_price: float,
highest_since_entry: float,
trail_pct: float = 0.10,
) -> tuple[float, bool]:
"""Return (stop_level, triggered)."""
highest = max(highest_since_entry, current_price)
stop = highest * (1 - trail_pct)
return stop, current_price float:
"""Highest high over lookback minus ATR * multiplier."""
highest_high = max(highs[-lookback:])
return highest_high - (atr_value * multiplier)
EMA trailing:
# Exit when close max_hold_bars and current_pnl 70:
exit_reason = "rsi_overbought"
# MACD crossover exit
macd = df.ta.macd()
if macd["MACDs_12_26_9"].iloc[-1] 0.90:
# Near graduation — decide: hold through or exit before
# Graduation creates volatility spike, both up and down
pass
if bonding_fill_pct 300: # 5 min
exit_reason = "stalled_bonding_curve"
Volume Decay Exits
buy_vol_1m = get_buy_volume(token, "1m")
buy_vol_5m = get_buy_volume(token, "5m") / 5 # Normalize to per-minute
if buy_vol_1m ATR trailing > Take profit > Time stop.
The hard stop is always active and never overridden. The ATR trailing stop activates
after the first take-profit tranche fills. The time stop only fires if the trade is
not yet profitable.
## Common Exit Mistakes
| Mistake | Problem | Fix |
|---------|---------|-----|
| No stop loss | Unlimited downside | Always define max loss before entry |
| Moving stops wider | Increases risk after the fact | Never move stops away from price |
| Not taking profits | Winners become losers | Use scaled exits |
| All-or-nothing exits | Leaves money on the table or exits too early | Scale out in tranches |
| Round-number stops | Cluster with other traders, get hunted | Offset by small random amount |
| Too-tight stops | Stopped out by normal volatility | Use ATR-based stops |
| Hoping instead of trailing | Gives back profits | Activate trail after first TP |
| Ignoring liquidity | Cannot exit at intended price | Check spread and depth before sizing |
## Integration with Other Skills
- **`position-sizing`** — Size the position based on the stop loss distance.
`position_size = (account_risk * account_balance) / (entry - stop_loss)`
- **`risk-management`** — Exits are the mechanism that enforces risk limits.
- **`pandas-ta`** — Use ATR, EMA, RSI, MACD for signal-based and trailing exits.
- **`slippage-modeling`** — Estimate execution cost of the exit to set realistic targets.
- **`liquidity-analysis`** — Verify exit liquidity before entering a position.
## Files
### References
- `references/stop_loss_methods.md` — Complete stop loss methodology and anti-patterns
- `references/take_profit_strategies.md` — Scaled exits, R:R targets, Fibonacci extensions
- `references/trailing_stops.md` — Trailing stop implementations and parameter guidance
### Scripts
- `scripts/exit_simulator.py` — Simulate and compare exit strategies on synthetic price data
- `scripts/stop_loss_calculator.py` — Calculate stop levels, position sizes, and R:R targets
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [agiprolabs](https://github.com/agiprolabs)
- **Source:** [agiprolabs/claude-trading-skills](https://github.com/agiprolabs/claude-trading-skills)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.