PEN-STOCK-001 — Phase 11b stock scaled-exit¶
| Field | Value |
|---|---|
| Strategy ID | PEN-STOCK-001 |
| Status | active |
| Parent ID | (none) |
| Asset | Stock |
| Created | 2026-05-11 |
| First test | PEN-TEST-004 |
| Spec source | Pennant/tests/2026-05-11_PEN-TEST-004/backtest.py (module docstring + constants, lines 1–44) |
Mechanics¶
| Parameter | Value |
|---|---|
| Starting cash | $10,000 |
| Position size | $500 nominal per trade (fixed dollar; fractional shares allowed) |
| Entry | Anchor close (event_date close) + 5 bp slippage |
| Leg 1 exit | Sell half when close ≥ entry × 1.15 |
| Leg 2 exit (trail) | Trail the remaining half at 3 % from highest close since entry, only active after Leg 1 fires |
| Hard stop | Exit remaining position if close ≤ entry × 0.93 |
| Time stop | Exit remaining position at close of trading day 30 |
| Regime gate | Skip entries on days where SPY < SPY 200-SMA and VIX > 35 (240 such days in the 2007–2026 calendar) |
| Friction | $0.50 commission per fill; –5 bp slippage on sell fills |
| Concurrency | No explicit cap — limited only by available cash |
| Idle cash | Held un-invested (no SPY overlay) |
| Same-day candidates | Taken in chronological order; if cash on the entry date is < $500, candidate is skipped (no_cash), not back-filled |
Cohort consumption¶
The strategy is cohort-agnostic. It runs against any
<cohort>/events.parquet and applies the mechanics above to every
event in chronological order. The five Phase 11a/11a-2/11a-3 cohorts
(DET-BASELINE, DET-V1, DET-V2, DET-V3, DET-V4) were all run under
this spec in PEN-TEST-004.
Headline results — PEN-TEST-004 (2026-05-11)¶
Run 2007-02-15 → 2026-05-11 against all five Phase 11 cohorts:
| Cohort | Final equity | Total return | CAGR | Max DD | Sharpe | Trades | Skipped no-cash | Win rate |
|---|---|---|---|---|---|---|---|---|
| DET-BASELINE | $40,398 | +304 % | 7.50 % | −38.1 % | 0.543 | 8,842 | 6,573 | 43.7 % |
| DET-V1 | $30,858 | +209 % | 6.01 % | −20.4 % | 0.609 | 4,533 | 591 | 45.1 % |
| DET-V2 | $35,651 | +257 % | 6.80 % | −21.4 % | 0.617 | 6,108 | 1,272 | 44.7 % |
| DET-V3 | $31,240 | +212 % | 6.08 % | −32.3 % | 0.547 | 5,200 | 1,070 | 45.0 % |
| DET-V4 | $28,615 | +186 % | 5.59 % | −21.2 % | 0.580 | 4,101 | 511 | 45.4 % |
Discrepancies and notes¶
- Friction model is light — $0.50 commission + 5 bp slippage is closer to a long-term retail estimate than to a strict execution audit. The Phase 11b report does not include a friction sensitivity sweep.
- No options overlay — this is the stock-only baseline. The
options scaled exit on the same anchor cohort (Phase 2,
build_v1/scripts/run_options_backtest.py, reported +118.9 % over 10 years) is a separate strategy lineage and would get aPEN-OPT-NNNID if rerun under this harness. - Cohort dependency — the headline depends on which cohort is consumed. PEN-TEST-004 ran the strategy against five cohorts in parallel to isolate the detection-vs-strategy effect; the baseline strategy mechanics themselves are unchanged.
Reproducer¶
cd /home/kungfujones/Projects/Uriel/Pennant
python tests/2026-05-11_PEN-TEST-004/backtest.py
The script reads cohort events from the location embedded in its
SCENARIOS dict (currently relative to its own directory) and
writes outputs to that same directory.
Spec lock¶
This spec is locked as of 2026-05-11. Any change to the mechanics above — different sizing, different exit thresholds, options overlay, %-equity sizing — requires a new strategy ID, not an update to this file.