Skip to content

research(exits): partial exits against the live trailing exit (#584) - #654

Merged
iAmGiG merged 1 commit into
developmentfrom
research/partial-exits-584
Nov 1, 2026
Merged

iAmGiG merged 1 commit into
developmentfrom
research/partial-exits-584

Conversation

@iAmGiG

@iAmGiG iAmGiG commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Measures the three designs in #584 against the live evening-only trailing exit. Research only: the routines, the CLI and PartialExitManager are untouched.

Result

No design beats the live exit by more than noise. Nothing survives correction: 216 tests, Holm 0, BH 0; pooled with the GEX, #539 and #623 families (723 tests), Holm 0, BH 0.

Sharpe difference from the baseline. SELL exits off, moderate sizing, 5 bps, 2009 to 2026-10-09; baseline 0.808 [0.334, 1.291].

First target D1h D1x D2 D3
+4% +0.062 [-0.284, +0.434] +0.049 [-0.111, +0.209] +0.054 [-0.037, +0.151] -0.013 [-0.109, +0.088]
+5% +0.152 [-0.194, +0.519] +0.078 [-0.079, +0.248] +0.045 [-0.045, +0.137] -0.022 [-0.116, +0.076]

D1h and D1x are design 1 (shrink the stop), with unprotected shares left resting or sold at the next open. D2 is software targets. D3 is per-tranche orders.

  • With SELL exits off, CAGR is below the baseline in all 24 full-period rows. At +4% it is 0.36 to 0.88 pp lower, and P&L on $100k falls from $58,497 to between $36,048 and $48,967.
  • D1h's Sharpe is not trustworthy: 393 of 784 planned positions ended with shares and no stop, held 64 days on average.
  • The full-period differences are stable when any one symbol is left out; the dollar loss sits mostly in the big winners.

Changes

  • src/backtesting/live_rules_sim.py: PartialPlan, LiveRules.partial, stop_slip_bps, stop_slip_gap_only, all off by default.
  • scripts/research/partial_exits.py: the runner.
  • scripts/research/multiple_testing_audit.py and its YAML: a Partial exits, design 2: opt-in software targets sold by the routines #584 family.
  • docs/08_research/03_strategy_research/partial_exits.md and results/.

Checks

The unchanged #539 runner reproduced its committed JSON (timestamp aside), and the #539 modes match in all 243 compared blocks after the simulator change. New tests use hand-built bars, covering each design's fills, look-ahead and default-off identity.

Refs #584

…designs (#584)

Optional PartialPlan in live_rules_sim (design 1 shrink the stop, 2 software
targets, 3 per-tranche orders), optional stop slippage; the #539 modes are
unchanged (243 blocks identical to the committed results). New runner
scripts/research/partial_exits.py, results and write-up, and the #584 family
in the multiple-testing audit (216 tests: Holm 0, BH 0). Tests on hand-built
bars for the fill rules of all three designs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@iAmGiG
iAmGiG merged commit ebea7d4 into development Nov 1, 2026
7 checks passed
@iAmGiG
iAmGiG deleted the research/partial-exits-584 branch November 1, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant