trailing-stops · git:20261031.0348258 · 2026-10-31 · sha256 750b167ecdf7999a

trailing-stops git:20261031.0348258A

Immutable. This exact content never changes and is served at /api/v1/blob/750b167ecdf7999a.

---
name: trailing-stops
description: |
  Trailing-stop plans that lock in profit on NSE/BSE positions: the R-multiple ladder (hold → breakeven
  at 1R → ATR trail at 2R → structure trail at 3R+), plus ATR, structure, moving-average and
  chandelier trails, with GTT/SL execution realities for Indian brokers. risk.py trail computes
  the recommended ratcheted stop.

  Use when the user asks: "how should I trail my stop", "lock in profits on X", "when to move stop to
  breakeven", "chandelier exit", "protect my gains", "my stock is up 15%, what now", or anything about
  adjusting stops as a trade moves in their favour.
---

# Trailing Stops

Trail to protect open profit while giving the trend room. The stop only moves in the trade's favour.

## Calculator

```bash
python3 ../position-sizing/scripts/risk.py trail --entry 750 --stop 720 --highest-close 845 \
    --atr 14 --swing-low 805 --highest-high 850 --sma20 812 --current-stop 760
```
It reports R gained, the ladder stage, every candidate level, and the recommended stop (never below
`--current-stop`). Get ATR, SMA20/EMA50 and the latest swing low from `ta.py summary`.

## The R-multiple ladder (default)

1R = entry − initial stop.

| Stage | Open profit | Stop rule | Why |
|---|---|---|---|
| Fresh | 0 – 1R | Keep the initial stop | Trailing early gets shaken out by noise |
| Early | ≥ 1R | Move to breakeven (entry; add costs for true breakeven) | The trade can no longer lose money |
| Building | ≥ 2R | Highest close − 1.5 × ATR(14) | Gives room while banking most of the move |
| Runner | ≥ 3R | Below the latest higher low (structure) | Follows the trend's own rhythm |

Take the **highest** qualifying level (the tightest) and never lower it.

## Individual methods

| Method | Rule | Best for |
|---|---|---|
| ATR trail | Highest close − k × ATR (k 1.5 tight / 2 standard / 3 loose) | Trending but volatile stocks |
| Structure | Below each new higher low | Clean stair-step trends |
| MA trail | Daily close below SMA20 (fast) / EMA50 (steady) / SMA200 (positional) → exit | Smooth grinders |
| Chandelier | Highest high − 3 × ATR | Explosive runners, momentum names |
| Partial + trail | Book 30–50% at 2R or the 127.2% Fib, trail the rest | Results-season or event-heavy names |

## Execution in India

- **Update daily after the close** using the official close (30-min VWAP), not intraday wicks.
  Modify the **GTT** for delivery holdings, or re-place the SL each morning because SL orders expire daily.
- For F&O positions, trail on the underlying or futures chart and execute with SL-limit orders.
  Brokers' old bracket/cover orders with trailing are largely discontinued.
- Before **results, Budget or RBI policy days**, tighten to the 1.5 × ATR level or book partial
  profits. A gap can jump past any trail.
- **Tax-aware trailing:** if a delivery position is a few weeks from turning long-term (over 12
  months), a slightly looser trail may be worth it because the tax rate drops from 20% to 12.5%.
  Quantify it with `indian-tax-for-traders`.

## Rules
1. A ratchet: up only (longs), down only (shorts).
2. Evaluate on daily closes; exit in the closing session or at the next open when breached.
3. Don't overtighten: a trail closer than about 1 ATR gets hit by ordinary pullbacks.
4. Choose the method before the trade and stick to it.

## Output

```
Gained: x.xR → stage: [..]
Candidates: breakeven ₹.. | ATR(1.5x) ₹.. | structure ₹.. | chandelier ₹.. | SMA20 ₹..
New stop: ₹S (locks +y.yR) → update GTT trigger ₹S / limit ₹S−b
Next review: after today's close; event risk: [results on dd-mmm]
```