Exit policy
Together with Entry policy and Trade levels, this is the strategy Policy trio: when to enter, where levels may sit, how the stop moves after fill.
Exit policy is post-entry protection — how the stop moves after a fill. It is authored on the strategy, then materialized onto every bound agent at bind and on each strategy propagation.
Agents do not own a separate exit-policy editor. Change the playbook; every agent on it follows.
There is no umbrella on/off. Each mechanism has its own arm switch. A new strategy ships with all four armed (balanced defaults) so a live position is never unmanaged by accident.
R means the position’s own initial risk: distance from entry fill to the setup’s signal stop. One setting behaves the same on a tight stop and a wide one.
Quick map
| Mechanism | One line | Default |
|---|---|---|
| Break-even | Move stop to entry once ahead by the arm distance | On · arm 1.08R |
| Trailing | Stop follows the best price once engaged | On · engage 1.0R · giveback 45% · buffer 0.25% |
| Time decay | Squeeze stalled trades after a grace period | On · grace 60m · interval 15m · tighten 5% · max 50% · stale below 25% TP |
| Soft stop | Exit on strategy-bar close beyond the setup’s own stop | On |
Hard stop (exchange protective order) and agent Risk management still bound loss size. Soft stop sits inside that hard stop.
Break-even
Moves the stop to entry (plus a live per-coin slippage allowance) once the trade has run far enough in its favour. Fires at most once; never loosens the stop.
| Dial | Meaning | Typical range | Default |
|---|---|---|---|
| Arm at | Favourable excursion that arms BE, in R | 0.5–2.0 | 1.08 |
Example. Risk $2 per unit (1R). Arm 1.08R → once price is ~$2.16 in favour, stop locks near flat. At 0.5R you protect sooner (more noise stops); at 2.0R many trades never arm.
Off → winners can round-trip to a full original loss.
Trailing
Once engaged, the stop follows the best price seen and only ratchets toward the target. Works with break-even — the tightest floor any armed mechanism proposes is what binds.
| Dial | Meaning | Notes | Default |
|---|---|---|---|
| Engage at | Favourable excursion before trailing starts (R) | 0 = trail from first favourable tick (tightest) | 1.0 |
| Giveback | How far behind the extreme, as % of take-profit distance | Floored at 1 ATR; trail > ~70% of TP distance reports inactive | 45 |
| Buffer | Min improvement over last qualified extreme before another reprice | Throttles 1s observer noise | 0.25 |
Example. Engage 1.0R, giveback 45%. Trade runs toward TP; trail sits 45% of the TP distance behind the extreme (never inside one ATR). A deep pullback exits with part of the run kept — not the whole move given back.
Time decay
Acts on the absence of progress. After grace, if the trade is still below the stale threshold, the stop tightens every interval — up to a max share of the original stop distance.
| Dial | Meaning | Default |
|---|---|---|
| Grace | Minutes from fill before decay can start | 60 |
| Interval | Minutes between squeeze steps | 15 |
| Tighten | % of the remaining stop→price gap closed each step | 5 |
| Max tighten | Cap on cumulative reclaim of original entry→stop distance | 50 |
| Stale below | Below this % of entry→TP progress, the trade counts as stalled | 25 |
Example. Grace 60m, stale below 25%. An hour in and only 10% of the way to TP → every 15m the stop closes 5% of the remaining gap, until it has reclaimed at most 50% of the original risk. A trade already 30% to TP is left alone by decay.
Break-even and trailing can still move the stop further; max tighten only caps decay.
Soft stop (decision-invalidation exit)
Product name in Policy UI: Soft stop. Wire / materialization name: decisionInvalidationExitEnabled.
Exits when a strategy-timeframe candle closes on or beyond the setup’s own stamped invalidation (the thesis stop from construction). An intrabar wick through that level does nothing — the hard stop already covers the touch case.
| Dials | Toggle only — level is stamped per decision at entry |
| Default | On (true) — zero-authoring backstop so a strategy with no exit conditions still has a thesis-death trigger |
| Off means | Relieves only this stamped close trigger — brackets, exit conditions, BE / trail / decay stay as authored |
Example. Soft stop on, hard stop wider. Bar closes through the setup stop → full exit inside the hard-stop loss bound. Soft stop off → only hard stop / other exits govern.
Dial ranges (authored)
Bounds from the strategy dial contract — editor and save share one grid:
| Dial | Min | Max | Step | Default |
|---|---|---|---|---|
| Break-even arm (R) | 0.5 | 2.0 | 0.01 | 1.08 |
| Trailing engage (R) | 0 | 2.0 | 0.01 | 1.0 |
| Trailing giveback (%) | 25 | 55 | 1 | 45 |
| Trailing buffer (%) | 0.01 | 1.0 | 0.01 | 0.25 |
| Time-decay grace (min) | 5 | 1440 | 5 | 60 |
| Time-decay interval (min) | 5 | 480 | 5 | 15 |
| Time-decay tighten (%) | 0.5 | 50 | 0.5 | 5 |
| Time-decay max tighten (%) | 1 | 100 | 1 | 50 |
| Time-decay stale below (% TP) | 0 | 100 | 1 | 25 |
Trailing engage 0 is the trail-from-entry sentinel (tightest). Soft stop has no numeric dial.
Trailing also floors giveback distance at 1 × ATR and treats a trail farther than ~70% of TP distance as inactive.
How the mechanisms interact
- Soft stop — thesis death on confirmed close (optional).
- Break-even — remove downside once ahead.
- Trailing — lock in run progress.
- Time decay — reclaim risk when price goes nowhere.
Highest (for longs) / tightest proposed floor wins. Journal tags: BREAK_EVEN, TRAILING, TIME_DECAY.
Scenario sketches
| Intent | Exit-policy sketch |
|---|---|
| Balanced new strategy | Keep defaults (all four on) |
| Let winners breathe | Trailing giveback toward 55; BE arm 1.0R+ |
| Kill dead money fast | Shorter grace / higher tighten; keep soft stop on |
| Minimal management | Disarm trailing + decay; keep soft stop + BE — or accept unmanaged risk deliberately |
Ownership
| Layer | Owns exit policy? |
|---|---|
| Strategy | Yes — author and revise here |
| Agent | No — binds a strategy; mid-trade keeps the snapshot from bind / propagation |