Skip to content

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 a PEN-OPT-NNN ID 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.