Task #5 v1.1 Production Spec Snapshot
Locked Config
- Strict M-filter: HS300 close > MA50 and MA50 > MA200.
- Industry cap: Shenwan level-1 industry <= 30% NAV.
- Execution friction: 50 bp buy slippage + 50 bp sell slippage + 10 bp one-way trading cost.
- Limit handling: skip limit-up entries; stress variant also skips near-limit-up entries >= 98.5% of limit-up.
- Positioning: 8% entry weight, max 12 holdings, 15% winner trim.
- Entry upgrade: **B3 only**. RPS dual window rule requires both RPS250 > 80 and RPS125 > 80.
Sell Rules
Layer 1: Single-name three-axis exit
1. **Trend break**
- close < MA50 and holding drawdown worse than -12%
- or close < MA200
- or Minervini trend template score <= 5
2. **ATR stop**
- initial stop = entry_price - 2.5 * ATR20
3. **Fundamental disproof**
- latest strict EPS yoy < 0
Layer 2: Profit protection
- +20% unrealized: stop to breakeven
- +50% unrealized: stop to MA50
- +100% unrealized: stop to MA100 and trail
Layer 3: Portfolio risk control
- Monthly portfolio MDD worse than -10%: cut to 70%
- Monthly portfolio MDD worse than -15%: cut to 40%
- Monthly portfolio MDD worse than -20%: go to cash
- HS300 below MA50: no new entries, existing positions maintained
- Emergency M-filter off: HS300 monthly drop worse than -12% -> cut to 30%
Rejected Overlays
- O'Neil sell-rule pack S1-S6: all individual A/B tests failed; not included.
Reference Metrics
- v1 production baseline: FULL Sharpe 0.6780 / MDD -24.41%
- B3 only (per-rule A/B): FULL Sharpe 0.7164 / MDD -23.42%
Interpretation
- B3 is the only buy-side single rule that improved the frontier under the current lock rule.
- Sell-side O'Neil overlays were negative results and remain archived only.
- The published code/spec should be treated as v1.1 once the baseline recompute is regenerated from the locked settings above.